解決策 1:
免責事項:私は Puppet の開発者の 1 人です。
明らかな方法は、概念を適用することです。開発/テスト/本番のサイクルを定義し、それらを介して変更をプッシュします。バージョン管理を使用してシステムを追跡します。
手短に言えば、その道をたどり始めると、それらを自動化するツールが本当に必要であることがわかります。基本的には、システム管理を自動化したいので、それらの手法をマシンで使用するのではなく、システムで使用します。マシンを管理します。
Chef、Puppet、Salt、CFEngine などのツールはすべて、その 2 番目のニーズに対応するための一般的なツールです。これらは、システム管理を、バージョン管理とテストが可能な中央ソリューションに変えるという一般的な方向性で機能します。
DevOps の動きは、これを行う方法に関するもう 1 つの優れた情報源です。教訓は、開発者と運用スタッフ間のより良い協力関係ですが、これと同じ方向性にも傾いています。
解決策 2:
短い答えは、「OS 展開管理」、「構成管理」、および「ソフトウェア パッケージング」です。長い答えが続きます。
Daniel Pittman の返信に、システム管理における「システム」を構成するものの内訳を追加したいと思います。
システムまたは環境は次のもので構成されます:
- サーバー
- オペレーティング システム
- 構成
- ベンダー パッケージ。そして
- ローカル パッケージ
これらを包み込むのは次のようなプロセスです:
- OS の導入またはイメージング
- 構成管理
- ソフトウェア パッケージの管理
- 監査/ログ
- モニタリング
- バックアップ
そして、これらを組み合わせて、次のような非機能的な目標の達成を支援したいと考えています:
- 再現性
- 保守性
- 測定可能性
- パフォーマンス
- 追跡可能性
- テスト容易性
- 可変性
これはクイックブレインダンプです。すべてのリストにさらに追加できると確信しています.
あなたの質問は、特定の言葉を使わずにこれらの多くに触れています。たとえば、簡単に展開して元に戻すことができるようにしたい、つまり保守性が必要です。テスト環境で実行し、合格するまでテストします。つまり、再現性、テスト容易性、測定可能性です。 OS と構成の展開の再現性が必要なため、vm イメージをバージョン管理に入れることを考えています。
これを支援するためのツールはたくさんありますが、そのうちのいくつかは Daniel によって言及されています。その他:
- 既知の OS 環境をデプロイするためのキックスタート (RedHat ベース)、Preseed (Debian ベース)、WDS (MS Windows)
- 設定とパッケージ管理のための Spacewalk/Satellite (RedHat ベース)、グループ ポリシー (MS Windows)
- パッケージを生成、デプロイ、アップグレード、削除するための YUM および APT パッケージ システム (ソフトウェアを構成するバイナリ、データ、構成のセット)
- 監視用の Nagios、OpenNMS、SCOM
- バックアップ用の Amanda、Bacula、Windows Backup Server
- パフォーマンス監視用の Munin、PCP、および Hyperic
- バージョン管理用の CVS、SVN、GIT、または Bazaar
- ビルド管理のための Hudson と Jenkins
- テスト用の Selenium とロボット
- 記録、コミュニケーション、追跡のための Bugzilla、Request Tracker、Jira
繰り返しますが、これは包括的なリストではありませんが、私を導くために頭の中に置いているものであり、うまくいけばあなたにも役立つでしょう.