
新しいバージョンの構成ファイルがマスター リポジトリから管理対象サーバーの 1 つに Puppet 経由でダウンロードされた場合に、関連するサービスが再起動されることを保証するにはどうすればよいですか。
典型的なシナリオ - 新しい munin または apache 構成があるとします。puppet クライアントがそれを検出し、ローカル ファイルを上書きします...そして... - サービスが再起動/再ロードされるようにするにはどうすればよいですか?
どうもありがとう!
答え1
通知の代わりにサブスクライブすることもできます。
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 にも当てはまります。特定の状況でどちらがより意味をなすかという問題だけです。
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
}