puppet: 設定ファイルの変更後にサービスを強制的に再起動する

puppet: 設定ファイルの変更後にサービスを強制的に再起動する

新しいバージョンの構成ファイルがマスター リポジトリから管理対象サーバーの 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
}

関連情報