我把證書放入s3存儲桶中,我使用紅寶石塊來抓取它們。然後我想設置一個環境變量,當新貴啓動一個進程時,它使用這個變量。然而,紅寶石塊運行後屬性設置,所以我認爲使用lazy
將是適當的,但我不清楚如何設置env
使用lazy
。如何在廚師中使用env懶惰地設置環境變量?
難道是這樣的:
ruby_block "get-credentials" do
block do
Chef::Log.info 'Getting sdk.'
require 'aws-sdk'
Chef::Log.info 'Getting making aws s3 instance.'
s3 = AWS::S3.new
Chef::Log.info 'Getting credentials from s3.'
bar = s3.buckets['bucket-name'].objects['bar'].read
Chef::Log.info 'Got bar with length #{bar.length}'
node.set['foo']['bar'] = bar
end
action :run
end
env lazy BAR=node.set['foo']['bar']
service 'foo' do
provider Chef::Provider::Service::Upstart
action [ :enable, :start ]
end
我不知道。我仍在瀏覽文檔和試驗,但也許有人知道。扭轉測試不同變化的過程需要很長時間。
爲什麼不在塊內設置'env BAR = bar' –