0

Chef 11.6 添加了对 chef-solo 的环境支持,如此处所述http://docs.opscode.com/essentials_environments.html#set-using-chef-solo

但是我找不到从 JSON 属性文件设置环境的方法。我已经尝试在 json 文件中设置environmentchef_environment键,但似乎都不起作用。我可以通过 solo.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 将是_default. 参考chef-solo最新代码

于 2013-11-07T10:43:36.430 回答
0

我不使用 Chef Solo 作为我日常 Chef 任务的一部分,但我确实在不久前进行了实验。我创建了一个文件/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 回答