1

私は Berkshelf に慣れ始めています (ちなみにこれはシェフを学ぶのに最適な方法でした)。現在、ローカル/VM 環境を提供したい PHP 開発者のために開発環境を管理/ロールアウトする方法を考えています。 Chef クックブックからプロビジョニングされます。

私は、Chef 開発者とアプリケーション開発者 (私の場合は PHP 開発者) の両方にとって理想的な環境が何であるかを理解したいと考えています。クックブックを使用する PHP 開発者のために、反復可能なローカル (または VM) 環境が必要です。

Vagrantfile を使用して、開発者が自分の証明書を使用してシェフ サーバーを構成し、プロビジョニングして、環境の使用を開始できるようにすることを考えていました。私が確信していないこと: 各開発者は、アプリケーションごとに Chef Server にリストされている独自の Vagrant ノードを持っている必要がありますか? または、vagrant ノードを登録せずに Chef クライアント プロビジョナーを使用する方法はありますか?

基本的には、ローカル マシンのノードはあまり気にしませんが、開発者が Chef サーバーから Vagrant をプロビジョニングして、他の環境と一致させることができれば素晴らしいと思います。

次に、Berkshelf で生成されたリポジトリはすべて、Chef クライアントを使用してプロビジョニングしています。それは良い習慣ですか、それとも開発運用としてクックブックを開発/テストするためだけにchef-soloを使用する必要がありますか?

4

1 に答える 1

3

完全に意見形式の質問なので、私の意見に基づいて回答します。彼らの多くは私よりも多くの経験を持っているので、うまくいけば、他の人たちの何人かが声をかけてくれるでしょう.

アプリ開発者向け

テストキッチンとスーパーマーケットを組み合わせて使用​​していますが、うまく機能しています。Gemfile、.kitchen.yml、および Berksfile を含むリポジトリがあります。理想的には、スーパーマーケット ユーザー、knife.rb、Vagrant のインストールなどをセットアップする 1 つのコマンド セットアップ スクリプトもあるでしょう。このリポジトリには、chef-local で使用されるすべてのプリミティブ (ロール、環境など) も含まれています。

最終的には、これらすべてを適切にまとめた Rakefile が作成されます。

rake setup # installs any non-gem stuff, sets up users, berks install, etc.
rake standup # stands up our primary app and dependencies (involves multiple VMs playing together)
rake standup:standalone # stands up the primary app and dependencies all on one box
rake standup:otherApp # you get the idea

各 rake タスクは、必要な数のkitchen converge操作を呼び出すことができます。

Chef 開発者向け

まず、chef-zero (別名ローカルモード) の人気が高まるにつれ、chef-solo は人気を失いつつあります。ソロはなくなることはありませんが、あなたのユースケースではその理由がわかりません。

第二に、私が見たほとんどの Chef は、Vagrantfile から test-kit に移行したようです。Kitchen はデフォルトで内部的に Vagrant を使用しており、Vagrant と同様に、他のさまざまなシステム (Docker、AWS、Rackspace、VMware など) も使用できます。もう少しシェフ中心です。とにかく、「開発環境」にはテストフレームワークが必要になるので、あなたが説明するものには本当にうまく機能します。では、test-kitchen を使用して 1 つの石で 2 羽の鳥を得ることができるのに、なぜ Vagrant をテスト フレームワークの上に使用するのでしょうか。

第三に、Chef-zero はあなたの友達です。各開発者にchef-serverでVMをスピンアップさせないでください。環境、ロール、および data_bags を含む git リポジトリを用意するだけです。次に、chef-zero プロビジョナー、または git リポジトリを指しているchef-local (chef-zero を実行する) を使用して Test-Kitchen を実行させます。この方法でははるかに軽量であり、すべての開発者が共通のオブジェクトを共有できます。

4 番目に、ChefDK をチェックアウトします。上記のすべてが組み込まれており、「通常の」方法になる可能性があります。

第 5 に、とにかくゼロから見つめている場合は、プロダクション シェフ サーバーと一緒にスーパーマーケットとシェフ ガードをセットアップすることをお勧めします。Chef-guard は、ロール、環境、およびデータ バッグへの変更の管理を 1000% 簡単に処理できるようにします。Supermarket は Berkshelf とうまく統合されているため、環境で使用されているクックブックのバージョンを完全に制御できます。

于 2014-12-09T03:12:59.170 に答える