2016-05-18 5 views
0

Я уже создал элемент базы данных, который существует на сервере шеф-повара.
Теперь я пытаюсь получить значение этого databag пункта в рецепте Chef
Для этого я создаю Chef Databag и пытаюсь передать секрет как атрибут:Передача секретного атрибута шеф-повара при использовании зашифрованных данных.

secret = Chef::EncryptedDataBagItem.load_secret("#{node['secret']}") 
masterkey = Chef::EncryptedDataBagItem.load("databag_secrets", "databag_masterkey", 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) ------^ 

Пожалуйста, дайте мне знать, если разрешено передавать секрет в качестве атрибута в шеф-поваре. Если да, как мне это сделать? Если нет, то как лучше всего безопасно пройти секрет?

+0

Попробуйте одинарные кавычки, вместо двойных кавычек ... –

+0

Это буквально поражает точку зашифрованных пакетов данных. Не делай этого. – coderanger

ответ

0

Согласно the documentation, #load_secret следует передать путь к файлу, содержащему секрет. Если вы не хотите, чтобы положить секрет в файле (это предпочтительный способ), вы можете передать секрет каждого #load вызова (как shown here):

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