Linux一括/リモート管理


10

社内のITインフラストラクチャのほかに、オンラインの世界向けのサービスをホストする約500台のLinuxマシンがあります。それらは、データベースAn、製品An、NFS、バックオフィスなどのクラスターのグループにグループ化されています。さらに、仕様と要件に従って、外部プロバイダーによって管理されます。

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

したがって、私は仮想マシンを作成し、さまざまなライブシステムをできるだけ正確にコピーして、開発者に対して透過的に「実際の」データベースではなく開発データベースに接続する準備をしました(実際にはそうではありませんroot)。これはかなりうまくいきますが...

これらのシステムをリモートで一括して管理するにはどうすればよいのでしょうか。知らないソフトウェアファミリはありますか?または、少なくとも、知っておくべきテクニックや原則はありますか?

私たちはすべての開発者にローカルで実行されるたくさんの画像(VirtualBox)を提供します。QA部門。仮想クラスター(XENまたはHyper-V)を取得します。追加のサーバーモジュールを提供する必要がある場合、新しいデータベース接続を再ルーティングするか、パッケージマネージャーによって提供されるすべてを更新したい場合...すべてのシステムへのログオンを強制せずにそれを行う方法同僚にフィクスチャスクリプトをダウンロードして実行するように依頼しますか?

解決策はたくさんあると思います。まあ、どういうわけか私は愚かすぎて正しいキーワードを検索エンジンに入力できません...それとも、この問題は思ったほど簡単ではありませんか?

記録のために:

  • ほとんどすべてのシステムでDebian GNU / Linux 6.x "squeeze"が実行されています
  • ワークステーションで特定のOSの使用を強制される開発者はいません
  • もちろん、予算は限られていますが、独自のソフトウェアを購入するには小さすぎます
  • 前述のプロバイダーを含むソリューションが推奨されます

回答:


15

それはあなたが正確に何を必要としているのか、そしてあなたが何を探しているのかに依存します。しかし、一般的には、次のような構成管理のための複数のソリューションが存在します

  1. 傀儡
  2. シェフ
  3. cfengine
  4. ansible

など。私は個人的に人形をお勧めします。それは大きなコミュニティと外部から提供されるレシピがたくさんあるからです。これにより、システムを自動的に構成および管理できます。これを独自のリポジトリや自動更新などと組み合わせるとunattended-upgrades、システムを自動的に更新できます。

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

また、自動デプロイメント(ベアボーンおよび仮想化)についても検討する必要があります。これを構成管理または独自のリポジトリと組み合わせると、システムを簡単に自動化して再インストールできます。自動インストールを開始したい場合は、libvirtおよびベアボーンインストールをサポートし、パペットサポートが統合されているtheformanご覧ください。自分で実行したい場合は、キックスタート (redhatなど)または「事前シード」を調べて、システムを自動的に構成できます。Debianの場合、仮想化イメージをサポートするdebootstrapまたはgrml-debootstrapという名前のラッパーのようなものを使用することもできます。

あなたの開発者のためのVirtualBoxの画像を提供支援するために見てい浮浪者、それはあなたがあなたの仮想環境をカスタマイズするためにVirtualBoxのサポートシェフ、人形やシェルスクリプトによる仮想化システムの作成を自動化することを可能にします。

既存のプロバイダーによるソリューションを使用する場合は、システムをどのように管理するかを彼らに尋ねる必要がありますが、おそらく何らかの構成管理になるでしょう。構成サーバーにアクセスできる場合は、システムでエージェントを実行できる可能性があります。

Googleのキーワードに見てdevopsconfiguration managementit automationserver orchestration

つまり、可能な限り自動化し、手動で作業することすら考えないでください。


1
ありがとうございました!読み通すのはたくさんありますが、かなり有望に見えます。
mjhennig

@mjhennig私もいくつかの情報を追加しました。展開。利用可能なリソースはたくさんありますが、最も重要なことは、ssh /分散シェルを介して自分で実際に何かを行うべきではなく、何らかのシステムがあることです。
Ulrich Dangel

2
特に利用可能なツールが目的に合わない場合は、自分で作業することに問題はありません。Puppetのようなシステムは、それ自体が主にシステム管理ツールであり、構成管理ではありません。私が使用するシステムの大部分は、中央サーバーからはアクセスできませんが、(何よりも)VPNを介してユーザーのラップトップからアクセスできます-これを3年間変更しようとしています。各地域が他の地域に適切にアクセスできないため、IT部門は地域ごとに分かれています。一部の状況では、独自に作成したスクリプトが必要です。そこからイノベーションが始まります。
Arcege

3
@Arcege私はあなたのコメントに賛成しました。スクリプトが必要です。インフラストラクチャ全体を一度に変換する必要はありません。最も重要な部分は、物事を自動化し、それを繰り返し可能にすることです。ただし、人形とシェフの説明的な性質にはいくつかのユニークな側面があります。たとえば、人形クラスをでテストおよび検証できますcucumber-puppet。もちろん、既存のコンポーネントを再利用して独自のフレームワークを開発/成長させることはできますが、OPには現在何もないようです。ゼロから始める場合は、既存のフレームワークを使用するのが最善だと思います。
Ulrich Dangel

はい、自動化された/繰り返し可能な操作に同意します。私は、Jenkins / Oc4jやSubversion / Bugzilla統合などの既存のシステム間のインターフェースとなる、自動化された、またはプッシュボタンの自家製スクリプトをいくつか持っています。私はあなたが「自分で何かをすべきではない」というあなたのコメントに(強く)同意しませんでした。私が説明したように、既存のフレームワークは適用できない場合があります。
Arcege

3

Ulrichは、ソフトウェアの展開と自動サーバーセットアップに関する回答をすでに提供しています。

この背後にある原則は

  • サーバーがどのように見えるかを定義します-これには、デフォルトでインストールされる一般的なソフトウェア、パーティション設定スキーム、ファイルシステムレイアウトが含まれます
  • 本番サーバー、ステージングサーバー、テストサーバー、および開発サーバーは、これらの基本的な標準に関して異なるものであってはなりません(そうでなければ、後で問題が発生します)。
  • 適切な変更管理を使用して、行ったすべての変更を文書化します(任意の構成での小さな1行の変更を含む)
  • 常に最初にテストで、次に開発で、次にステージングで、本番で最後に変更しますか

あなたは大量のサーバーを管理するための便利なツールを求めました-私の個人的なお気に入りはcluster-ssh(cssh)です。一度入力すると、多くのサーバーで同時に変更を行います。

問題を発見し、その問題を修正する修正があった場合:

  1. それが実際に機能する場合は、修正をTest / Dev / Staging / Prod(上記を参照)に適用します。
  2. 仮想テンプレートに修正を適用して、将来のVMクローンにそのバグが発生しないようにします
  3. 物理的なインストールプロセスに修正を適用します(kickstart / autoyast / whatever)
  4. すべてのサーバーに修正を適用する

大量のサーバーを修正する必要がある場合、これは十分に文書化する必要があるプロセスであり、最終的に別のチームが修正が完全に適用されているかどうかを確認する必要があります。

そのために、Mantis(オープンソース、PHP)を採用しています。


2

私は複数の国で約30の製品と数百のサーバーを管理しています。私はソフトウェア構成マネージャーなので、(設計上)ルートアクセスがなく、データベースやそのサーバーに(設計上も)触れないでください。また、企業のセキュリティのため、多くのフープにジャンプする必要があります。しかし、データベースリンクや変更を含め、テスト、ステージング、および運用で構成を管理しています。私はの組み合わせ使用してサーバーに出かけスクリプトの数持っているsshpythonとシェルスクリプトを。

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

  1. サーバーとのやり取りにはどのような種類がありますか?ファイルをアップロードするだけですか?コマンドラインプログラムを実行していますか?リモートXクライアントを実行していますか?
  2. これらのサーバーにアクセスするには、どのレベルのセキュリティが必要ですか?ファイアウォール、安全なネットワーク、VPN?でssh十分と中央の安全な場所から?
  3. 各サーバーでどれだけ自動化できますか?各サーバーにプログラムをインストールしsshて実行できますか、それともリモートで実行するなどの方法でプログラムをストリーミングする必要がありますか?スクリプトを使用して、expectまたはコマンドライン呼び出しだけでスクリプトを作成できますか?

VirtualBoxには、Ulrichが言及しているsshようにpuppet、またはシステムだけで管理できる多くのコマンドラインツールが用意されています。


2
ほんの少しの提案。virtualbox、vagrantup.comを見て、仮想イメージの作成を簡素化および自動化できます。
Ulrich Dangel

残念ながら、リモートテスト環境間で単純なネットワークアクセスを取得することはほぼ不可能です。virtualboxファームのセットアップはさらに難しくなります。標準のソフトウェアを「標準のRedHat」リポジトリの一部ではないため、1年以上古くなっているもので標準ソフトウェアを更新するようITに要求するだけでは問題があります。
Arcege

古くなったソフトウェアに関する私の経験に役立ったのは、ソフトウェアがEOLであるか、セキュリティ上の問題があることを示すことです。多くの場合、ネットワークのセットアップ/接続は実現がはるかに困難です。異なるテスト環境を接続することで、費用の節約、プロセスの簡素化、QA時間の節約、またはテスト環境の現実的な実現にどのように役立つかを強調してみてください。また、さまざまな支社から人を乗せることも役立ちます。
Ulrich Dangel
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.