Chef::EncryptedDataBagItem.load方法使用

Chef::EncryptedDataBagItem.load method use

我尝试使用包装器 Chef 配方从加密数据包中读取 Datadog API 密钥并覆盖节点默认属性。我在这里的困惑是 Chef::EncryptedDataBagItem.load 方法的使用。我创建了一个名为 datadog 的加密包,里面有一个项目 datadog_keys。我想从这个数据包项目中获取 api 密钥和应用程序密钥。所以我正在使用:

node.default['datadog']['api_key'] = Chef::EncryptedDataBagItem.load("datadog", "api_key")
node.default['datadog']['application_key'] = Chef::EncryptedDataBagItem.load("datadog", "chef")

我的问题,这个用法是正确的还是我应该使用:

Chef::EncryptedDataBagItem.load("datadog_keys", "api_key")

Chef::EncryptedDataBagItem.load("datadog::datadog_keys", "api_key")

都不是,我想你想要这样的东西:

api_key = data_bag_item('datadog', 'datadog_keys')['api_key']
                        ^ bag name ^ item name    ^ accessing something from the item hash

像这样将密钥放入节点属性中也是非常不安全的,并且有点破坏了加密包的意义,因为节点属性都被写回 Chef 服务器,因此密钥将以未加密的方式发送。