有没有办法从default.rb
属性文件中访问 Chef 数据包?
我的用例是我需要将操作系统环境变量的集合表示为最终传递给模板的属性散列。其中一些环境变量是我存储在加密数据包中的凭据。不幸的是,Chef 不允许我从属性文件中访问配方 DSL,因此data_bag_item
我通常使用的方法不可用。
提前致谢。
有没有办法从default.rb
属性文件中访问 Chef 数据包?
我的用例是我需要将操作系统环境变量的集合表示为最终传递给模板的属性散列。其中一些环境变量是我存储在加密数据包中的凭据。不幸的是,Chef 不允许我从属性文件中访问配方 DSL,因此data_bag_item
我通常使用的方法不可用。
提前致谢。
为什么不能从数据包中设置配方中的属性,并按预期使用。通常,我会在attributes/default.rb
相同的值中设置一个默认值,以防数据包在运行时不存在。
在属性文件中:
default['cookbook_name']['secret_value'] = '__UNDEFINED__'
然后在配方中填写并按预期引用属性:
node.default['cookbook_name']['secret_value'] = data_bag_item('something', 'else')
属性文件用作存储属性的位置。一旦配方被编译,最终结果将被安排运行。那时价值从何而来并不重要。
您不能使用 DSL 助手,但您可以直接使用Chef::DataBagItem.load
自己。检查 Chef 代码以了解如何使用它(我们不记录这些 API AFAIK)。