Chef infra 清除JSON文件中设置的属性
如何删除JSON数据文件中的属性集(Chef infra 清除JSON文件中设置的属性,chef-infra,Chef Infra,如何删除JSON数据文件中的属性集(-j在chef客户端运行期间使用)?比如说,我需要覆盖属性: default['param']['myParam'] = 'A' 所以我创建了JSON文件: { "param" : { "myParam" : "B" } } 在下一版本的cookbook中,此参数将获得新值:C。我正在从JSON数据文件中删除它,并希望使用这个新值,但Chef存储B,即使它不在JSON文件中 如何确保Chef将忽略旧属性?仅在运行Chef客户端后,您的属性将被更
-j
在chef客户端运行期间使用)?比如说,我需要覆盖属性:
default['param']['myParam'] = 'A'
所以我创建了JSON文件:
{
"param" : {
"myParam" : "B"
}
}
在下一版本的cookbook中,此参数将获得新值:C
。我正在从JSON数据文件中删除它,并希望使用这个新值,但Chef存储B
,即使它不在JSON文件中
如何确保Chef将忽略旧属性?仅在运行Chef客户端后,您的属性将被更新。因此,在节点上运行chef-client并验证属性值,然后将通过
-j
设置的属性放入normal
级别,直到清除为止。这就是为什么我们不建议使用normal
级别或-j
属性的原因。您必须使用knife node edit
等工具手动清除它们。此JSON文件是为客户端提供参数的非常灵活的方式(在没有chef服务器的情况下,仅使用chef客户端的独立cookbooks)。是否存在为客户端提供属性的其他方式?我的意思是不编辑cookbook属性-变量应该由客户设置,客户可能会忘记他正在使用Chef?这非常方便,但正如前面提到的,这意味着值会持续存在,因为一旦设置它们,Chef就不知道何时取消设置它们。如果您想要一种只需要一次就可以向Chef运行发送信息的方法,那么可以使用env vars或您自己的JSON文件,您可以在配方代码中读取并解析这些文件。如果你想要更持久但可调整的东西,就要扮演角色。长期的答案是,如果你有一个系统包装厨师,让厨师在你的烹饪书代码中阅读(通过REST或其他方式)。