web-dev-qa-db-ja.com

puppetmasterとclientをコミット時にのみ実行し、1日1回実行します

Puppetは私のマシンのリソースを使い果たしており、残念ながら、マシン内の他のプロセスと一緒にマスターを実行する必要があります。

今、私はpuppetのデーモンとしての実行を常に停止する予定であり、代わりにそれを実行することを考えていました。

  1. パペット管理のマニフェストが変更されたとき。私のマニフェストはgitのリビジョン管理下にあります。おそらくポスト受信フックを介して。
  2. パペットを1日1回実行します。誰かがマシンの構成を変更する場合は、これを置き換える必要があります。たとえば、sshd_configは元の状態である必要があります。

誰かがそのような戦略に挑戦したことがありますか?
誰か助けてもらえますか?

2
Quintin Par

はい、これは行われました。

参照: パペット:特定の時間帯にのみ変更を許可しますか?

Gitのアプローチに関する限り、 おそらくこのリンクを見たことがあるでしょう

4
ewwhite

Puppetを通常どおりcronジョブに追加できますが(これにより、稼働時間中、または30分ごとよりも多いまたは少ない頻度でのみ実行するオプションが可能になります)、ソース管理のリビジョン番号を確認する短いスクリプトでラップします。インクリメントされました。もしそうなら、それはpuppetクライアントを起動します、そうでなければ、puppet(そしてそれが行うファイルの高価なハッシュのすべて)の必要はありません。

ただし、これは、ホストpuppetでファイルを変更した場合、次の構成が変更されるまでファイルを変更しないことを意味しますback。ラッパースクリプトのロジックを変更して、最後の実行から24時間以上経過している場合は、puppetクライアントも実行するようにすると、この問題を回避できます。

「マスターレス」パペットのアイデア(ewwhiteが言及した)は、パペットマスターをボトルネックとして削除し、それをgitに置き換えます。これは私の意見では非常に望ましいことです。 gitに変更を加えるよりも早く変更を加えない限り、それらの変更をすべてのホストにプッシュすることはできませんが、このボトルネックは問題になりません。問題が発生した場合は、「スポーク」をツリー形式で配置できます。それは数万のホストに拡張する必要があります。

4
Ladadadada