chef-client override runlist不更新服务器上的属性

时间:2015-03-11 13:09:31

标签: chef

我有一本带有属性的食谱。我从这本食谱中添加一个食谱来运行一个节点列表。我在该节点上运行chef-client,并在Chef服务器上查看属性及其值。 后来我更改了cookbook属性,上传了cookbook,使用-o选项运行了特定的食谱。我没有在Chef服务器上看到属性的更新值。

我在某地读过-o选项不会更新厨师服务器。因此,我们不应经常使用-o选项并仅将其用于开发目的。

如果菜谱总是通过-o选项运行,则无法在服务器上的节点属性上看到属性和配方(我觉得这很糟糕?)。

由于 AMOD

2 个答案:

答案 0 :(得分:1)

虽然我同意你可能做错的观点,但如果你需要覆盖运行列表,那么实现它的一种方法是:

A) 创建/etc/chef/alternative.json,下面的内容填充了您的替代运行列表:

  

{" run_list":[]}

b)确保您拥有节点的“真实”运行列表。 /etc/chef/first-boot.json

c)定期运行以下命令刷新统计数据

  

chef-client -j /etc/chef/empty.json

d)当你真的想要聚合节点时,请使用:

  

chef-client -j /etc/chef/first-boot.json

答案 1 :(得分:0)

-o选项允许主厨使用与通常完全不同的运行列表,因此不会将其保存到主厨服务器。

如果您需要定期与-o一起运行,那么您可能做错了。 使您的配方具有幂等性或更改它,以便可以使用某处的标志(节点属性或数据包项)启用运行,而无需修改节点运行列表

如果没有用例,就很难就如何解决这个问题给出正确的建议。