厨师食谱 - 重新加载路径

时间:2013-06-26 07:04:11

标签: environment-variables chef chef-solo

我刚刚使用chef cookbook安装了java并为所有用户更新了PATH环境变量(将新文件添加到/etc/profile.d /)。

是否可以告诉厨师重新加载PATH变量?

当我做这样的事情时:

execute "java_check" do
  command "java -version"
end

是说无法找到java。

当我退出,再次登录然后运行厨师食谱时,它工作正常。

3 个答案:

答案 0 :(得分:2)

我不是100%确定您可以为将来的厨师运行更新PATH变量,但您可以使用environment节中的execute属性手动设置它。这也可以在其他资源上使用。请参阅:http://docs.opscode.com/chef/resources.html#execute

来自Chef Docs,

environment
A hash of environment variables: {"ENV_VARIABLE"=>"VALUE"}.
(These environment variables must exist for a command to execute successfully.)
Default value: nil.

Run a command which requires an environment variable

execute "slapadd" do
  command "slapadd < /tmp/something.ldif"
  creates "/var/lib/slapd/uid.bdb"
  action :run
  environment ({'HOME' => '/home/myhome'})
end

答案 1 :(得分:2)

我发现无法永久更新ENV变量(在厨师完成后可用),但可以更新当前厨师运行的未来命令的变量。

ruby_block  "set-env-" do
  block { ENV[variable_name] = variable_value }
  not_if { ENV[variable_name] == variable_value }
end

答案 2 :(得分:0)

execute "run_updated_bash" do
    command "bash /etc/profile.d/myscript.sh"
end

你尝试过这样的事吗?将文件放在/etc/profile.d /

后可以运行它