题
我有一本厨师食谱,它安装 nginx 并安装自定义 nginx.conf 文件。它与 Opscode 上的说明书基本相同,并使用 Cookbook_file 来安装文件。
如果我对 conf 文件进行更改,然后使用 Chef 重新运行说明书,则配置文件不会更新。这看起来像是一个错误——我做错了什么吗?
解决方案
在厨师中,配方中的命令顺序是执行顺序。如果将生成的
template
保存为nginx.conf
,它会在您的cookbook_file
命令后,生成的模板将覆盖您的文件。
e.g。
# 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
将覆盖由cookbook_file
奠定的文件。
其他提示
在测试中我发现如果你有 :create_if_missing
如果内容发生更改,则设置不会更新文件。放 :create
它会的。
不隶属于 StackOverflow