web-dev-qa-db-ja.com

CloudInitを使用するのではなく、Amazon Cloud FormationでPuppet / Chefを使用するのはなぜですか?

「プリベーク」されていないAMI EC2インスタンスを使用する予定です。つまりスピンアップすると、AWS linuxのベアインストールになります。 bootstrapプロセスは、Python、Tomcatなど、必要なさまざまなインストールを取り込みます。最小3つのインスタンスと最大8つのインスタンスがあります。

これらの要件を考えると、Amazon Cloud Formation(CloudInit)を使用するよりもPuppet/Chefを使用する方が便利でしょうか?

Puppetを使用した場合、スクリプトと比較して何が起きているかを監査するのが簡単な宣言型プログラミングができます。また、CloudInitには16kのスクリプトサイズ制限があり、これは実行される場合と実行されない場合があります。

私の質問に答えるためにここで提供できる特定の理由で、誰かがCloudInitからPuppetまたはChefに移動しましたか?

82
BestPractices

CloudInitに比べて利点はありますか?はい、絶対に、それらの多く!

確かに、CloudInitスクリプトを1回実行してサーバーをプロビジョニングすることで、上から下まで実行できます。しかし、構成ファイルの変更、ユーザーの追加、パッケージの更新、または新しいパッケージのインストールが必要な場合はどうなりますか?最終的にはサーバーにログインするか、そのためのスクリプトを記述することになり、必然的にサーバーの不整合な状態になります。

CloudInitは構成管理ではありません。構成管理ソフトウェアの使用を開始することを選択した場合、Puppet/Chef /その他のエージェントをブートストラップするという1つのタスクだけにクラウド初期化を使用します。

Puppetは、パッケージのインストールの自動化、sshキーのセットアップ、またはTomcatヒープの調整を支援するだけではありません。物事の状態を保証します。開発者が午前3時にJavaアプリをトラブルシューティングし、Tomcatの設定を変更すると、Puppetはそれを元に戻します。Pythonまたはノードのグループ、および誰かが別のバージョンをインストールすると、Puppetはそれを元に戻します。

アプリケーションスタックが変更され、RabbitMQ、Jetty、または新しいRDBMSなどを使用し始めると、数十または数千のサーバー間で変更を簡単にテストおよび展開できます。

バックエンドレポート、監査、セキュリティコンプライアンスなど、構成管理ソフトウェアを使用する他の多くの理由があります。

80
czervik

構成管理の全体的なポイントは、マシンを予測可能かつ一貫してスピンアップすることです。 CloudFormationとcloudinitは、AWSのみに限定されている場合(CloudFormationテンプレートのデバッグは 悲惨な体験 )ですが、データセンターリソースとAWSの両方を使用するアプリケーション、またはローカルテスト環境、または開発では優れていますマシン?

AWSに純粋に存在する場合、cloudinitだけで済ますことができると思いますが、あらゆる規模のアプリケーション(Netflixは、彼らが作成したOSSテクノロジーを使用してAMIをプリベークすることは現実的であるとは思いません)そして世界に公開されています; このビデオ を検討してください)。高可用性アプリケーションは、多くの場合VPCをベースとする地域を超えて、VPNを介してデータセンターにバックアップする傾向があり、これはデモ、ステージング、テスト、または開発環境にも影響しません。マシンのプロビジョニングを担当している人として、lastやりたいことは、作業を繰り返すか、複数のプロビジョニングメソッドのデバッグでスタックすることです。

したがって、シェフまたはパペット。これらは、私のデータセンターと同じようにAWSでも動作します。また、 Vagrant を実行している開発マシンでも、オンザフライで必要になることがあるデモ環境で動作します。 cloudinitとChefまたはPuppetの両方を維持するよりも、cloudinitからChefまたはPuppetを起動したいです。

63
Christopher

サーバーを捨てる場合、自動スケーリンググループの背後で実行するとします。おそらくcloudinitで十分でしょう。 LinuxシェルスクリプトまたはWindows PowerShellスクリプトがトリックを行う必要があります。

おそらく、シェフ、パペット、またはdockerを管理する予定のサーバーが長時間実行されている場合は、受け入れられた回答に記載されているように利点があります。それらを使用した後に利点を見ることができない場合、おそらくツールは必要ありません。

5
egrubbs

私の経験では、AWSが提供するすぐに使えるGUIツールを使用して簡単にできるシンプルなものがありますが、より複雑なものになると、ちょうどできることには限界があることがわかり始めます彼らのツール。

その時点で、停止するか、これらのより複雑な目標を達成するのに役立つ他のツール(ChefやPuppetなど)を見つけることができます。

あなたの選択。

0
Brad Knowles