我可以使用属性文件在chef-solo下运行时设置环境吗?

时间:2013-11-06 12:37:06

标签: chef chef-solo

Chef 11.6为此处记录的http://docs.opscode.com/essentials_environments.html#set-using-chef-solo

添加了对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}")

2 个答案:

答案 0 :(得分:3)

它假设在运行-E时,参数--environmentchef-solo指定了环境。例如:

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

如果您未指定此项,则node.chef_environment将为_default。 请参阅chef-solo

的最新代码

答案 1 :(得分:0)

我没有使用Chef Solo作为我日常厨师任务的一部分,但我在实验时确实让这个工作了。我创建了一个文件 /etc/chef/solo.rb 并在文件中放置了如下环境:

environment "YOUR_ENV_NAME"

对于环境数据,我将所有厨师repo的环境文件复制到节点上的/ var / chef / environments

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

我必须让厨师11.6才能工作。