차이를 알고 싶어하고 node.run_state차이는
test.rb
dbpassword=''
ruby_block "load_databag_secret" do
block do
secret_key = Chef::EncryptedDataBagItem.load_secret("/home/test/db_key")
db_keys = Chef::EncryptedDataBagItem.load("mydatabag", "mydatabagitem", secret_key)
end
dbpassword=db_keys['DB_PASSWORD']
node.run_state['password']=db_keys['DB_PASSWORD']
end
end
execute "Enable on hosts" do
command lazy { "echo #{node.run_state['password']} > /home/app/db.txt" }
end
template "/config/properties" do
source "properties.erb"
variables(lazy {
:db_password => { node.run_state['password'] },
})
대 글로벌 변수 사이에 사용하는 방법을 권장 것 또는 .rb 파일의 전역 변수 대신 node.run_state [ 'password']를 사용하십시오.
이제 실행 된 명령을 실행하면 에코 된 파일 db.txt의 암호를 볼 수 있습니다. 여기서 템플릿으로 지연을 사용할 때 바리 아 템플릿의 db_password에 빈 값으로 출력됩니다.
메신저는 node.runstate ..를 사용하는 것이 긍정적입니다.하지만 루비 블록 밖에서 어떻게 node.runstate를 사용할 수 있는지 알려주시겠습니까? 템플릿에 없다는 것을 의미합니다. 내 질문을 업데이트했습니다. – shiv455
실행 리소스가 외부 명령을 실행하기 때문에 네가 뭘하려고하는지조차 모르겠다. – coderanger
업데이트 된 질문 – shiv455