Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/blackberry/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Chef infra 清除JSON文件中设置的属性_Chef Infra - Fatal编程技术网

Chef infra 清除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客户端后,您的属性将被更

如何删除JSON数据文件中的属性集(
-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或其他方式)。