2011-05-22 115 views
3

我有一個廚師食譜,它安裝nginx並安裝一個自定義的nginx.conf文件。它基本上與Opscode相同,並使用cookbook_file來安裝該文件。廚師更新配置文件

如果我更改了conf文件,然後使用chef重新運行cookbook,配置文件沒有更新。這看起來像一個錯誤 - 我做錯了什麼?

+3

您使用的是「廚師客戶端」還是「廚師獨奏」?如果「廚師 - 客戶端」,您是否已經用'knife cookbook upload'將新烹飪書上傳到廚師服務器? – 2011-05-23 13:30:23

回答

7

廚師認爲配方中的命令順序是執行順序。如果將template保留爲nginx.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規定的文件。

+0

這個答案是專注和完美的。 – 2013-02-10 19:29:56

1

在測試中,我發現如果您有:create_if_missing設置,它將不更新文件,如果它的內容已更改。設置:create它會。