2015-11-05 64 views
0

我對傀儡很新,而且我一直在關注如何用參數通知一個類。我想通知類,我發現,它運行更新的rc.d與參數:木偶 - 通知一個參數類

define myclass::update-rc { 
    exec { "update-rc_${title}": 
     command => "update-rc.d ${title} defaults", 
     cwd => "/tmp", 
     path => "/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:", 
     refreshonly => true 
    } 
} 

和類,我想從通知它:

class mysecondclass { 
    file { '/etc/init.d/myscript': 
     ensure => file, 
     notify => Class['myclass::update-rc { "myscript": } '] 
    } 
} 

它失敗與錯誤:

Could not find dependent Exec[Myclass::update-rc { "myscript": } ] ...

它的工作,如果我只是把myclass::update-rc { "myscript": }在這樣的類:

class mysecondclass { 
    file { '/etc/init.d/myscript': 
     ensure => file, 
    } 

    myclass::update-rc { "myscript": } 
} 

但我有點想通知它......有沒有辦法實現這一目標?

+0

你試圖調用定義爲一類,它是不是一個類。它看起來只會有一個實例,所以將它改爲一個類。 – 123

+1

爲什麼不將文件放在/etc/init.d中,然後使用服務資源而不是定義的類型進行管理? 'service {'name_of_service':enable => true}'應該處理我認爲的'update-rc.d'命令。 – ptierno

回答

2

您可以通知類別中的幾種方式木偶:

隨着認購,你將需要更新從內部更新EXEC -rc定義:

exec { "update-rc_${title}": 
    command  => "update-rc.d ${title} defaults", 
    cwd   => "/tmp", 
    path  => "/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:", 
    refreshonly => true, 
    subscribe => File['/etc/init.d/myscript'], 
} 

隨着通知您需要更新文件的資源:

myclass::update-rc { "myscript": } 

file { '/etc/init.d/myscript': 
    ensure => file, 
    notify => Myclass::Update-rc["myscript"] 
} 

這等同,但使用鏈接箭頭:

file { '/etc/init.d/myscript': 
    ensure => file, 
} ~> 
myclass::update-rc { "myscript": } 

注重它的存在波浪線,而不是一個正常的箭頭。

此外,你應該從更新-RC更新定義名稱update_rc:https://docs.puppetlabs.com/puppet/latest/reference/lang_reserved.html#classes-and-defined-types

+0

我希望能夠單獨離開update-rc類,並在需要時調用它(或者在這種情況下,通知它)...您的解決方案不考慮只設置$ {title}當myclsss :: update-rc以我在問題底部顯示的方式調用時... –

+0

O,對不起,我沒注意到你使用$ title。我會更新我的答案 – cristi

+0

是啊,我仍然不認爲你明白我的意思大聲笑...如果我把'myclass :: update-rc.d {'myscript':}'放入'mysecondclass'中,它會運行'update -rc.d myscript defaults' ...我想用'notify =>'來做到這一點......我不想更改'myclass :: update-rc.d',因爲我想要它可重複使用。 –