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 服务器,因此密钥将以未加密的方式发送。
我尝试使用包装器 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 服务器,因此密钥将以未加密的方式发送。