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 环境?的主要内容,如果未能解决你的问题,请参考以下文章

AWS Opsworks 中的 Chef 环境

如何在 MacOS 中安装 chef 12 以部署到 AWS Opsworks?

如何使用 Centos Vagrant guest(类似 Amazon Linux)在 Linux (Debian9) 上本地调试 Opsworks/Chef 11.10.4 食谱

使用 Chef 12 从 AWS OpsWorks 中的堆栈设置获取自定义 JSON

OpsWorks / Chef PHP 部署流程

OpsWorks 找不到我的 Chef 食谱