2012-01-26 1 views
1

Я пытаюсь использовать шеф-повар, чтобы установить virtualenv на узле, используя opscode Python cookbook, внутри ubuntu 11.10 VM. В частности, я использую рецепты application, чтобы сделать это для Django и Gunicorn.Укажите другую версию Python для моего virtualenv с помощью шеф-повара Кулинарная книга Python

default setting для ресурса python_virtual - python2.6. Я пытаюсь указать python2.7 путем переопределения атрибутов по умолчанию в моем файле ролей, как это:

override_attributes(
    :authorization => { 
    :sudo => { 
     :users => ["vagrant"], 
     :passwordless => true 
    } 
    }, 
    :python_virtualenv => { 
    :interpreter => "python2.7" 
    } 
) 

Однако, это не работает:

[Thu, 26 Jan 2012 17:34:31 -0500] FATAL: Chef::Exceptions::ShellCommandFailed: execute[virtualenv --python=python2.6 /home/deploy/shared/env] (/srv/chef/file_store/cookbooks/python/providers/virtualenv.rb line 28) had an error: Chef::Exceptions::ShellCommandFailed: Expected process to exit with [0], but received '3' 
---- Begin output of virtualenv --python=python2.6 /home/deploy/shared/env ---- 
STDOUT: The executable python2.6 (from --python=python2.6) does not exist 

Что такое правильный синтаксис для подмены значение по умолчанию здесь?

ответ

1

Вот что я сделал, чтобы переводчик параметр от поставщика приложения :: Джанго

diff --git a/cookbooks/application_python/providers/gunicorn.rb b/cookbooks/application_python/providers/gunicorn.rb 
index 08c5925..210e508 100644 
--- a/cookbooks/application_python/providers/gunicorn.rb 
+++ b/cookbooks/application_python/providers/gunicorn.rb 
@@ -27,6 +27,7 @@ action :before_compile do 
    django_resource = new_resource.application.sub_resources.select{|res| res.type == :django}.first 
    gunicorn_install "gunicorn-#{new_resource.application.name}" do 
    virtualenv django_resource ? django_resource.virtualenv : nil 
+ interpreter django_resource.interpreter 
    end 

    if !new_resource.restart_command 
diff --git a/cookbooks/application_python/resources/django.rb b/cookbooks/application_python/resources/django.rb 
index 6429cee..b4d4b38 100644 
--- a/cookbooks/application_python/resources/django.rb 
+++ b/cookbooks/application_python/resources/django.rb 
@@ -30,7 +30,7 @@ attribute :settings_template, :kind_of => [String, NilClass], :default => nil 
attribute :local_settings_file, :kind_of => String, :default => 'local_settings.py' 
attribute :debug, :kind_of => [TrueClass, FalseClass], :default => false 
attribute :collectstatic, :kind_of => [TrueClass, FalseClass, String], :default => false 

def local_settings_base 
    local_settings_file.split(/[\\\/]/).last 
diff --git a/cookbooks/application_python/resources/gunicorn.rb b/cookbooks/application_python/resources/gunicorn.rb 
index 50d3c2b..f68c868 100644 
--- a/cookbooks/application_python/resources/gunicorn.rb 
+++ b/cookbooks/application_python/resources/gunicorn.rb 
@@ -42,3 +42,4 @@ attribute :logfile, :kind_of => String, :default => '-' 
attribute :loglevel, :kind_of => [String, Symbol], :default => :info 
attribute :proc_name, :kind_of => [String, NilClass], :default => nil 
attribute :command, :kind_of => [String, NilClass], :default => "" 
+attribute :interpreter, :kind_of => String, :default => nil 
diff --git a/cookbooks/gunicorn/providers/install.rb b/cookbooks/gunicorn/providers/install.rb 
index 19266ad..67f526c 100644 
--- a/cookbooks/gunicorn/providers/install.rb 
+++ b/cookbooks/gunicorn/providers/install.rb 
@@ -20,6 +20,7 @@ 

action :install do 
    python_virtualenv new_resource.virtualenv do 
+ interpreter new_resource.interpreter 
    action :create 
    end if new_resource.virtualenv 

diff --git a/cookbooks/gunicorn/resources/install.rb b/cookbooks/gunicorn/resources/install.rb 
index 6c7f8b6..f52fe09 100644 
--- a/cookbooks/gunicorn/resources/install.rb 
+++ b/cookbooks/gunicorn/resources/install.rb 
@@ -21,6 +21,7 @@ 
actions :install 

attribute :virtualenv, :kind_of => String, :default => nil 
+attribute :interpreter, :kind_of => String, :default => nil 

def initialize(*args) 
    super 
diff --git a/cookbooks/webplayer/recipes/default.rb b/cookbooks/webplayer/recipes/default.rb 
index 8c812ce..1981c09 100644 
--- a/cookbooks/webplayer/recipes/default.rb 
+++ b/cookbooks/webplayer/recipes/default.rb 
@@ -22,6 +22,11 @@ file "/etc/chef/deploy" do 
    :create_if_missing 
end 

+directory "/root/.ssh" do 
+ owner "root" 
+ group "root" 
+end 
+ 
file "/root/.ssh/config" do 
    owner "root" 
    group "root" 
0

Вам может понадобиться пройти полный путь к интерпретатору Python:

:interpreter => "/usr/bin/python2.7" 
1

Я уверен, что вы не можете изменить значение по умолчанию для ресурса без фактического изменения ресурса. Наверное, не тот ответ, который вы хотели. Вероятно, вам нужно будет указать свое значение переопределения, где бы вы ни использовали ресурс.