Укажите другую версию Python для моего virtualenv, используя поваренную книгу шеф-повара Python. - PullRequest
1 голос
/ 27 января 2012

Я пытаюсь использовать Chef для установки virtualenv на узле, используя поваренную книгу Python opscode внутри виртуальной машины ubuntu 11.10. В частности, я использую рецепты application , чтобы сделать это для Django и Gunicorn.

Значение по умолчанию для ресурса 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

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

Ответы [ 3 ]

1 голос
/ 22 марта 2012

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

1 голос
/ 25 марта 2013

Вот что я сделал, чтобы сделать интерпретатор параметром из приложения :: провайдер django

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 голосов
/ 27 января 2012

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

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