Chef-solo를 사용하여 Vagrant VM 내부에 일부 소프트웨어를 배포하고 동일한 요리법을 다시 사용하여 EC2에서 실행되는 Centos 상자에 배포 할 수있게하려고합니다.
부팅 스크립트에 포함시키지 말고 상자에 루트 MySQL 암호를 생성하는 것을 선호합니다. 하지만 런타임에 Chef에서 노드 값을 설정하려면 어떻게해야합니까?
예 : 아래의 레서피에서 스크립트 buildInfo.php는 파일에 JSON 데이터를 씁니다. /etc/chef/serverInfo.json
나는 요리사가 읽고 사용하기를 바랄 것입니다.
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"]
하나의 레시피에서 나중에 별도의 레시피에 사용 되나요?