chef-infra - OpsWorks : How to set Chef environment?

标签 chef-infra vagrant environment aws-opsworks

使用 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/

相关文章:

ruby - 如果源文件存在,如何编写 Chef 配方来复制文件? only_if 守卫不工作

ssh - Ansible SSH 转发似乎不适用于 Vagrant

使用 Ansible SSH 进入 Vagrant 机器

python - 是否将 Anaconda 添加到路径

lua - 全局变量_G有多特殊?

docker - 来自守护程序的错误响应:容器f88566c370dd未运行

linux - 修改用户的 UID 不更新

chef-infra - Inspec 测试多个实体

express - NPM通过package.json安装express时出错

git - 如何使用git管理一个代码库但有不同的环境