私はRed Hatを含むサーバーセットと永久に開発されている内部ソフトウェア(構成などを含む多くのファイルで構成されています)を持っています。
サーバーの種類はさまざまです。
- 開発する
- テスト
- 事後テスト
- 生産
カテゴリごとに最大10台のサーバーがありますが、各サーバーは独立して機能し、他のサーバーに依存しません。さらに、各ストリームには、cvsリポジトリにタグ付けされた小さなSubversionがあります。したがって、すべてのテストサーバー用のTesting.rpmとすべての本番用にprod.rpmを構築することはできません。
とにかくこれを行ういくつかの方法を見ることができます。
- 独自のrpmリポジトリを作成し、各サーバータイプとその下位バージョンのrpmパッケージセットを自動的にビルドし、cronを使用してパッケージを更新します。
- これを行うには、各サーバーで独自の構成を含むシェルスクリプトを使用します。
- 手動で更新してください:)
どちらが良いですか?それとも、すべて完全に間違っており、他の方法はありますか? :)
答え1
考慮すべきさまざまなことがあります。
- Jenkins、Buildbotなどの継続的な統合ソフトウェアを使用してソフトウェアを構築し始めます。
- ステージ用の専用リポジトリの作成 - あなたの意見によれば、少なくとも開発フェーズの展開、CIツールによるテストフェーズ、および自動化されたアップデートによる後続フェーズに役立ちます。
- 次のようなものを使用してください宇宙遊泳または、無人アップグレードまたは同様のツールを使用してシステムを最新の状態に保ちます。手動cronスクリプトを使用したり、システムにログインしないでください。 Spacewalkの代わりにpuppetを使用して、最新バージョンのパッケージがインストールされていることを確認することもできます。
- 構成とパッケージの仕様については、puppet/chef/... を使用してください。たとえば、puppetを使用して最新のパッケージバージョンをインストールするように指定したり、すべてのテストサーバーに特定のリポジトリを追加したりすることができます。
最も重要なことは、可能な限りすべてを自動化することです。 puppetやChefなどの構成管理システムを使用する必要があります。これにより、新しいシステムの展開が簡素化され自動化されます。たとえば、 puppet を一度だけ実行すると、サーバーは本番システムのように設定されます。