【发布时间】:2018-07-31 06:53:30
【问题描述】:
我们有一个 Chef 环境设置。我们的部署工作正常,节点属性被角色和环境正确覆盖。
为了测试即将发生的更改,我们希望更改部署中 1 个特定节点的设置。我们不想为该测试编写不同的配方、角色或环境,因为实际上只有 1 个设置不同。
我尝试通过 Chef Manage 的 Web UI 并将特定节点的属性设置如下:
{
"tags": null,
"our_app":{
"url": "http://test-server"
}
}
在我们的食谱中,attributes/default.rb 设置如下:
default[:our_app][:url] = ''
在我们的环境文件中,我们覆盖如下设置:
override_attributes({
"our_app" => {
"url" => "http://default-server",
}
})
我们在配方中使用以下.erb 模板:
{
"serverUrl": "<%= node[:our_app][:url]%>"
}
但是,当我们在该节点上运行 chef-client 时,它仍然在输出中以 http://default-server 结束。
我了解 attribute precedence as explained in the docs 。但我不确定如何实现我想要的。
我应该不在我的环境文件中使用override_attributes() 吗?
有没有办法拥有一个节点特定的覆盖属性?
【问题讨论】:
标签: chef-infra chef-attributes