(この質問の愚かさをあらかじめお詫びします。私は通常、システム管理者ではなくプログラマーですが、いくつかのことを自動化し、自動化されているが最もきれいな方法ではない他のいくつかをクリーンアップすることに専念しています。 。:-)
cfengine、Puppet、Chefなど、多数のサーバーへのソフトウェア展開を自動化するためのさまざまなツールを見てきました。これまでのところ、Puppetは最も魅力的に見えますが、私は確かにまだ何もコミットしていません。
これらのツールはすべて、事前にパッケージ化されたソフトウェアを使用して多数のサーバーを最新の状態に保つための優れた機能を果たしているように見えます。
取得できないのは、Puppetなどのツールを使用して、内部ソフトウェアの展開を管理する方法です。私は、Apacheを維持する方法を示すチュートリアルensure => latest
(これはかなりかっこいいです)を何千も見てきたので途方に暮れていると思いますが、今日のユースケースに相当するものはありません。
- 人間がボタンを押すと
- バージョン管理リポジトリBからブランチAをプルする
- コマンドCを実行してコンパイルします
- バイナリーDをサーバーE1からE10にコピーする
- 各サーバーでコマンドFを実行して、すべての変更を有効にします。
Puppetは素晴らしい音で、一部のシェルスクリプトに対する宣言型のべき等構成の利点は完全にわかりますが、「シェルスクリプトをPuppet(またはChef、またはcfengine)に更新したいので、ここでのチュートリアルは確認していません。すべきだ」そんなことありますか?Puppetのドキュメントで提供されているものをどのように利用して、私が望む振る舞いを再現するかは他の人には明らかですか?届かないのですか?
これまでのところ、人間(#1)はソフトウェア(#2および#3)をPuppetの外部に手動でパッケージ化し、Puppet構成を手動で更新して、Puppetがサーバーを更新するようトリガーします。 .. 多分?(あなたが言うことができると確信しているので、私はここで少し混乱しています。)
ありがとう!