Puppetに関する本が2冊ありますが、プッシュする方法については言及されていませんyum update
またはaptitude safe-upgrade
。
ですから、パペットには信じられないような印象を受けています。
質問
どのようにプッシュしますかyum update
またはaptitude safe-upgrade
毎月多くの異なるホストで?
Puppetは、実際には単なる構成管理ユーティリティであり、自動化ツールではありません。適切な自動化が必要な場合は、サードパーティのツールとして始まり、現在はpuppetlabsの傘下にあるmcollectiveを検討する必要があります。 mcollectiveを使用したことがないので、これをどれだけうまく処理できるかについては実際には言えませんが、定期的に繰り返されるタスクを実行しようとするとうまく機能しない任意のタスク実行メカニズムとして最適に機能することを理解しています。 。
これを行う最善の方法は、更新するスクリプトとプロセスを開発してから、puppetを使用して構成をプッシュすることだと思います。したがって、次の質問を自問してください。
構成を構築し、それらの質問に答え始めると、特定の環境から得られるものがさらに見つかる可能性があります。特定の例として、私がしていることはこれです:
/boot
内のバージョン番号が最も大きいvmlinuzファイルをuname -r
の出力と照合するcronジョブによって処理されます。これはすべて、/etc/cron.d
に保存されている2つのcronエントリ(更新とカーネルチェック)と更新スクリプトの2つのファイルに含まれています。これは、コマンドライン引数を使用して更新またはカーネルチェックを実行し、再起動するかどうかを決定する、ますます乱雑に見えるシェルスクリプトを使用して行っています。次に、Puppetはこれら2つのファイルを管理します。 rpmベースとdpkgベースの両方のシステムを扱っているので、おそらく2つのスクリプトを作成するか、2つのフレーバーに対して別々のdo_update
関数を作成し、それぞれを異なるコマンドラインスイッチで呼び出します。次に、ファイル宣言のoperatingsystem
ファクトを確認して適切なスクリプトをプッシュするか、cronエントリをテンプレート化し、同じファクトを使用して使用するスイッチを決定します。
十分にテストされたスクリプトを使用すると、この方法は非常にうまく機能しました。実際、このセットアップは数百のシステムを処理するために数年間正常に使用されてきました。カーネルパッケージャがファイルにマイナーバージョンのレベルをどんどん追加し始め、比較ルーチンがチョークするときに、問題が発生することがあります。
Puppet自体はこの仕事のためのツールではありません。 Puppetlabsには、Capistrano、Fabric、Funcに似たMCollectiveと呼ばれる別のツールがあります。
Packages Agent と呼ばれるMColleciveエージェントがあります。これは、他のタイプのパッケージ管理の中でも、yum更新を実行できます。
インフラストラクチャの一部がUbuntuを実行しているとおっしゃいました。おそらく、 nattended-upgrades パッケージを調べる必要があります。
ホストがRHELホストである場合は、 RHN Satellite を調べることをお勧めします。それ以外の場合 Spacewalk 一見の価値があるかもしれません**(下記の注を参照)。これらは、アップストリームパッケージリポジトリのローカルコピーを管理し、RHNサテライトサーバーに登録されたシステムの管理を容易にするように設計されています。パッケージが特定の時間に更新されるようにスケジュールすることができます。または、OSADを有効にしている場合は、RHN Satellite/Spacewalk WebGUIで更新を近い時間にスケジュールすることができます。
以下にpuppetを使用して投稿した人もいますが、PuppetをRHNSatelliteと統合する方法について書かれたブログやWebページがいくつかあります。
代わりに...
最終的にRHNSatelliteに取って代わる新しいプロジェクトに興味がある場合は、 Katello Project をご覧ください。 Katelloには、Red HatのCloudForms製品の一部であり、RHNSatelliteの最終的な置き換えのアップストリームであると言われている多くのプロジェクトが含まれています。実際、KatelloはForemanを使用してPuppetを統合しています。 Katelloを長期的に見ることは、Spacewalkを検討する価値があります(ただし、サブスクリプション/サポートのため、RHN Satelliteはまだ検討していません)。
**私の投稿では、物事を簡単にするために、RHNサテライトとスペースウォークの両方をRHNサテライトと呼んでいます。本当の違いは天気に関係します。RHELシステムを使用していない場合、サポートされている方法でRHNからダウンロードできるRHN衛星が必要な場合、SpacewalkはRHELまたはFedoraの再構築を使用するユーザー向けです(Spacewalkを理解しています) Debianもサポートしているかもしれませんが、私はこれについて個人的にはあまり知りません。)したがって、情報を検索するときは、SpacewalkやRHNSatelliteを検索する必要があるかもしれません。
cluster-sshを使用して、複数のホストに同時に接続し、それらすべてに対して同じコマンドを実行することもできます。あなたもそれをスクリプト化できると確信しています。
Sudo yum install clustersh
次に、コマンドラインまたはGUIから実行し、作業する必要のあるすべてのホストを追加します。完了したら、ウィンドウから任意のコマンドを実行でき、デバイスで実行されます。
Debian/Ubuntuシステムは次のように更新できます。
class { 'apt': update => { frequency => 'weekly', }, }
その後、upgrade
を実行するために、以下に示すのと同じトリックを適用できます。
CentOS/RedHatシステムの場合、execをダムファイルにサブスクライブできます。
exec { 'yum-update': command => '/usr/bin/yum -q -y update', refreshonly => true, subscribe => File['/some/dumb/file']; }
更新します/some/dumb/file
puppetで、yumの更新をトリガーします
無人で実行したくない場合は、Salt-stackを使用することをお勧めします。 salt-minionは更新中に自分自身を更新しないことに注意してください。 ZeroMQは突然接続を閉じ、更新は中断され、パッケージDBを再構築する必要があります(Debianサーバーの束で私に起こりました)。