web-dev-qa-db-ja.com

Puppetを使用したアプリケーションのデプロイメント

私はPuppetを使い始めたばかりで、* nixシステムを長年使用してきましたが、sysadminとしてもopsとしても働いたことはありません。

現在、一連の(PHP/MySQL/MongoDB、gitのコード)WebアプリケーションをホストするためのPuppetマニフェストを作成しています。各ホストに仮想ホストを設定するため、Puppetが実際のアプリケーションについてある程度の知識を持っている必要があることは明らかですが、Puppetがコードのデプロイやデータベースの作成などを管理する必要があるかどうかはわかりません。

Puppetはアプリケーションのデプロイメントに適したツールですか?そうでない場合、より適切なツールを推奨できますか?

10
michaeltwofish

CapistranoFabric のどちらかを検討します。

これら2つのツールを使用すると、展開がどのように行われるかをより適切に制御できます。

10
Mike

Puppetは多くの大規模な組織でのデプロイメントに使用されますが、必ずしも完全なわけではありません。その多くは、展開方法に依存します。一度に多くのマシンにデプロイしていますか?ローリング展開を行いますか?

一部の組織では、デプロイメントのパッケージを構築してから、Puppetがポリシーをそのパッケージの適切なバージョンになるように強制することで、Puppetを使用しています。 puppetには環境の概念が含まれているため、環境を使用して段階的にデプロイメントを行うことができます(たとえば、dev、test、prod)。

他の組織はパペットを使用して、rsync、gitチェックアウト、またはパペットを使用して再帰的にファイルコピーを起動することにより、デプロイメントを調整します(ただし、かなり低速です)。

配備に利用できる他のかなり良いツールもあります。私は過去にWhiskey Disk(シンプルなRubyツール))を使用したことがあり、とても気に入りました。

(免責事項、私はパペットラボで働いています)

9
stahnma

アプリケーションからパッケージをビルドする場合は、 [〜#〜] fpm [〜#〜] を調べることができます。コードは GitHub にあります。

私の意見では、Puppetはアプリケーションをデプロイするための適切なツールではありません。

テストとステージングにコードをビルドしてデプロイするために Jenkins を使用します。

Jenkinsはもともと継続的インテグレーションサーバーですが、本当に柔軟でモジュール式です。アプリケーションのデプロイに役立つJenkinsのプラグインはたくさんあります。

私たちのアプリケーションでは、正常に構築されたWARファイルを宛先サーバーにコピーし、バックアップと展開を行うスクリプトを実行する SSH経由で公開 を使用してJenkinsを構成しました。お役に立てれば!

4
pkhamre

アプリケーションの展開には、リモート実行+構成管理ツールが適しています。 塩はこの良い例です

2
baijum

Puppetは実際にはデプロイメント用に設計されていません。多数のファイルが関係している場合、問題が発生する可能性があるためです。アプリのデプロイのためにcapistranoを調べることができます。

http://rubyforge.org/projects/capistrano/

1
johnshen64