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