私は人形を使って約30台のUbuntuサーバーを管理しています。パッケージを最新の状態に保つためのアプローチとしてcron-aptとapticronへの多くの参照を見てきましたが、プロセスを集中管理する方法を見つけることができませんでした。 cront-apt/apticronを使用しても、各ホストにログインし、aptitude update
を実行して更新を実行する必要があります。コアパッケージが更新されるたびに、30台すべてのマシンからのレビュー通知は言うまでもありません。
もっと良い方法があるはずです。助言がありますか?
Landscape に興味があるかもしれません。これは、大規模なUbuntuデプロイメントを管理するための「公式の」管理ツールであり、Canonicalはおそらく、その使用に費用をかけることに非常に熱心です。
再編集:
まず、免責事項。私はDebianまたはUbuntuでミラーリングを使用していないため、ソフトウェアに慣れていません。
第二に、apt-mirrorは "重すぎる"解決策になると思われます。元々の考えは、更新プログラムを展開するために別のテストマシン(またはテスト環境、おそらく仮想マシン?)を用意することでした。更新のパフォーマンスに満足したら、パッケージを「展開」ミラーにプルまたは配置します(公式ソースからのローカルミラーと、展開する更新のみのセカンダリミラーがあります)。次に、リモートマシンは事前設定された時間に更新を実行し、「展開」ミラーから各マシンにそれをプルします。cronジョブは以下で構成されます。
apt-get update && apt-get upgrade --quiet --assume-yes
残念ながら、詳細を読み始めたとき、apt-mirror
は、目的のパッケージだけでなく、あらゆる種類のものをプルします。したがって、この概念にはいくつかのメリットがありますが、このアイデアは放棄します。
同僚が発見し、「端末ベースのリモートパッケージアップデートマネージャ」であるapt-daterを簡単に調べました。
Cursesベースのインターフェースを使用して、すべてのホストまたはホストのグループなどの更新を管理します。発生する可能性のあるエラーなど、完全なaptセッションのロギングをサポートします。
管理対象マシンのsshとSudoに依存します。
参照してください http://www.ibh.de/apt-dater/
自分で使用したことがないので、それを保証することはできませんが、あなたが探しているものに近く聞こえます。
すでにPuppetを使用しているため、これを行う最も簡単な方法(および変更管理/追跡の目的に最適)は、puppetマニフェストにインストールするパッケージの目的のバージョンを指定することです。あなたはセキュリティアナウンスメントリストに目を光らせ続け、そしてあなたが使用するものが出てきたら、Puppetを「このパッケージのこの新しいバージョンをインストールする」と言うように更新するだけです。マニフェストでリビジョンコントロールを使用しているとすると、「ポリシー」がいつ変更されたかがわかり、Puppetのレポートには、変更が実際にいつ行われたかが正確に示されます(これにより、後のログイベントと簡単に関連付けることができます)。
Clusterssh(apt-get install clusterssh)を見てください。
$ cssh server1 server2 server3 ...
以前に実際にそれについて考えていなかった場合、私の最初のアイデアは、特にテスト環境がすでにある場合は特に、averyが提案したものに似たものになるでしょう。
基本的に、自分のローカルリポジトリから自動的にアップグレードするように本番マシンを設定します。このリポジトリを更新するのは、テスト環境を実行するものの最新バージョンにアップグレードした後でのみです。
Apticronは適切にスケーリングされません。かなり小さな環境で実行されるように設計されていますが、いくつかの良い点があります。
時々前に私は同様の要件を満たすために低レベル/ダーティーオートメーション Fabric スクリプト(fabfile)を書きました、あなたはそれをチェックすることができます: