内部ITインフラストラクチャに加えて、オンライン世界向けのサービスをホストする約500台のLinuxマシンがあります。それらは、データベースA-n、製品A-n、NFS、バックオフィスなどのクラスターの束にグループ化されます。さらに、弊社の仕様と要件に従って、外部プロバイダーによって管理されます。
ただし、(Web)ソフトウェアの開発、ロールアウト、および展開中に多くの問題に直面します。特に、開発環境とステージング環境には、ライブシステムとほとんど共通点がないためです(厄介な詳細は割愛します)。 。
したがって、私は仮想マシンを作成しようとし、さまざまなライブシステムをできるだけ正確にコピーして、それらに接続する準備をしました。開発者にとって透過的に「実際の」データベースの代わりに開発データベース(それらはroot
ではありません)。これはかなりうまくいきますが...
それらのシステムをリモートで管理するにはどうすればよいのか一括で?私が知らないソフトウェアファミリはありますか?または、少なくとも、知っておくべきいくつかのテクニックや原則はありますか?
すべての開発者に、ローカルで実行する一連のイメージ(VirtualBox)を提供します。 QA部門仮想クラスター(XENまたはHyper-V)を取得します。追加のサーバーモジュールを提供する必要がある場合、新しいデータベース接続を再ルーティングするか、パッケージマネージャーによって提供されるすべてを更新したい場合...すべてのシステムへのログオンを強制せずにそれを行う方法同僚にフィクスチャスクリプトをダウンロードして実行するように依頼しますか?
解決策はたくさんあると思います。まあ、どういうわけか私は検索エンジンに正しいキーワードを入力するにはあまりにも愚かです...またはこの問題はそれが聞こえるほど些細なことではありませんか?
記録のために:
それはあなたが正確に何を必要とし、何を探しているかによります。しかし、一般に、「 構成管理 には、次のような複数のソリューションがあります。
個人的には、大きなコミュニティと外部から提供されたレシピがたくさんある人形をお勧めします。これにより、システムを自動的に構成および管理できます。これを独自のリポジトリや自動更新と組み合わせると、 unattended-upgrades
システムを自動的に更新できます。
別の解決策は、必要なソフトウェアに自動的に依存し、システムを自動的に構成できるcompany-base
などの独自のパッケージを提供することです。
また、自動化された展開(ベアボーンおよび仮想化)も検討する必要があります。これを構成管理または独自のリポジトリと組み合わせると、システムを簡単に自動化して再インストールできます。自動インストールを開始したい場合は、 theforman を参照してください。これは、libvirtとベアボーンのインストールをサポートし、パペットのサポートを統合しています。自分で実行したい場合は、 kickstart (redhat et。al。)または「preseeding」を調べて、システムを自動的に構成できます。 Debianの場合、 debootstrap または grml-debootstrap という名前のラッパーを使用して、仮想化イメージをサポートすることもできます。
開発者にVirtualBoxイメージを提供するのに役立つ vagrant を見てください。これにより、VirtualBoxをサポートするシェフ、パペット、シェルスクリプトを使用して仮想化システムの作成を自動化し、仮想環境をカスタマイズできます。
既存のプロバイダーによるソリューションを使用する場合は、プロバイダーがシステムをどのように管理しているかを尋ねる必要がありますが、おそらく何らかの構成管理になるでしょう。構成サーバーにアクセスできる場合は、システムでエージェントを実行できる可能性があります。
Googleキーワードについては、devops
、configuration management
、it automation
、およびserver orchestration
を調べてください。
要するに、可能な限り自動化し、手動で行うことさえ考えないでください。
Ulrichは、ソフトウェアの展開と自動サーバーセットアップに関する回答をすでに提供しています。
この背後にある原則は
大量のサーバーを管理するための便利なツールを求められました。私の個人的なお気に入りはcluster-ssh(cssh
)です。一度入力すると、多くのサーバーで同時に変更を行います。
問題を発見し、問題を解決する修正がある場合:
修正するために大量のサーバーに直面している場合、これは十分に文書化する必要があるプロセスであり、最後に別のチームが修正が完全に適用されているかどうかを確認する必要があります。
そのために、Mantis(オープンソース、PHP)を採用しています。
私は複数の国で約30の製品と数百のサーバーを管理しています。私はソフトウェア構成マネージャーなので、(設計により)ルートアクセスがなく、データベースやそのサーバーに(設計により)触れないでください。また、企業のセキュリティのために多くのフープにジャンプする必要があります。ただし、データベースリンクや変更を含め、テスト、ステージング、本番環境で構成を管理しています。 ssh
、python
とシェルスクリプトの組み合わせを使用してサーバーに送信する多数のスクリプトがあります。
考えるべき主なことは次のとおりです。
ssh
で十分で、中央の安全な場所からですか?ssh
などを介してプログラムをストリーミングする必要がありますか? expect
またはコマンドライン呼び出しだけでスクリプトを作成できますか?VirtualBoxには、Ulrichが言及しているように、ssh
またはpuppet
のようなシステムだけで管理できるコマンドラインツールが多数用意されています。