37

私は次の設定をしています:

  • 個別の git リポジトリである多くの異なるプロジェクトですが、すべてのサーバー構成はほとんど同じです。
  • 各プロジェクトは、他の多くのプロジェクトに依存しており、composer 依存関係マネージャーを使用してそれらをまとめます (ここでは PHP 言語)。

Vagrant を使用し、各リポジトリに Vagrant ファイルを含めたいので、チーム メンバーはリポジトリを複製して実行vagrant upし、準備を整えることができます。

私の質問は現在、プロビジョニングに向けられています。apache、git、mysql、いくつかの php パッケージなどのいくつかのツールとパッケージをインストールしてから、いくつかのファイル (最近の開発用の db ダンプなど) をダウンロードし、すべてを /var/www にセットアップして、composer install コマンドを実行する必要があります。

したがって、これを行うための 1 つのオプションは、シェフやパペットなどのレシピを使用するマネージャーを使用することです。別の方法として、bash ファイルを作成し、シェル プロビジョニングを使用することもできます。

私はシェフ/パペットの経験があまりないので、当然、シェルオプションを使用する方が簡単に思えますが、これが長期的には良い/実行可能なオプションではないかどうかを理解したい.

パペット/シェフと一緒に行くのは悪いアプローチだと思うのはなぜですか:

いくつかの異なるレシピを使用する必要があり、ほとんどの場合、異なるリポジトリに同じレシピを使用することを理解しています。そのため、すべてのリポジトリにそれらすべてを含める必要があります。20 個のリポジトリがあり、10 個のレシピが必要であることを検討してください。つまり、200 個のレシピを git-submodule などとして追加する必要があります (また、各チーム メンバーは、リポジトリを複製し、次に 10 個のレシピ リポジトリを複製し、それぞれに対して vagrant を実行する必要があります)。事業)。対照的に、シェル スクリプトを含む小さなリポジトリを作成し、それを 20 回複製するだけで済みます。

おそらく何かが足りないので、chef/puppet を選択する必要があるかどうか、およびリポジトリのすべてのサーバー設定が非常に似ている場合でもそれが理にかなっている理由を教えてください。

4

2 に答える 2

27

次の記事はさらに別の CM ツール ( ansible ) に関するものですが、著者はシェル スクリプトから移行することの利点をうまく説明していると思います。

http://devopsu.com/blog/ansible-vs-shell-scripts/

引用1:

私が本当に驚いたのは、これらのより有名な開発者からの反応でした。彼らは基本的に、「これは本当にクールですが、手動インストール/シェルスクリプトのワークフローは今のところ問題ないので、おそらく読まないでしょう」と言っていました。

私は少しショックを受けましたが、数分間考えてみると、彼らが CM ツールについて知っていることを考えると、彼らの選択は完全に正気で合理的であることに気付きました。

引用2:

彼らにとって、CM ツールを使用するということは、複雑な概念を学習し、複雑なインストール プロセスに苦労し、その複雑なシステムを長期にわたって維持するという何週間もの努力を意味していました。彼らはメリットをある程度認識していましたが、CM ツールを使用するコストが高すぎて、努力する価値がないように思われました。

シェル スクリプトに対する利点は最後にまとめられており、すべての CM ツール、パペット、シェフ、ソルト、アンシブルなどに当てはまると思います。

  • ソース管理に行き着く可能性が最も高い方法はどれですか?
  • 自信を持って安全に複数回実行できるメソッドはどれですか?
  • 複数のサーバーに対して簡単に実行できる方法はどれですか?
  • サーバーの正確性を実際に検証 (テスト) する方法はどれですか?
  • 特定のサーバー (web、db など) を簡単にターゲットにできる方法はどれですか?
  • 構成ファイルの簡単なテンプレート化をサポートする方法はどれですか?
  • スタック全体を簡単にサポートできるように成長するメソッドはどれですか?

お役に立てれば。

于 2013-11-10T16:43:52.713 に答える