完全開示:私はPuppetLabsの従業員です。しかし、私は彼らに加わる前に、2年以上にわたって製品としてPuppetを選びました。
構成がa)ある程度複雑で、b)時間の経過とともに変化する場合、またはインストール環境自体が変化する可能性がある場合は、PuppetまたはChefovershellを使用することをお勧めします。デプロイメントが実行されます。スクリプトは非常に優れている可能性がありますが、最終的には、スクリプトに関するすばらしいプログラミングプラクティス、テスト、QAなどを行わない限り、ある時点で失敗します。
DevOpsの周りには、この概念について議論している識字者全員がいますが、それは「技術的負債」の原則に帰着します。私たちは今、物事を簡単な方法で行う傾向があるため、複雑さと難しさを増すことを犠牲にして、それらをより単純なものとして認識します。後で。
Puppetの強みの1つは、その決定論的性質です。作成するマニフェストは、Puppetによって、構築しているサーバーのモデルにプログラムで変換できる必要があります。これは人々によってより「困難」であると認識されていますが、テクノロジーのライフサイクルの曲線に沿って平均すると、困難は軽減されると私は主張します。言い換えれば、Puppetはあなたに今あなたの思考を強制しますが、後で考えてあなたが行くにつれて再設計するのではなく、簡単に拡張するために展開します。後で、利息を付けて、クレジットではなく、今すぐ現金で支払います。
他の人のマニフェストを純粋にプルダウンしている場合は、ある時点で問題が発生する可能性があります-そうではないようにしたいと思いますが、今日のPuppetでの作業は確かにそうです。なぜなら、彼らはそれらをアドレス指定するために書いているからです。一般的なケースであり、特定のシステムではありません。多くの汎用マニフェストは、Puppetをよりよく理解した場合にのみ役立ちます。
そこで、そこから始めるのではなく、優れたLearning Puppetガイドを読み進めて、基本を理解し始めます。Puppetの学習曲線は急ですが、しばらくすると横ばいになります。
他のプロビジョナーやツールを使用する理由は他にもありますが、シェルスクリプトが想定どおりに動作することを確認するよりも、PuppetまたはChefの方が優れていると確信しています。新しい環境を生み出す必要があります。