web-dev-qa-db-ja.com

多くのホストを「yumupdate」/「aptitudesafe-upgrade」する方法は?

Puppetに関する本が2冊ありますが、プッシュする方法については言及されていませんyum updateまたはaptitude safe-upgrade

ですから、パペットには信じられないような印象を受けています。

質問

どのようにプッシュしますかyum updateまたはaptitude safe-upgrade毎月多くの異なるホストで?

6
Sandra

Puppetは、実際には単なる構成管理ユーティリティであり、自動化ツールではありません。適切な自動化が必要な場合は、サードパーティのツールとして始まり、現在はpuppetlabsの傘下にあるmcollectiveを検討する必要があります。 mcollectiveを使用したことがないので、これをどれだけうまく処理できるかについては実際には言えませんが、定期的に繰り返されるタスクを実行しようとするとうまく機能しない任意のタスク実行メカニズムとして最適に機能することを理解しています。 。

これを行う最善の方法は、更新するスクリプトとプロセスを開発してから、puppetを使用して構成をプッシュすることだと思います。したがって、次の質問を自問してください。

  1. マシンをどのくらいの頻度で更新しますか?
  2. 新しいカーネルがインストールされたときに自動的に再起動するのですか、それとも通知だけが必要ですか?
  3. 更新中に特別なコマンドを実行する必要がありますか?
  4. 更新をずらすのに十分なシステムがありますか?

構成を構築し、それらの質問に答え始めると、特定の環境から得られるものがさらに見つかる可能性があります。特定の例として、私がしていることはこれです:

  • 私のシステムのほとんどでは、更新はcronジョブを介して週に1回行われます。目的と環境に応じて、一部のシステムははるかに頻繁に使用されます。
  • ほとんどのシステムは自動的に再起動し、特定のシステム(目的に応じて)は再起動のリマインダーを電子メールで送信します。これは、/boot内のバージョン番号が最も大きいvmlinuzファイルをuname -rの出力と照合するcronジョブによって処理されます。
  • RHEL 5.3-> 5.4からのglibcの更新によって焼き付けられた後、yum、次にglibc、その他すべてを必ず更新します。
  • これはすべてcronジョブによって実行されるため、各yumの実行の間にランダムな時間でスリープします。各ホストの完了には5分から45分かかる場合があります。これにより、負荷が分散されます。

これはすべて、/etc/cron.dに保存されている2つのcronエントリ(更新とカーネルチェック)と更新スクリプトの2つのファイルに含まれています。これは、コマンドライン引数を使用して更新またはカーネルチェックを実行し、再起動するかどうかを決定する、ますます乱雑に見えるシェルスクリプトを使用して行っています。次に、Puppetはこれら2つのファイルを管理します。 rpmベースとdpkgベースの両方のシステムを扱っているので、おそらく2つのスクリプトを作成するか、2つのフレーバーに対して別々のdo_update関数を作成し、それぞれを異なるコマンドラインスイッチで呼び出します。次に、ファイル宣言のoperatingsystemファクトを確認して適切なスクリプトをプッシュするか、cronエントリをテンプレート化し、同じファクトを使用して使用するスイッチを決定します。

十分にテストされたスクリプトを使用すると、この方法は非常にうまく機能しました。実際、このセットアップは数百のシステムを処理するために数年間正常に使用されてきました。カーネルパッケージャがファイルにマイナーバージョンのレベルをどんどん追加し始め、比較ルーチンがチョークするときに、問題が発生することがあります。

12
Scott Pack

Puppet自体はこの仕事のためのツールではありません。 Puppetlabsには、Capistrano、Fabric、Funcに似たMCollectiveと呼ばれる別のツールがあります。

Packages Agent と呼ばれるMColleciveエージェントがあります。これは、他のタイプのパッケージ管理の中でも、yum更新を実行できます。

インフラストラクチャの一部がUbuntuを実行しているとおっしゃいました。おそらく、 nattended-upgrades パッケージを調べる必要があります。

8

ホストが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を検索する必要があるかもしれません。

5
Red Tux

cluster-sshを使用して、複数のホストに同時に接続し、それらすべてに対して同じコマンドを実行することもできます。あなたもそれをスクリプト化できると確信しています。

Sudo yum install clustersh

次に、コマンドラインまたはGUIから実行し、作業する必要のあるすべてのホストを追加します。完了したら、ウィンドウから任意のコマンドを実行でき、デバイスで実行されます。

1
poolski

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サーバーの束で私に起こりました)。

0
maxadamo