使用加密数据包时将机密作为 Chef 属性传递

Passing secret as an Chef attribute while using encrypted databags

我已经创建了一个存在于 Chef 服务器上的数据包项。
现在,我正在尝试检索 Chef recipe
中该数据包项的值 为此,我正在创建 Chef Databag 并尝试将秘密作为属性传递:

secret = Chef::EncryptedDataBagItem.load_secret("#{node['secret']}")
masterkey = Chef::EncryptedDataBagItem.load("databag_secrets", "databag_masterkey", secret)

我在属性部分声明了节点['secret']如下:

default['secret']="lTW4d+2Wfjlf1gZ42x3qsJh4/GcwqTc5+kS62qKeAHrhzTiL/Bxp+hq3itwudNfUFggCOEaMTsR+Q/qgjx6unKNvKWMKIdCeNM8I4jCUeT2VDaU6C1VxIMrVqfpUmInLuHOaUpVdlnlejkeLBL2KzH5vA8Xx5t2eACBRvrHacTwORMgVr/pnSKBcSzC/wXGoc7bGk7kTd6SaswRfZHnOowxfs2xkGJOFbzyTLZNAqkrJJurBq/ycYGRK2J3ycNyTwISfVgG9YAvP6prHKPsWTp3JgOWNIeZ9ZMSKUy8Lh0vopluXJhSd1WC6ltNcHxSb"

我收到以下错误:

ERROR: FFI_Yajl::ParseError: lexical error: invalid character inside string.
          S62qKeAHrhzTiL/Bxp+hq3itwudNfU
                                        FggCOEaMTsR+Q/qgjx6
                     (right here) ------^

请告诉我是否允许在 Chef 中将机密作为属性传递。如果是,我应该怎么做? 如果不是,以安全方式传递秘密的最佳方式是什么?

根据the documentation, #load_secret should be passed a path to a file containing the secret. If you don't want to put the secret in a file (this is the preferred way), you can pass the secret to every #load call (as shown here):

Chef::EncryptedDataBagItem.load(data_bag, name, secret = nil)