Как вставить значение зашифрованного пакета данных в рецепт шеф-повара?
Я создал зашифрованное значение пакета данных, которое я пытаюсь загрузить в рецепт шеф-повара.
knife data bag show foo bar --secret_file secret.key
Encrypted data bag detected, decrypting with provided secret.
id: bar
pass: p4ssw0rd
Я пытаюсь получить значение прохода для загрузки в качестве переменной в ресурсе bash, и у меня есть encrypted_data_bag_secret в /etc/chef на клиенте (следовательно, секретный ключ не отображается, возвращаясь к расположению по умолчанию /etc/chef):
dbag = Chef::EncryptedDataBagItem.load("foo", "bar")
foo_pass = dbag["pass"]
Я также попытался использовать рецепт DSL вместо метода Chef::EncryptedDataBadItem:
dbag = data_bag_item('foo', 'bar')
foo_pass = dbag["pass"]
А затем загружаем его в ресурс bash:
bash 'install_mysql' do
code <<-EOC
...
sudo mysqladmin -u root password {foo_pass}
...
EOC
end
У меня было несколько вопросов относительно этого процесса.
i) Будет ли Chef::EncryptedDataBagItem.load устаревшим и заменен на data_bag_item; я должен использовать один поверх другого?
II) Потяну ли я dbag["pass"], используя правильные методы; Как бы я получить значение "пройти" изнутри Foo (сумка данных) => бар (элемент?)
iii) Чтобы вызвать переменную foo_pass внутри ресурса bash, я просто заключаю переменную в фигурные скобки {} или я что-то здесь упускаю?
iv) Есть ли лучший метод, чем то, что я пробую?
Я попытался добавить следующее, чтобы увидеть, смогу ли я увидеть значение переменной, напечатанное на экране при запуске клиента chef, но он не показывает мне ни текста, ни значений:
puts "foo_pass equals 1:{foo_pass} 2:#{foo_pass}'
Я занимался этим полдня и надеялся получить более опытные ответы о том, как с этим справиться.
1 ответ
- Да предпочитаю
data_bag_item
в большинстве случаев это более правильно. - Да, это правильно.
- Тебе нужно
#{foo_pass}
с ведущими#
,