2012-11-22 44 views
1

我有這樣的片段在廚師獨奏配方爲什麼廚師在這裏抱怨候選版?

package "myserver" do 
    action :upgrade 
    source "/tmp/myserver-12.4.0-16052.noarch.rpm" 
    provider Chef::Provider::Package::Rpm 
end 

但廚師說:

INFO: Processing package[myserver] action upgrade (cbgd::default line 16) 
DEBUG: package[myserver] checking rpm status 
DEBUG: package[myserver] checking install state 
DEBUG: package[myserver] current version is 12.4.0-16050 
DEBUG: package[myserver] no candidate version - nothing to do 
INFO: Chef Run complete in 2.621177 seconds 

我期待升級經歷。一個簡單的rpm -Uvh工作正常。有任何想法嗎?

回答

2

當您從一個已知的源文件安裝一個包時,使用升級操作並沒有什麼意義。將操作更改爲:安裝。 。此外,廚師有rpm包的快捷資源,`rpm_package,所以您不需要提供線(它會自動使用它

rpm_package "myserver" do 
    action :install 
    source "/tmp/myserver-12.4.0-16052.noarch.rpm" 
end 

最後,廚師的包資源使用:在默認情況下安裝,所以你不要「T需要,要麼,其實。

rpm_package "myserver" do 
    source "/tmp/myserver-12.4.0-16052.noarch.rpm" 
end 

要設置的包名作爲節點的屬性,你可以做,在一個食譜的屬性/ default.rb,在應用到節點的作用,或節點對象本身(在配方中,或編輯廚師服務器上的節點對象)。每個位置的原因都不相同,但一般規則是:

  • 使用cookbookname /屬性/ default.rb對於可能在其他地方覆蓋「理智默認」(角色,節點),這使得很多的共享功能的系統設置
  • 使用角色屬性(有所有的網絡服務器「 webserver「角色)。
  • 直接爲特殊和獨特的雪花使用節點屬性。當然,我們不推薦雪花:-)。

要做到這一點在屬性文件:

default['myserver']['package_name'] = 'myserver-12.4.0-16052.noarch.rpm' 

然後在資源:

rpm_package "myserver" do 
    source "/tmp/#{node['myserver']['package_name']}" 
end 

Opscode Chef documentation的信息,Attribute PrecedenceAttribute Files in cookbooks。角色是Ruby DSL, or straight JSON

+0

非常感謝。我是廚師新手。你能否也請幫我介紹如何引入一個屬性代替源文件名?我想設置一個屬性rpmfile =輸出ls -1tr/tmp/myserver * | head -n 1 – ottodidakt

+1

在適當的級別設置屬性node ['myserver_location'] ='ls -1tr/tmp/myserver * | head -n 1 -'然後在提供程序中,它將源設置爲源節點['myserver_location'] – PatrickWalker

+0

要明確地在配方中將其明確設置爲節點屬性,可以通過多種方式設置屬性這個頁面會給更多的信息http://wiki.opscode.com/display/chef/Attributes – PatrickWalker

相關問題