0

Chef 11.6 は、ここに記載されているように、chef-solo の環境サポートを追加しますhttp://docs.opscode.com/essentials_environments.html#set-using-chef-solo

ただし、JSON 属性ファイルから環境を設定する方法が見つかりません。json ファイルで設定environmentとキーを試しましたが、どちらも機能していないようです。chef_environmentsolo.rb ファイル経由で環境を設定できますが、json 属性ファイル経由でも可能かどうか疑問に思っていましたか?

私はこのように呼び出しています:

chef-solo -l debug -c solo.rb -j node.json

solo.rb には以下が含まれます。

root = File.absolute_path(File.dirname(__FILE__))

cookbook_path root + '/cookbooks'
data_bag_path root + '/data_bags'
role_path root + '/roles'
environment_path root + '/environments'
verbose_logging :false

node.json には以下が含まれます。

{
  "run_list": [ "recipe[env_log]" ],
  "environment": "test1",
  "chef_environment": "test2"
}

そして env_log レシピにはちょうどChef::Log.info("Environment #{node.chef_environment}")それがあります。

4

2 に答える 2

3

-E環境がパラメーターによって、または--environment実行時に指定されていることを前提としていますchef-solo。例えば:

chef-solo -l debug -c solo.rb -j node.json -E test2

これを指定しなかった場合、node.chef_environment は になります_defaultChef-soloの最新コードを参照

于 2013-11-07T10:43:36.430 に答える
0

私は毎日の Chef タスクの一部として Chef Solo を使用していませんが、実験中に少し前にこれが機能するようになりました。ファイル/etc/chef/solo.rbを作成し、ファイルに次のような環境を配置しました。

environment "YOUR_ENV_NAME"

環境データについては、すべてのシェフ リポジトリの環境ファイルをノードの /var/chef/environments にコピーしました。

cp -r <repo>/environments/* /mnt/to/solo/node/var/chef/environments

これが機能するには、Chef 11.6 が必要でした。

于 2013-11-06T15:19:50.803 に答える