Я пытаюсь использовать Chef-solo для развертывания некоторого программного обеспечения в виртуальной машине Vagrant, а также для того, чтобы повторно использовать те же рецепты для развертывания на блоке Centos, работающем на EC2.
Я бы предпочел сгенерировать корневой пароль MySQL на коробке, а не включать его в скрипт загрузки. Но как я могу установить значение узла в Chef во время выполнения?
например, в приведенном ниже рецепте скрипт buildInfo.php запишет некоторые данные JSON в файл /etc/chef/serverInfo.json
который я бы затем хотел, чтобы Chef прочитал и использовал.
execute 'build_info' do
cwd node[:source_folder] + "/tools"
command "php buildInfo.php /etc/chef/serverInfo.json"
node.override.merge!(JSON.parse(File.read("/etc/chef/serverInfo.json")))
command "echo 'password is " + node["MYSQL_PASSWORD"] + "' > /tmp/chefvartest.txt"
end
Однако, похоже, что любая команда для изменения значений через node.override.
и т. д. выполняются, когда Chef-solo запускается и анализирует рецепты, а не когда рецепты фактически запускаются.
Как я могу установить значение переменной узла, например, node["MYSQL_PASSWORD"]
в одном рецепте, чтобы позже использовать его в отдельном рецепте?