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']
请让我知道我哪里错了..
因此,关于环境变量,您需要了解的一点是它们仅在一个方向(父进程到子进程)起作用,因此子命令中的 export
在 execute
资源完成后什么都不做。第二个和第三个示例都有效,第二个示例仅针对 bash
资源设置,第三个示例针对 Chef 进程及其生成的所有内容设置。请记住,您需要 运行 with with -l debug
才能查看子命令 Chef 运行s.
的输出
以上解释很有帮助。使用 chef 更新 /etc/environments 文件以确保环境变量在下一个会话中存在。还使用第三种方法使环境变量可用于当前会话。
我正在尝试使用 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']
请让我知道我哪里错了..
因此,关于环境变量,您需要了解的一点是它们仅在一个方向(父进程到子进程)起作用,因此子命令中的 export
在 execute
资源完成后什么都不做。第二个和第三个示例都有效,第二个示例仅针对 bash
资源设置,第三个示例针对 Chef 进程及其生成的所有内容设置。请记住,您需要 运行 with with -l debug
才能查看子命令 Chef 运行s.
以上解释很有帮助。使用 chef 更新 /etc/environments 文件以确保环境变量在下一个会话中存在。还使用第三种方法使环境变量可用于当前会话。