使用 AWS OpsWorks ,您将如何设置环境(登台,制作等),这些环境将应用于 node.chef_environment
属性,然后应用于食谱能读取这个属性吗? (我想这可以使用自定义JSON完成,对吗?)
我遇到了这个link,但仍然不知道该怎么办。
使用 Vagrant ,我可以在Vagrantfile中将其设置为:
config.vm.provision :chef_solo do |chef|
...
chef.environment = "local"
...
end
谢谢。
更新
我最后通过编写my_environment_cookbook
来解决问题,if node[:chef_environment] != nil
node.chef_environment = node[:chef_environment]
end
只有默认配方中的代码:
{
"chef_environment": "staging"
}
在OpsWorks堆栈的自定义JSON中,我有类似的东西:
my_environment_cookbook
然后我在运行列表中包含node.chef_environment
,在我希望获得{{1}}属性的食谱之前。
答案 0 :(得分:4)
Amazon Opsworks目前不支持本机Chef环境。您可以在配方中手动设置节点的环境:
node.chef_environment = "environment_name"
由于Opsworks不会在Chef Client运行之间保留数据,因此每次运行cookbook时都需要包含此配方。
您可以从您想要的任何数据源中提取"environment_name"
的值:硬编码,数据包,节点属性等。