防止Chef在Ubuntu 14.04中运行两次bash命令

时间:2016-08-19 15:12:35

标签: linux bash environment-variables chef chef-recipe

在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中运行多次?

2 个答案:

答案 0 :(得分:0)

社区食谱etc_environment可用于管理“/ etc / environment”文件。

查看其代码,您会发现它使用chef template来管理文件:

答案 1 :(得分:0)

虽然Mark指出有其他选择是正确的,但更详细的答案是你所拥有的不是“幂等”。 Chef每次运行时都会运行那段脚本,并且因为你没有对它的保护,所以反复添加相同的值。我们提供templatefile资源以幂等方式管理文件内容。