web-dev-qa-db-ja.com

puppet:構成ファイルが変更された後、サービスを強制的に再起動します

新しいバージョンの構成ファイルがパペットを介してマスターリポジトリから管理対象サーバーの1つにダウンロードされた場合、関連するサービスが再起動されることをどのように確認できますか?.

典型的なシナリオ-新しいmuninまたはApacheの設定があるとしましょう。パペットクライアントはそれを発見し、ローカルファイルを上書きします...そして...-サービスが確実に再起動/リロードされるようにする方法は?

どうもありがとう!

21
pQd

通知する代わりにサブスクライブする:

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」パラメーターで指定されたコマンドを使用してサービスを再起動します。

23
David Pashley

私は何かを見つけたようです:

file { "/etc/sshd_config":
    source => "....",
    notify => Service[sshd]
}

service { sshd:
    ensure => running
}

それがどのように機能するかを見ていきます。とにかく、あなたのテーマについてのあなたの考えは大歓迎です。

22
pQd

(私はこれが非常に古い質問であることを知っていますが、(私の意見では)はるかに簡単な方法で私の2セントを入れたと思っただけです)

矢印表記もご自由にお使いください。

file { "/etc/sshd_config":
  source => "....",
} ~>
service { sshd:
  ensure => running
}

または

File['/etc/sshd_config'] ~> Service['sshd']
2
Ethan Brouwer

これは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"]
            }

}
1
CMag

複数の同等の表記法があります:

通知

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
}
0
Tombart