3

我有一本安装 nginx 并安装自定义 nginx.conf 文件的厨师食谱。它在 Opscode 上基本上是相同的说明书,并使用 cookbook_file 来安装文件。

如果我对 conf 文件进行更改,然后使用 chef 重新运行说明书,则配置文件不会更新。这似乎是一个错误——我做错了什么吗?

4

2 回答 2

7

在 chef 中,recipe 中的命令顺序就是执行顺序。如果您保留templatefornginx.conf并且它出现在您的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覆盖由cookbook_file.

于 2012-04-24T14:13:30.113 回答
1

在测试中我发现如果你:create_if_missing设置了它,如果它的内容发生了变化,它不会更新文件。设置:create它会的。

于 2014-04-28T15:27:08.893 回答