我有一本厨师食谱,它安装 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 它会的。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top