我正在尝试使用chef在rhel机器中创建一些新的env变量。
块成功执行,但在尝试回显该值时,我得到黑色结果。
脚本-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']
请告诉我这里哪里出错..
答案 0 :(得分:0)
因此,您需要了解的有关环境变量的事情是它们只能在一个方向上工作(子进程的父进程),因此子命令中的export
在execute
资源完成后不执行任何操作。第二个和第三个例子都可以使用,第二个和第三个例子只用于bash
资源,第三个用于Chef进程和它生成的所有内容。请记住,您需要与-l debug
一起运行才能看到子命令Chef运行的输出。
答案 1 :(得分:0)
以上说明非常有用。使用chef更新/ etc / environments文件以确保下一个会话中存在env变量。还使用第3种方法使env变量可用于当前会话。