Я создал зашифрованное значение пакета данных, которое пытаюсь загрузить в рецепт шеф-повара.
knife data bag show foo bar --secret_file secret.key
Encrypted data bag detected, decrypting with provided secret.
id: bar
pass: p4ssw0rd
Я пытаюсь получить значение прохода для загрузки в качестве переменной в ресурсе bash и иметь зашифрованный_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"] с помощью правильных методов; как мне получить значение 'pass' изнутри foo (бага данных) => bar (item?)
iii) Чтобы вызвать переменную foo_pass внутри ресурса bash, я просто инкапсулирую переменную в фигурные скобки {} , или я что-то упустил?
iv) Есть ли лучший метод, чем тот, который я испытываю?
Я попытался добавить следующее, чтобы увидеть, могу ли я увидеть значение переменной, напечатанное на экране при запуске шеф-клиента, но он не показывает мне ни текста, ни значений:
puts "foo_pass equals 1:{foo_pass} 2:#{foo_pass}'
Я занимался этим полдня и надеялся получить более опытные ответы о том, как с этим справиться.
dbag
media1.giphy.com/media/TpFvrFrtm5BiU/giphy.gif - person lacostenycoder   schedule 05.04.2018