Debian を実行する〜25台のサーバーをデプロイしようとしています。マシンにはさまざまな役割があります-Webサーバー、Javaアプリサーバー、プロキシ、MySQLボックス。環境は将来あまり成長しないでしょう。今後2年間でさらに2〜5台のサーバーが増える可能性があります。
システムのインストールにはおそらく fai を使用しますが、 cfengine または puppet を追加する価値があるかどうかはわかりません小規模。
このサイズの環境では、構成管理は意味がありますか?
私は、インストーラーが尋ねるすべての質問に答えるテキストファイルとパペットをインストーラーに与える、Debianプレシードの混合を使用することをお勧めします。
FAIではなくpreseedingを使用する理由は、最初にイメージを設定して、最新の状態に保つ必要がないためです。すべて手作業で行った場合と非常によく似たインストールになります。新しいリリースをインストールするときは、新しいイメージを再構築する必要はなく、変更を加えた構成ファイルを更新する必要があります。
構成管理ツールは、同じ役割を実行する複数のサーバーがあり、それらを同一にしたい場合に特に便利です。ウェブサーバークラスタ。ただし、すべてのサーバーの基本インストールを構成する場合にも役立ちます。 ntpdやMTAなど、特定のパッケージをすべてのサーバーにインストールしたいとします。すべてのサーバーの構成ファイルを変更する必要があります。追加の利点は、マニフェストをSubversionなどに保持し、サーバーで何が変更されたか、誰が変更したか、その理由を記録できることです。構成管理は、サーバーに障害が発生した場合に迅速に再構築する必要がある場合にも役立ちます。 OSをインストールし(FAIまたはpreseedingを使用)、パペットをインストールします。以前とまったく同じようにビルドされます。もちろん、データのバックアップを保持する必要があります。
構成管理では、それを使用して変更を加えるだけで、事前にコストを設定できるようにするための献身が必要ですが、いったん有効なセットアップができれば後悔することはありません。
Puppetは、あなたが言及した2つのツールのうち、よりモダンなものです。私は本当に誰にもお勧めします。構成は宣言型言語であり、より高いレベルの構成を簡単に構築できます。その周りには非常に大きなコミュニティもあり、メーリングリストやIRCチャネル)で助けてくれる人々が常に歓迎されています。
2〜3ボックス以上で、「テンプレート」または特定の役割を実行するサーバーの概念がある環境には、CFengineをお勧めします。
どうして?簡単に言うと、ミスを減らすことができます。ファイル/ディレクトリの権限が環境内のどこでも正しいか、さらにサーバーをロールアウトするかを確認できるツールがあります、ツールはすべてを完全に処理し、間違いを犯すことはありません。
熟練したシステム管理者でさえ、12時間のシフトの終わりにすでに問題が発生しているときにWebサーバーを展開するのとは対照的です...彼らは、/ etc/random/locationに移動する必要があるその厄介な小さな構成ファイルを覚えているでしょうか?/foo/barを使用しない場合、アプリケーションは請求顧客のような重要なことを黙って失敗しますか? :)
CFengineのようなツールは、環境全体のセキュリティ更新を実行するための優れた方法でもあります。 Nagios構成(NRPE)をすべてのボックスにドロップするのも簡単です。 5つのボックスまたは5つのhundredボックスを処理するかどうかに関係なく、will CFengineで時間を節約できます。
私の環境が少し大きいことはおそらく注目に値しますが、私はあなたが気づくよりも小さい環境のためにCFengineもデプロイしたので、推奨です!
おそらくあなたの次の質問はCFengine vs Puppetでしょうか?それはもっと難しい決断であり、(初期の頃は)Puppetの、特にエラーロギングに関しては未熟だったために、常にCFengineに行ってきました。最近、私は本当に確信が持てません。私のPuppetに関する特定の問題を振り返ってみると、それらはSSL証明書に関連しており、サーバー<->クライアント接続の問題の診断に3時間を費やした時間をirc.freenode.net/#puppetで大幅にRTFMとRTFSonlyはログに記録されずにエラーを検出し、Lukeは「ああ、修正するのは本当に難しい」と言いました。 :(
Cfengineとpuppetに加えて chef もあります。物事は常に予期しない方向に成長するため、これらのツールの1つを使用することを強くお勧めします。これは、一元化された場所で物事を管理するのに役立ちます。
認識しておくべき重要なことは、すべてを手に入れることができない可能性があるということですが、少なくとも90%をそこに入れることができれば、それは始まりです。その上、それは楽しく、長期的にあなたの人生を楽にします。最後に、それは前進するのに良いスキルです。
私は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:
私はcfengineが好きです。なぜならcf2-scriptsは人間が読めるからです。
自動構成管理用のツールを使用するのは間違いなく価値があります。
/ thorsten
小さなサイトでも価値があるはずです。成長に伴う一貫性のすべて。そして、あなたはあなたのサイトが成長することを知っています。まだ小さいうちに始めましょう。 Cfengineは素晴らしいです。特にバージョン3は、フィールド全体のすべてのパッケージマネージャーを処理でき、その実際の軽量で安全な「動作する」だけです。操り人形はそれが主張したものを提供しませんでした。シェフは試していません。
他のものに対するcfengineの利点は、超軽量ですが、実際にはより多くの機能を備えていることです。セキュリティは、puppetが使用するWeb証明書ではなく、sshのようなものです。私が上司にcfengineについて話したとき、彼はそれをSFだと思っていました:)未来的なものを探しているなら、マークバージェスの研究論文を読んでみてください。クール。
小さなサイトを運営しているときに私が欲しかった一番のツールは「プッシュボタン」ビルドです。パッチの適用、更新、再構築が容易になり、将来的に無数の他の問題に対処できます。
すべてのボックスにsshが正しくインストールされていませんか? curl/wget/vimもありませんか?各ボックスに使用したい他の社内ツールはどうですか?
サーバーを集中管理することは、将来の取り組みをより簡単にするために取り組むべき最初のツールの1つです。
私はここのすべてに同意します。規模が大きくない場合は、実用的なインフラストラクチャについて学び、セットアップを開始する必要があります。それはあなたが成長するとき、あなたは準備ができているからです。
実行したいものに応じて、FAI、cfengine、Debian/Ubuntuの事前シードに行きます。 FAIはさまざまなツールで動作するため、Debianに似たディストリビューションの良いスタートです。 FAI(およびcfengine)のクラス制御構成を使用すると、インストール済み環境を小さなモジュールに簡単に分割でき、各モジュールに使用するモジュールを選択できます。このように、多くの異なるマシンを持っている場合でも便利です。これらのスクリプトを使用してインストールを文書化するため、実際にはより便利です。そして、新しいマシンにインストールするとき、あなたは何も忘れません。
はい、ライブインストールで変更を展開する前に、テストするマシンをいくつか用意する必要があります。ただし、このような構成スクリプトを使用すると、ライブインストールの手順を忘れずに実行できます。