[英]How can I override an attribute on a node with Chef?
我们有一个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
结尾。
我了解docs中说明的属性优先级 。 但是我不确定如何实现我想要的。
我是否应该在我的环境文件中不使用override_attributes()
?
有没有一种方法可以拥有特定于节点的覆盖属性 ?
不,没有办法进行特定于节点的覆盖。 特定于节点的数据始终(并且唯一处于normal
水平)。 通常,您应该根本不使用覆盖级别,当然也不要使用自称为默认值的东西。
另外,我们真的建议您不要再使用角色/环境。 您应该尽快切换到Policyfile系统。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.