从属性文件访问Chef数据包

时间:2016-05-25 10:55:43

标签: chef databags

有没有办法从default.rb属性文件中访问Chef数据包?

我的用例是我需要将一组操作系统环境变量表示为属性的哈希值,这些属性最终会传递给模板。其中一些环境变量是我存储在加密数据包中的凭据。不幸的是,Chef不允许我从属性文件中访问配方DSL,因此我通常使用的data_bag_item方法不可用。

提前致谢。

2 个答案:

答案 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)。