Linuxデプロイ/リモート管理

Linuxデプロイ/リモート管理

内部ITインフラストラクチャに加えて、オンラインサービスをホストする約500台のLinuxシステムがあります。これらは、Database An、Product An、NFS、Backofficeなどのクラスタセットにグループ化されています。また、当社の仕様および要件に応じて外部プロバイダーによって管理されます。

しかし、(Web)ソフトウェアの開発、ロールアウト、および展開中に多くの問題に遭遇しました。特に開発やステージング環境がライブシステムとほとんど共通点がなかったので(面倒な詳細は省略します。)

だから私はさまざまなライブシステムをできるだけ正確に複製し、開発者に透明な「実際の」データベースではなく開発データベースに接続する準備をする仮想マシンを作成しようとしていますroot。これはうまくいきますが...

これらのシステムをリモートで管理する方法を知りたいです。ほとんど?私が知らないソフトウェアスイートがありますか?それとも、少なくともいくつかの技術や原則に精通している必要がありますか?

各開発者にローカルで実行される複数のイメージ(VirtualBox)を提供します。品質保証では、仮想クラスタ(XENまたはHyper-V)を取得します。追加のサーバーモジュールをプロビジョニングする必要がある場合、または新しいデータベース接続を再ルーティングする必要がある場合、またはパッケージマネージャが提供するすべてのものを更新したい場合は、各システムに強制的にログインしたり、同僚にダウンロードすることなくこれをどのように実行できますか?事前に準備されたスクリプトを実行しますか?

私は多くの解決策があると確信しています。まあ、私はあまりにも愚かなので、検索エンジンに正しいキーワードを入力できないのでしょうか?

参考までに:

  • ほとんどすべてのシステムはDebian GNU / Linux 6.x "squeeze"を実行します。
  • どの開発者も自分のワークステーションで特定のオペレーティングシステムを使用するよう強制されません。
  • もちろん、予算は限られていますが、独自のソフトウェアを購入できないほど少なくありません。
  • 上記のプロバイダに関連する解決策が好ましい。

答え1

正確に何が必要か、何を探しているかによって異なります。しかし、通常、いくつかの解決策があります。構成管理良い:

  1. 人形
  2. シェフ
  3. CFエンジン
  4. アンシプール

パペットは大規模なコミュニティや外部から提供されるレシピが多いので、個人的におすすめしたいと思います。これにより、システムを自動的に構成および管理できます。これを独自のリポジトリと自動更新と組み合わせると、次のようになります。unattended-upgradesシステムを自動的に更新できます。

company-base別の解決策は、必要なソフトウェアに自動的に依存し、システムを自動的に構成できる独自のパッケージなどを提供することです。

また、自動化された展開(ベアボーンと仮想化)も調査する必要があります。これを構成管理または独自のリポジトリーと組み合わせることで、システムを簡単に自動化および再インストールできます。サイレントインストールを開始するには、次の点を確認してください。男のためlibvirtとベアメタルのインストールをサポートし、統合された人形サポートを備えています。自分でやりたい場合は、一度行ってみてください。始める (redhatなど)または「プリセット」を使用してシステムを自動的に設定します。 Debian の場合、次のようなものを使用することもできますブート防止プログラムまたは名前付きラッパーgrml-debootstrap仮想化されたイメージをサポートします。

開発者に VirtualBox イメージを提供するには、次の点を確認してください。徒歩旅行者VirtualBoxを使用して仮想化システムを自動的に作成し、Chef、Puppet、およびシェルスクリプトをサポートして仮想環境をカスタマイズできます。

既存のプロバイダのソリューションを使用するには、システムの管理方法を尋ねる必要がありますが、これは一種の構成管理である可能性が高いです。構成サーバーへのアクセス権がある場合、システムはそのエージェントを実行できます。

devopsGoogleキーワードについては、とを確認してくださいconfiguration managementit automationserver orchestration

簡単に言えば、できるだけ自動化し、作業を手動で行うことを考えないでください。

答え2

Ulrichは、ソフトウェアの展開と自動化されたサーバー設定に対する回答を提供しました。

これの背後にある原理

  • サーバーの外観と感触を定義します。これには、デフォルトでインストールされている汎用ソフトウェア、パーティションスキーム、およびファイルシステムのレイアウトが含まれます。
  • 本番、ステージング、テスト、および開発サーバーは、これらの基本的な基準の点で異なってはいけません。
  • 適切な変更管理を使用して、すべての構成の小さな行変更を含むすべての変更を文書化します。
  • 常にテスト段階で最初に変更し、次に開発段階で、次に準備段階で最後に本番段階で変更します。

多数のサーバーを管理するには便利なツールが必要です。私が個人的に好きなツールはCluster-Ssh(cssh)です。一度入力すると、複数のサーバーで同時に変更が可能です。

問題を見つけて解決するために修正する場合:

  1. 修正が機能する場合は、test/dev/staging/productionに修正を適用します(上記を参照)。
  2. 将来の仮想マシンのレプリケーションでこのエラーが発生しないように、仮想テンプレートに修正を適用してください。
  3. 実際のインストールプロセス(kickstart / autoyast /その他)に修正を適用します。
  4. すべてのサーバーに修正を適用する

パッチするサーバーの数が多い場合は、プロセスを詳細に文書化し、最後に他のチームでパッチが完全に適用されていることを確認する必要があります。

これを行うには、Mantis(オープンソース、PHP)を使用します。

答え3

私は多くの国で約30の製品と数百台のサーバーを管理しています。私はソフトウェア構成マネージャーなので、rootアクセス権がなく(設計上)、データベースやサーバーにアクセスせず(やはり設計上)、会社のセキュリティのために多くの困難を経験する必要があります。 。ただし、データベースへのリンクや変更など、テスト、準備、および運用構成を管理します。sshpythonシェルスクリプトの組み合わせを使用してサーバーに送信するスクリプトがたくさんあります。

考慮すべき主な事項は次のとおりです。

  1. サーバーとどのような対話ができますか?ただファイルアップロード?コマンドラインプログラムを実行しますか?リモートXクライアントを実行していますか?
  2. これらのサーバーにアクセスするにはどのレベルのセキュリティが必要ですか?ファイアウォール、セキュリティネットワーク、VPN?ssh適切で中央の安全な位置にありますか?
  3. 各サーバーでどのくらいの自動化を実行できますか?各サーバーにプログラムをインストールして実行できますか?または、sshリモートで実行するなどの方法でプログラムをストリーミングする必要がありますか?スクリプトを書くexpectか、コマンドラインから呼び出すことができますか?

sshVirtualBoxは、Ulrichが述べたシステムを介して管理できるさまざまなコマンドラインツールを提供します。puppet

答え4

過去数年間、スクリプトを使用して構成を構築する機能に焦点を当てた新しいミニマリストシステムのセットが登場しました。スクリプトフレームワークであるため、順序が必要な作業にうまくいく傾向があります。

ピンポラ

pyinfraは大規模なインフラストラクチャを超高速で自動化します。 Ad Hoc コマンドの実行、サービスのデプロイ、構成管理などに使用できます。

http://pyinfra.com/

誘導

簡単なオーケストレーションと構成管理

http://github.com/rollcat/judo

リセット(1) : pln(5)

すべてのスクリプト言語を使用したシステムの構成

http://scriptedconfiguration.org/

関連情報