2013-10-24 53 views
3

我試圖使用由application_python食譜所提供的Django的資源:https://github.com/opscode-cookbooks/application_python使用python_application廚師的菜譜

如果按照 https://github.com/opscode-cookbooks/application_python/blob/master/examples/recipes-packaginator.rb 提供和已經宣佈MT元depends application_python的例子,我有以下錯誤:

No resource found for django. Tried application_django, application_python_django, django

於是,我就照做這裏Including a Chef LWRP from another cookbook使用「application_python_django」資源,而不僅僅是「的Django」。和我:

No resource found for application_python_django. Tried application_application_python_django, application_python_application_python_django, application_python_django

有趣的是,如果我刪除應用程序資源,只留下application_python_django資源的抱怨是:

You must supply a name when declaring a application_python_django resource

!所以它似乎找到了資源。因此,如果聲明資源名稱,配方會被執行,但是沒有任何操作會執行django資源(事實上,應用程序資源中缺少很多參數)。

啊,如果我刪除應用程序,只留下資源作爲Django的,一個也得到:

Cannot find a resource for django on ubuntu version 12.04

嗯,我相當丟失。

最初嘗試爲我的祕方是:

application 'radar_parlamentar' do 
    path  '$HOME/radar_parlamentar' 
    owner  'radar' 
    repository 'https://github.com/leonardofl/radar_parlamentar.git' 
    revision 'master' 

    django do 
    debug    true 
    collectstatic  'build_static --noinput' 
    database do 
    database 'radarparlamentar' 
     adapter 'mysql' 
     username 'radarparlamentar' 
     password 'secret' 
    end 
    end 

    gunicorn do 
    only_if { node['roles'].include? 'packaginator_application_server' } 
    app_module :django 
    port 8080 
    end 
end 

TKS, 萊昂納多

+0

請不要忘記,以紀念一個答案是正確的! :) – sethvargo

+0

hummm ...我沒有找到如何做到這一點:( 是真實的,答案幫我,但我在這條巨蟒的應用菜譜的新問題stucked ...現在我打算寫一個較低級別的配方...... –

回答

2

嘗試添加依賴於「應用」菜譜依賴於「application_python」菜譜了。

終於找到了它爲什麼這樣做。它與metadata.rb中的依賴關係有關。

要解決這個問題,您必須確保您的食譜中的依賴關係版本與依靠食譜的依賴關係不衝突。

在_application_python_食譜,被指定的依賴於應用食譜:

depends "application", "~> 3.0" 

如果你的食譜metadata.rb指定的依賴作爲

depends "application", "~> 4.0" 
depends "application_python", "~>3.0.1" 

然後廚師就不能加載應用程序 cookbook作爲應用程序衝突的依存關係。 _application_python_ cookbook中的版本要求版本大於或等於3.0且小於4.0。您的食譜中的版本要求版本大於或等於4.0且低於5.0。

如果不指定你的食譜一個版本,你仍然會得到一個衝突Berkshelf(或其他依賴管理器)將下載最新的。

所以你需要讓你的metadata.rb樣子:

depends "application", "~> 3.0" 
depends "application_python", "~>3.0.1" 

,使其工作。

這個答案也適用於那些有同樣的問題:

  • application_ruby
  • application_java

或具有從屬關係,你也有你的任何其他食譜。

+0

你在元數據文件是什麼意思? –

+0

是的,我使用application_ruby這個問題。改變依賴的順序似乎已經解決這個問題了。但是,我不知道了。我仍然有問題。您是否使用Berkshelf和/或流浪? – ukabu

+0

@LeonardoLeite剛剛更新了真正解決問題的答案。 – ukabu