如何覆盖chef中的默认节点属性

时间:2016-04-13 11:33:18

标签: chef

我想覆盖节点属性,例如我发送到每个特定节点的公共ip,作为测试到不同节点的一部分,我正在使用"刀节点"编辑它。

当我尝试更改默认属性时,我无法覆盖默认属性我在编辑后保存节点时得到以下错误"节点未更新,跳过节点保存"

尝试在节点编辑中的默认属性中添加以下内容,即使我尝试了覆盖但它失败了。有人可以给我任何方式    通过它我可以实现它

  "default": {
    "deploy": {
      "external_ip": "10.38.9.2" 
    }
  },

我没有找到任何正确的答案,所以我在这里创建了这个问题。

谢谢,

2 个答案:

答案 0 :(得分:0)

托米,

直接来自https://docs.chef.io/attributes.html#attribute-precedence

  

自动属性包含由Ohai识别的数据   每个厨师 - 客户运行的开始。自动属性不能   已修改且始终具有最高的属性优先级。

我希望这很有用。

答案 1 :(得分:0)

一般来说,您可以按照描述的方式设置默认属性。但是,您设置的属性会被Ohai自动属性覆盖。自动属性优先于所有其他属性,正如@tiago所指出的那样,只读。

假设您正在尝试使用chef更改IP地址,则需要使用配方来执行此操作,而不仅仅是属性。该配方可能会使用node[:set_ip_address]node[:new_ip_address]等属性来存储所需的值。可能存在可以执行此操作的现有食谱,但我建议您在更改ipaddress后验证它是否还重新加载ohai数据,否则node[:external_ip]仍将具有旧值。