1

私は Vagrant + Berkshelf + Chef Solo を使用して、開発マシンで本番環境の AWS OpsWorks ボックスの動作をミラーリングしています。

vagrant ボックスを問題なく起動できますが、プロビジョニングが完了したら、プロビジョニング中に使用したクックブックから別の Chef レシピを実行できるようにしたいと考えています。OpsWorks の動作をエミュレートしようとしているので、これを実行したいと思います。OpsWorks ではdeploy、ボタンを押すだけでレシピを実行できます。vagrant ボックス内で vagrant またはchef-solo を使用して、同じレシピを実行できるようにしたいと考えています。

solo.rb実行したいさまざまなオンデマンド レシピのさまざまな構成ファイルを構築するプロビジョニング プロセスにレシピを追加することで、これを解決できると思います。これらの構成ファイルは、Vagrant/Berkshelf cookbooks_path(これは/tmp/vagrant-chef-1/私の場合) を指し、実行リストを適切なレシピに設定します。これらの構成ファイルは、chef-solo によって使用されます。

誰かが以前にこの問題をよりエレガントな方法で解決したような気がします。これを行うより良い方法はありますか?

そうでない場合、誰かが Vagrant 内またはレシピ内からクックブックのパスを見つける方法を知っているので、構成ファイルにハードコード/tmp/vagrant-chef-1/する必要はありませんか?solo.rb

4

2 に答える 2

1

複数のプロビジョナーを追加するだけです。したがって、最初のconfig.vm.provision :chef_soloブロックの後に、最初のデプロイ後に実行するレシピを適用する別のブロックを追加するだけです。

于 2013-05-15T06:21:21.537 に答える
0

実際のchef-soloの構成と属性は、vagrantボックス内の/tmp/vagrant-chef/solo.rbとファイルに保存されます。/tmp/vagrant-chef/dna.json

Chef の完全なプロビジョニングを実行する:

sudo chef-solo -c /tmp/vagrant-chef/solo.rb -j /tmp/vagrant-chef/dna.json

定義済みの実行リストをオーバーライドし、1 つのレシピ (memcached など) のみを実行します。

sudo chef-solo -c /tmp/vagrant-chef/solo.rb -j /tmp/vagrant-chef/dna.json -o recipe[memcached]

于 2017-01-24T23:14:55.690 に答える