使用 AWS OpsWorks ,您将如何设置环境(登台、生产等),这将应用于 node.chef_environment
属性,然后cookbooks 就能读取这个属性? (我想这可以使用自定义 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
在 OpsWorks 堆栈的自定义 JSON 中,我有这样的内容:
{
"chef_environment": "staging"
}
然后我加入了
my_environment_cookbook
在运行列表中,在我想要获取的食谱之前 node.chef_environment
属性。
最佳答案
Amazon Opsworks 目前不支持 native Chef 环境。您可以在配方中手动设置节点的环境:
node.chef_environment = "environment_name"
由于 Opsworks 不会在 Chef Client 运行之间保留数据,因此每次运行说明书时都需要包含此配方。
您可以提取
"environment_name"
的值来自您想要的任何数据源:硬代码、数据包、节点属性等。
关于chef-infra - OpsWorks : How to set Chef environment?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19905431/