我已经创建了一个存在于厨师服务器上的数据库项目 现在,我正在尝试在Chef recipe中检索该数据库项的值 为此,我正在创建Chef Databag并尝试将秘密作为属性传递:
secret = Chef::EncryptedDataBagItem.load_secret("#{node['secret']}")
masterkey = Chef::EncryptedDataBagItem.load("databag_secrets", "databag_masterkey", secret)
我在属性部分中声明了node ['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中的属性传递,请告诉我。如果是的话,我该怎么做? 如果没有,以安全的方式传递秘密的最佳方式是什么?
答案 0 :(得分:0)
根据the documentation,#load_secret
应该传递给包含秘密的文件的路径。如果您不想将秘密放入文件中(这是首选方式),您可以将密码传递给每个#load
来电(shown here):
Chef::EncryptedDataBagItem.load(data_bag, name, secret = nil)