私はPuppetを使い始めたばかりで、* nixシステムを長年使用してきましたが、sysadminとしてもopsとしても働いたことはありません。
現在、一連の(PHP/MySQL/MongoDB、gitのコード)WebアプリケーションをホストするためのPuppetマニフェストを作成しています。各ホストに仮想ホストを設定するため、Puppetが実際のアプリケーションについてある程度の知識を持っている必要があることは明らかですが、Puppetがコードのデプロイやデータベースの作成などを管理する必要があるかどうかはわかりません。
Puppetはアプリケーションのデプロイメントに適したツールですか?そうでない場合、より適切なツールを推奨できますか?
Capistrano か Fabric のどちらかを検討します。
これら2つのツールを使用すると、展開がどのように行われるかをより適切に制御できます。
Puppetは多くの大規模な組織でのデプロイメントに使用されますが、必ずしも完全なわけではありません。その多くは、展開方法に依存します。一度に多くのマシンにデプロイしていますか?ローリング展開を行いますか?
一部の組織では、デプロイメントのパッケージを構築してから、Puppetがポリシーをそのパッケージの適切なバージョンになるように強制することで、Puppetを使用しています。 puppetには環境の概念が含まれているため、環境を使用して段階的にデプロイメントを行うことができます(たとえば、dev、test、prod)。
他の組織はパペットを使用して、rsync、gitチェックアウト、またはパペットを使用して再帰的にファイルコピーを起動することにより、デプロイメントを調整します(ただし、かなり低速です)。
配備に利用できる他のかなり良いツールもあります。私は過去にWhiskey Disk(シンプルなRubyツール))を使用したことがあり、とても気に入りました。
(免責事項、私はパペットラボで働いています)
アプリケーションからパッケージをビルドする場合は、 [〜#〜] fpm [〜#〜] を調べることができます。コードは GitHub にあります。
アプリケーションの展開には、リモート実行+構成管理ツールが適しています。 塩はこの良い例です 。
Puppetは実際にはデプロイメント用に設計されていません。多数のファイルが関係している場合、問題が発生する可能性があるためです。アプリのデプロイのためにcapistranoを調べることができます。