我如何確保如果透過木偶從主儲存庫將新版本的設定檔下載到託管伺服器之一,相關服務將重新啟動。
典型場景 - 假設有新的 munin 或 apache 設定。木偶客戶端發現它,覆蓋本地文件......並且...... - 如何確保服務重新啟動/重新加載?
多謝!
答案1
通知的另一種選擇是訂閱:
file { "/etc/sshd_config":
source => "....",
}
service { sshd:
ensure => running,
subscribe => File["/etc/sshd_config"],
}
不同之處在於關係是從另一端描述的。例如,您可以讓 apache 訂閱 /etc/apache/httpd.conf,但您可以建立虛擬主機檔案來通知 apache,因為您的 apache 類別不會知道您擁有的每個虛擬主機。
類似的雙端情況也適用於 require 和 before。這只是在特定情況下哪種更有意義的問題。
正如 Chad 所提到的,如果您發現 puppet 不斷嘗試啟動服務,那麼您需要新增一個模式參數,它是一個針對進程清單應用的正規表示式。預設情況下,puppet 會停止並開始重新啟動服務。如果新增“hasrestart => true”,那麼它將使用“restart”參數中指定的命令來重新啟動服務。
答案2
看來我發現了一些東西:
file { "/etc/sshd_config":
source => "....",
notify => Service[sshd]
}
service { sshd:
ensure => running
}
我們將看看這將如何運作。無論如何,歡迎您對此主題的想法。
答案3
(我知道這是一個非常古老的問題,但只是想我應該用一種(在我看來)更簡單的方法來投入我的兩分錢)
也可以隨意使用箭頭表示法:
file { "/etc/sshd_config":
source => "....",
} ~>
service { sshd:
ensure => running
}
或者
File['/etc/sshd_config'] ~> Service['sshd']
答案4
有多種等效符號:
通知:
file { '/etc/sshd_config':
notify => Service[sshd],
}
service { sshd:
ensure => running
}
訂閱:
file { '/etc/sshd_config':
...
}
service { sshd:
ensure => running,
subscribe => File['/etc/sshd_config'],
}
箭頭表示法:
File['/etc/sshd_config'] ~> Service['sshd']
連結聲明
file { '/etc/sshd_config':
...
}
~> service { sshd:
ensure => running,
}
如果您想觸發reload
而不是restart
,請調整服務聲明:
service { sshd:
ensure => running,
restart => 'pkill -HUP sshd', # if service support such reload
}