小規模での自動化されたLinuxの展開と構成管理-価値があるか


24

私は、Debianを実行する〜25台のサーバーを展開しようとしています。マシンにはさまざまな役割があります-Webサーバー、Javaアプリサーバー、プロキシ、MySQLボックス。環境はおそらく今後大きく成長することはありません。今後2年間でさらに2〜5台のサーバーが追加される可能性があります。

システムのインストールにはおそらくfaiを使用しますが、cfengineまたはpuppetのような小規模な構成の一元化された構成管理を追加する価値があるかどうかはわかりません。

構成管理は、このサイズの環境に意味がありますか?

回答:


29

Debianの事前シード(インストーラが求めるすべての質問に回答するテキストファイルとPuppet)を与えることをお勧めします。

FAIではなくpreseedを使用する理由は、最初にイメージをセットアップし、それを最新の状態に保つ必要がないためです。最終的にすべてを手動で実行した場合と同様のインストールが行われます。新しいリリースをインストールするときは、新しいイメージを再構築するのではなく、変更を使用して構成ファイルを更新する必要があります。

構成管理ツールは、同じ役割を実行する複数のサーバーがあり、それらを同一にしたい場合、たとえばWebサーバークラスターなどで特に役立ちます。ただし、これらはすべてのサーバーの基本インストールの構成にも役立ちます。ntpdやMTAなど、すべてのサーバーに特定のパッケージをインストールする必要があります。すべてのサーバーの構成ファイルを変更する必要があります。追加の利点は、マニフェストをSubversionのようなものに保持し、サーバーで何が変更されたか、誰がそれをなぜ行ったかを記録できることです。構成管理は、サーバーに障害が発生した場合に命を救うこともできるため、迅速に再構築する必要があります。OSをインストールし(FAIまたはpreseedを使用)、パペットをインストールし、それを削除して、以前とまったく同じようにビルドし直します。明らかに、データのバックアップを保持する必要があります。

構成管理には、それを使用して変更を加えるだけで、初期費用が設定されるようにするための献身が必要ですが、作業セットアップが完了したら後悔することはありません。

Puppetは、あなたが言及した2つのツールの中で最も新しいものです。本当にお勧めです。構成は宣言型言語であり、高レベルの構成を簡単に構築できます。また、その周りには非常に大きなコミュニティがあり、メーリングリストやIRCチャンネルでの支援を歓迎する人々が常にいます。


事前播種に関するヒントをありがとう。私は今それについてのドキュメントを見ています。
2009年

FAIはオールドスクールです。私は絶対にお勧めしません。Preseed + Puppet ftw。
ワンブル

FAIとcfengineを使用しています。約1000台のマシンがあり、非常にうまく機能しています。マシン自体をビルドするときにマシンにsshできるため、マイクロスクリプトを簡単に作成できることに注意してください。
ジェームズ

FAI古い学校?いや!FAIは堅実で、10年以上の経験があります。でFAIユーザーの長いリストを見ていfai-project.org/reports
トーマス・ラング

良いアドバイスです。同様のアプローチを使用しており、うまく機能しています。しかし、私はFAIを却下しません。FAIはインストールにイメージを使用しません(SystemImagerはそれを使用します)。FAIインストーラーの実行に使用される最小限のnfsルートディレクトリを設定する必要があります。インストールプロセスは、構成ファイルとさまざまなユーザー定義フックの実行により自動化されます。preseedに対する利点は、FAIクラスの概念により、異なる役割を持つ複数のサーバー(さらにはワークステーション)を簡単に処理できることです。
-JooMing

10

2-3ボックス以上で、「テンプレート」または特定のロールを実行するサーバーの概念がある環境では、CFengineをお勧めします。

どうして?簡単に言えば、ミスを減らし、環境内のあらゆる場所でファイル/ディレクトリのアクセス権が正しいことを保証するツールがあり、さらにサーバーを展開するときに、ツールがすべてを完全に処理し、ミスを犯しません。

すでに問題が発生している12時間のシフトの終わりにWebサーバーを展開する熟練したシステム管理者でさえも対照的です。/etc/random/locationに移動する必要がある厄介な小さな構成ファイルを覚えているでしょうか。 / foo / barそれ以外の場合、アプリケーションは静かに、顧客の請求のようなかなり重要なことを実行できませんか?:)

CFengineのようなツールは、環境全体のセキュリティ更新を実行する優れた方法でもあります。Nagios構成(NRPE)をすべてのボックスにドロップするのも簡単です。あなたは、5箱または5つのを扱っているかどうかあなたはボックスでしょう cfengineのに時間を節約できます。

おそらく私の環境が少し大きいことに注意する価値がありますが、CFengineをあなたが注意するよりも小さな環境にも展開しているので、推奨事項です!

おそらく次の質問はCFengine対Puppetでしょうか?それはより難しい決定であり、特にエラーログに関するPuppetの未熟さのために(初期には)CFengineを使用していました。最近はよくわかりません。いくつかの多額のRTFMとRTFSとirc.freenode.net/#puppetでのクライアント接続の問題が- <>人形と私の特定の問題に背中を見ると、彼らはSSL証明書に関連して、痛々しいまだ私は、サーバーを診断3時間を費やした時間を思い出すだけ見つけるために、ログに記録されないエラーが発生し、ルークは「ああ、それを修正するのは本当に難しい」と言って、決してしませんでした。:(


いい視点ね。私の場合、問題は高度に専門化される予定です。テンプレートの数[冗長性のため]は、おそらくn / 2(ここで、nはサーバーの総数です)前後になるでしょう。
pQd 2009年

1
それは悪いことではありません。私のWWWクラスターのほとんどはn / 2でなければn + 2であり、HAproxyのようなロードバランサーの背後にノードをデプロイする際にCFengineをかなり柔軟に使用できます。IPVSやキープアライブの管理も完全に実行可能です:-) n / 2の冗長性要件があっても、環境内に同一または類似の構成ファイルがたくさんあると思いますか?CFengineには、IPなどの何かを含む「テンプレート化された」設定ファイルのようなことを実行するための「編集ファイル」ツールがあり、(実行時に)正しい情報で検索して置換することを忘れないでください。;)
nixgeek 09年

@astinusご意見ありがとうございます。また、中央構成でねじ込みによって生産を停止することも少し怖いです。構成の自動ポーリングを無効にし、各マシンでログを記録し、更新を強制し、すべてが正常かどうかを手動でチェックすることについてどう思いますか?[はい、nagios /カスタムモニタリングも使用します...しかし、まだ]。
PQD

1
構成管理技術への自信は時間とともに来ると思いますが、暫定的には、ボックスの自動ポーリングを無効にし、「cssh」を使用してボックスの各クラスにログインし、「cfagent -qv」(または何でも)を実行します更新をプッシュします。信頼を高めるためのヒントが必要な場合は、仮想マシンを「ステージング」環境として展開し、すべての変更が最初に確実に実行されるようにします。SubversionでCFengineまたはPuppetの設定を保持する場合は、ブランチとタグを使用するだけでかなり簡単です。
nixgeek 2009年

また、システムの(再)インストール、構成管理を途方もなく単純化するためにSLACKを使用することをお勧めします。ここから入手できます:sundell.net/~alan/projects/slack
HK_

5

cfengineとpuppetに加えて、chefもあります。物事は常に予期しない方向に成長するため、これらのツールのいずれかを使用することを強くお勧めします。これは、一元化された場所で物事を管理するのに役立ちます。

認識すべき重要なことは、すべてを手に入れることができない可能性があることですが、少なくとも90%を手に入れることができれば、それは始まりです。その上、それは楽しみであり、長期的にはあなたの人生を楽にします。最後に、前進するのは良いスキルです。


chefは、構成管理シーンへの最近のエントリーです。これは、パペットのカスタム宣言言語とは対照的に、あなたがやりたいようにルビーを書くことで設定されるように設計されています。どの方法がうまく機能するかは、時間が経てばわかります。私は現在、人形劇キャンプに座っています。
デビッドパシュリー

3

5年前からcfengineを使用してdebianをインストールしています(最近はwoodyからlennyまで)。etchでは、カスタムのdebian-installerを作成します。preseedのおかげで、「ホスト名は何ですか」という1つの質問が出てきます。この後、cfengineはサーバー全体(dns + dhcp、dnssec、samba、ntpd、デフォルト(Samba)のユーザーとパスワード、ssh、openvpn、apache vHosts、LVM上のrsnapshotによるバックアップ、カスタムwebminmodulesなど)を構成します。

サーバーを1つだけインストールする場合でも、次のようにツールボックスからcfengine-scriptsを使用します。

control:

  Repository  = ( $(CFREPO) )
  IfElapsed = ( 0 )
  Syslog = ( on )
  actionsequence = ( editfiles shellcommands )
  CPTYPE = ( sum )

editfiles:
  { /etc/sysctl.conf
    # don't spam on tty:
    BeginGroupIfNoSuchLine "kernel.printk.*=.*2 4 1 7"
      DeleteLinesMatching "^kernel.printk.*=.*"
      Append "kernel/printk=2 4 1 7"
    EndGroup
    # no E(xplicit?) C(ongestion) N(otification) 
    BeginGroupIfNoSuchLine "net.ipv4.tcp_ecn.*=.*0"
      DeleteLinesMatching "^net.ipv4.tcp_ecn.*=.*"
      Append "net/ipv4/tcp_ecn=0"
    EndGroup
    BeginGroupIfNoSuchLine "net.ipv4.ip_forward.*=.*1"
      DeleteLinesMatching "^net.ipv4.ip_forward.*=.*"
      Append "net/ipv4/ip_forward=1"
    EndGroup
    DefineClasses "configchange_sysctl"
  }

shellcommands:
  configchange_sysctl::
    "/sbin/sysctl -p /etc/sysctl.conf"

# vim: set ts=2:

cf2-scriptsは多少人間が読めるので、cfengineが好きです。

そのため、自動構成管理用のツールを使用する価値があります。

/ thorsten


2

小規模なサイトでも価値があります。成長に伴う一貫性がすべてです。そして、あなたはあなたのサイトが成長することを知っています。まだ小さいうちに始めましょう。Cfengineは素晴らしいです。特に、フィールド全体のすべてのパッケージマネージャーを処理できるバージョン3と、その軽量で安全な「機能する」バージョン3です。Puppetは主張した内容を提供しませんでした。シェフを試したことはありません。

他に対するcfengineの利点は、非常に軽量であるが、実際にはより多くの機能があることです。puppetが使用するWeb証明書ではなく、セキュリティはsshに似ています。上司にcfengineについて空想科学小説だと思ったとき:)未来的なものを探しているなら、マーク・バージェスの研究論文を読んでみてください。クール。


1

小さなサイトを運営しているときに私が欲しかった一番のツールは「プッシュボタン」ビルドです。パッチの適用、更新、再構築が簡単になり、将来の無数の他の問題に対処できます。

すべてのボックスにsshが正しくインストールされていませんか?curl / wget / vimもありませんか?各ボックスで使用したい他の社内ツールについてはどうですか?

サーバーを一元管理することは、将来の作業をより簡単にするために取り組むべき最初のツールの1つです。


1

私はここで一人一人に同意します。あまり大きくないときは、実用的なインフラストラクチャの学習とセットアップを開始する必要があります。成長すると準備ができているからです。

実行したい内容に応じて、FAI、cfengine、Debian / Ubuntuの事前シードに進みます。FAIは多くの異なるツールで動作するため、Debianライクなディストリビューションにとって良いスタートです。FAI(およびcfengine)クラス制御の構成を使用すると、インストールを簡単に小さなモジュールに分割し、各モジュールに使用するモジュールを選択できます。このように、多くの異なるマシンがある場合でも便利です。これらのスクリプトを使用してインストールを文書化するため、実際にはより便利です。そして、新しいマシンにインストールするとき、何も忘れません。

はい、ライブインストールで変更を展開する前に、テストするマシンをいくつか用意する必要があります。ただし、このような構成スクリプトを使用すると、ライブインストールの手順を忘れずに実行できます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.