【问题标题】:How to set environment variable using Chef?如何使用 Chef 设置环境变量?
【发布时间】:2013-06-30 11:12:16
【问题描述】:

有一个与此类似的问题,但无法使其正常工作: 我想简单地设置一个环境变量,然后使用它:

execute "start zookeeper" do
    cwd "/opt/zookeeper-3.4.5/bin"
    command "./zkServer.sh start"
    environment "JVMFLAGS" => "-Xmx#{heap_jvm} -Xms#{heap_jvm}"
    user "root"
    action :run
end

我也尝试过使用 bash 到 "export JVMFLAGS='-blabla'",但它仍然运行 sh 并且没有设置为变量。是否存在阻止我的 sh 脚本检查变量的问题? 我可以像模板一样使用 sh 并替换 JVMFLAGS 的出现...但我想检查是否有更好的解决方案..

【问题讨论】:

    标签: ruby chef-infra


    【解决方案1】:

    您是否尝试过在 execute 块之前通过 Ruby 设置环境变量? Chef 实际上推荐了using ENV(请参阅该页面上的注释)。

    ENV['JVMFLAGS'] = "-Xmx#{heap_jvm} -Xms#{heap_jvm}"
    

    另一种可能性是将 JVMFLAGS 添加到命令本身。

    execute "start zookeeper" do
      [...]
      command "JVMFLAGS=-Xmx#{heap_jvm} -Xms#{heap_jvm} ./zkServer.sh start"
      [...]
    end
    

    【讨论】:

    • 我试过ENV[...],但是在运行vagrant provision之后,运行export MY_ENV_VAR显示没有设置变量。
    • 不应该这样。环境变量仅为当前进程及其子进程设置。
    • 我正在寻找如何设置 system 环境变量 - stackoverflow.com/questions/6284517/…。我一直在寻找不同的答案。
    猜你喜欢
    • 2011-09-11
    • 2012-10-08
    • 1970-01-01
    • 2016-05-23
    • 2013-11-23
    • 1970-01-01
    • 2018-11-28
    • 2016-02-04
    • 2017-10-18
    相关资源
    最近更新 更多