繁体   English   中英

如何在Chef中使用env懒洋洋地设置环境变量?

[英]How can I lazily set an environment variable using env in Chef?

我将凭证放入s3桶中,然后使用红宝石块来抓取它们。 然后我想设置一个环境变量,这样当upstart启动一个进程时它会使用这个变量。 然而,在设置属性之后运行ruby块,所以我认为使用lazy是合适的,但是我不清楚如何使用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资源仅适用于Windows,它与Linux无关。 如果要为upstart服务定义环境变量,则必须使用upstart配置,因为Chef中的环境对从upstart产生的事物没有影响。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM