Chef infra Chef:从shell环境变量读取属性值
我正在尝试读取chef cookbook属性文件中环境变量的值。许多帖子都描述了我可以使用ruby的ENV[]来实现我想要的 我的属性文件如下所示Chef infra Chef:从shell环境变量读取属性值,chef-infra,cookbook,Chef Infra,Cookbook,我正在尝试读取chef cookbook属性文件中环境变量的值。许多帖子都描述了我可以使用ruby的ENV[]来实现我想要的 我的属性文件如下所示 default['some_object']['some_attribute'] = ENV['SOME_ENV_VAR'] 运行recipe时,它似乎会导致空字符串。有任何指针吗?假设您所描述的方法是正确的(事实并非如此),请注意,您需要在执行chef client的节点上设置环境变量 chef-client执行分为几个阶段: 编译阶段:按照扩
default['some_object']['some_attribute'] = ENV['SOME_ENV_VAR']
运行recipe时,它似乎会导致空字符串。有任何指针吗?假设您所描述的方法是正确的(事实并非如此),请注意,您需要在执行
chef client
的节点上设置环境变量
chef-client
执行分为几个阶段:
- 编译阶段:按照扩展运行列表指定的顺序加载所有配方
- 收敛阶段:每个资源按照运行列表确定的顺序执行,然后按照每个配方中列出的每个资源的顺序执行。。。每个操作配置系统的特定部分
ENV['SOME_ENV_VAR']
在编译阶段进行。您真正应该做的是使用:
您可以通过在chef client中包含(我强烈建议您访问文档,因为它包含示例)来提供自定义属性
-j路径,--json属性路径
包含JSON数据的文件的路径。用于设置第一次客户端运行。对于使用选项-i的所有未来运行,这些属性都应持久保存在chef服务器中
您可以始终使用为您设置的环境变量来构造json结构,然后在执行时将其提供给chef client。其他一些进程已经在为我设置env var,因此我希望使用这种方法。如果我这样做有什么不对?