我们有一个 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
在输出中结束。
我理解文档中解释的属性优先级。但我不确定如何实现我想要的。
我不override_attributes()
应该在我的环境文件中使用吗?
有没有办法拥有特定于节点的覆盖属性?