1
通知服務,我已經創建木偶 - 中定義的資源
2個定義的資源下載的應用程序,並將其設置爲服務
的服務
我想要1在2之前運行,因爲1會創建2創建配置文件的目錄。
但我還需要的是,如果配置文件更新,它應該通知1中的服務進行刷新。這是我遇到問題的地方,因爲我似乎無法訪問該服務。
這裏是我使用的示例代碼:
class start {
resource::run_service{'start'}
->
resource::conf:service_conf{'conf'}
}
define resource::run_service {
# Does some things
service { 'main':
ensure => 'running',
enable => true
}
}
define resource::conf::service_conf {
file { 'file.config':
ensure => file,
path => '/some/path/',
owner => 'user',
group => 'group',
mode => 0600,
content => template('templates/templatefile.erb'),
notify => Resource::Run_service::Service['main'], # What is the proper way to do this?
}
}
這是我從木偶出現錯誤:
錯誤:服務器錯誤400:無法檢索從遠程服務器的目錄:無效的關係:因爲Resource :: Run_service :: Service ['main']似乎不在目錄
我可以這樣做:
notify => Resource::Run_service['main'],
但它給了我一個依賴週期。
有沒有一種方法可以刷新服務?
儘管「您從沒有參數的定義資源類型中不能獲得真正的附加價值」是真實的,因爲它適用於OP問題的細節,但作爲一般規則並不正確。每個定義的類型實例都有一個內部可訪問的'$ title'(也可以作爲'$ name'訪問),並且它的使用可以使該類型提供附加值(因爲可以有效聲明多個實例)。實際上,我甚至會說,它主要是使用'$ title',而不是參數的存在或缺失,它決定了一個定義的類型是否提供附加價值。 –
@JohnBollinger好點。讓我更新我的重點。 –
你對錯字是正確的,我已經修復了OP。資源是在他們自己的清單中,我只是格式化它,所以它更容易閱讀。 看起來像我不知道的主要事情是本地資源沒有名稱空間。我認爲我在發佈我的問題之前沒有使用命名空間嘗試它,但是我這樣做時可能沒有大寫「Service」,因爲它沒有工作。 無論如何,我已經接受你的答案。謝謝。 –