在Chef配方中,我使用bash命令设置env变量。
for
每次运行流浪汉提供
时,都会将foo和bar写入 / etc / environment/ etc / environment 文件最终结果如下:
bash 'setup_env' do
code <<-EOH
echo #{node['foo']} | sudo tee --append /etc/environment
echo #{node['bar} | sudo tee --append /etc/environment
for line in $( cat /etc/environment ) ; do export $line ; done
EOH
end
是否有一种方法可以阻止此bash命令在Chef中运行多次?
答案 0 :(得分:0)
社区食谱etc_environment可用于管理“/ etc / environment”文件。
查看其代码,您会发现它使用chef template来管理文件:
答案 1 :(得分:0)
虽然Mark指出有其他选择是正确的,但更详细的答案是你所拥有的不是“幂等”。 Chef每次运行时都会运行那段脚本,并且因为你没有对它的保护,所以反复添加相同的值。我们提供template
和file
资源以幂等方式管理文件内容。