4

使用AWS OpsWorks,您将如何设置将应用于node.chef_environment属性的环境(暂存、生产等),然后食谱将能够读取此属性?(我想这可以使用自定义 JSON 来完成,对吧?)

我遇到了这个链接,但仍然不知道该怎么做。

使用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属性的食谱之前。

4

1 回答 1

4

Amazon Opsworks 目前不支持原生 Chef 环境。您可以在配方中手动设置节点的环境:

node.chef_environment = "environment_name"

由于 Opsworks 不会在 Chef Client 运行之间保留数据,因此每次运行说明书时都需要包含此配方。

"environment_name"您可以从任何您想要的数据源中提取值:硬代码、数据包、节点属性等。

于 2013-12-31T23:02:54.287 回答