2014-11-03 63 views
1

我已經在節點上運行sudo chef-client,並且它具有節點內的文件。但是現在我想從節點中刪除軟件包。如果我從廚師服務器刪除run_list中的recipie,它將不會從節點中刪除。如何從廚師的節點中刪除食譜

請告訴我什麼是刪除節點上的軟件包的最佳方式。

回答

2

Chef中的每個資源都有一個或多個操作。通常情況下,默認行爲是沿着installcreate行的,但它們通常也提供相反的結果。在這種情況下,您需要使用如下資源製作新配方(或更改現有的配方):

package 'foo' do 
    action :remove 
end 
0

我首先想到的將是一個卸載配方,但感覺就像是一種反模式,因爲我們只想卸載一次,真的不是我們每次運行它都會有點奇怪。

這是一個可重複的服務器定義,你可能想旋轉其他副本?如果是這樣,我會說手動刪除可能是最乾淨的,並讓您的角色定義或運行列表定義跨機器保持一致。

另一種選擇,如果你真的想它的代碼並把它在廚師在默認的食譜有指示是否應該「啓用」或「安裝」

if node['your_package']['enabled'].eql?("false") 
    uninstall_it_if_installed() 
else 
    install_it_if_missing() 
end 

我再次」它的屬性我不確定這是乾淨的還是廚師必須做的,但它可能會讓你想要去的地方。

另一種選擇是使用您希望保存爲角色「myServerType」的運行列表定義將機器吹走並重新啓動。我認爲紙是最乾淨的解決方案,但當然可能有很多原因不適合