Chef 未创建环境变量

Environment variables not getting created by Chef

我正在尝试使用 chef 在 rhel 机器中创建一些新的环境变量。

该块成功执行,但在尝试回显该值时,我得到了黑色结果。

脚本 1:

execute 'JAVA_HOME' do
      command 'export JAVA_HOME='+node['java']['home']
    end

脚本 2:

bash 'env_test' do
      code <<-EOF
      echo $chef
    EOF
      environment ({ 'chef' => 'chef' })
    end

也试了一下文档中提到的:

ENV['LIBRARY_PATH'] = node['my']['lib']

请让我知道我哪里错了..

因此,关于环境变量,您需要了解的一点是它们仅在一个方向(父进程到子进程)起作用,因此子命令中的 exportexecute 资源完成后什么都不做。第二个和第三个示例都有效,第二个示例仅针对 bash 资源设置,第三个示例针对 Chef 进程及其生成的所有内容设置。请记住,您需要 运行 with with -l debug 才能查看子命令 Chef 运行s.

的输出

以上解释很有帮助。使用 chef 更新 /etc/environments 文件以确保环境变量在下一个会话中存在。还使用第三种方法使环境变量可用于当前会话。