OpsWorks:如何设置 Chef 环境?
Posted
技术标签:
【中文标题】OpsWorks:如何设置 Chef 环境?【英文标题】:OpsWorks: How to set Chef environment? 【发布时间】:2013-11-23 04:48:26 【问题描述】:使用 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
在 OpsWorks 堆栈的自定义 JSON 中,我有这样的东西:
"chef_environment": "staging"
然后我将my_environment_cookbook
包含在运行列表中,在我想要获得node.chef_environment
属性的食谱之前。
【问题讨论】:
见:github.com/mitchellh/vagrant/issues/1899 您好,问题是我使用的是 OpsWorks,不知道如何设置环境。你有什么建议吗?谢谢。 你以为你在使用 vagrant 吗?听起来像是一个不同的问题。 我对这个不清楚的问题不好。我更新了。 【参考方案1】:Amazon Opsworks 目前不支持原生 Chef 环境。您可以在配方中手动设置节点的环境:
node.chef_environment = "environment_name"
由于 Opsworks 不会在 Chef Client 运行之间保留数据,因此每次运行说明书时都需要包含此配方。
您可以从任何您想要的数据源中提取"environment_name"
的值:硬代码、数据包、节点属性等。
【讨论】:
以上是关于OpsWorks:如何设置 Chef 环境?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 MacOS 中安装 chef 12 以部署到 AWS Opsworks?
如何使用 Centos Vagrant guest(类似 Amazon Linux)在 Linux (Debian9) 上本地调试 Opsworks/Chef 11.10.4 食谱