我有一个厨师食谱,可以安装nginx并安装自定义的nginx.conf文件。它与Opscode基本相同,并使用cookbook_file来安装文件。
如果我对conf文件进行了更改,则使用chef重新运行cookbook,配置文件不会更新。这似乎是一个错误 - 我做错了吗?
答案 0 :(得分:7)
在厨师中,食谱中的命令顺序是执行顺序。如果您保留template
的{{1}}并且它位于nginx.conf
命令之后,则生成的模板将覆盖您的文件。
e.g。
cookbook_file
# cookbook file
cookbook_file "#{node[:nginx][:dir]}/nginx.conf" do
source "my_nginx.conf"
mode 0644
owner "root"
group "root"
end
# template
template "nginx.conf" do
path "#{node[:nginx][:dir]}/nginx.conf"
source "nginx.conf.erb"
owner "root"
group "root"
mode 0644
notifies :reload, "service[nginx]"
end
会覆盖template
。
答案 1 :(得分:1)
在测试中,我发现如果你设置:create_if_missing
,如果内容已经改变,它将不会更新文件。设置:create
即可。