新しいバージョンの構成ファイルがパペットを介してマスターリポジトリから管理対象サーバーの1つにダウンロードされた場合、関連するサービスが再起動されることをどのように確認できますか?.
典型的なシナリオ-新しいmuninまたはApacheの設定があるとしましょう。パペットクライアントはそれを発見し、ローカルファイルを上書きします...そして...-サービスが確実に再起動/リロードされるようにする方法は?
どうもありがとう!
通知する代わりにサブスクライブする:
file { "/etc/sshd_config":
source => "....",
}
service { sshd:
ensure => running,
subscribe => File["/etc/sshd_config"],
}
違いは、関係が反対側から記述されることです。たとえば、Apacheクラスに/etc/Apache/httpd.confをサブスクライブさせても、Apacheクラスがすべてのvhostを認識しないため、vhostファイルにApacheに通知させることができます。
同様のデュアルエンドの状況がrequireおよびbeforeに適用されます。特定の状況でどちらがより意味があるかは問題です。
チャドが述べたように、パペットが常にサービスを開始しようとしているのを見つけた場合は、プロセスのリストに対して適用する正規表現であるパターンパラメーターを追加する必要があります。デフォルトでは、puppetはサービスを停止してから再開します。 「hasrestart => true」を追加すると、「restart」パラメーターで指定されたコマンドを使用してサービスを再起動します。
私は何かを見つけたようです:
file { "/etc/sshd_config":
source => "....",
notify => Service[sshd]
}
service { sshd:
ensure => running
}
それがどのように機能するかを見ていきます。とにかく、あなたのテーマについてのあなたの考えは大歓迎です。
(私はこれが非常に古い質問であることを知っていますが、(私の意見では)はるかに簡単な方法で私の2セントを入れたと思っただけです)
矢印表記もご自由にお使いください。
file { "/etc/sshd_config":
source => "....",
} ~>
service { sshd:
ensure => running
}
または
File['/etc/sshd_config'] ~> Service['sshd']
これはSolaris 10で機能します:)
class Sun_cron_root {
file { "/var/spool/cron/crontabs/root" :
source => "puppet:///files/cron/Sun/sun_cron_root"
}
service {
"cron":
provider => "smf",
ensure => running,
enable => true,
hasrestart => true,
subscribe => File["/var/spool/cron/crontabs/root"]
}
}
複数の同等の表記法があります:
通知:
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
}