繁体   English   中英

如何使用Chef覆盖节点上的属性?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM