Укажите версию Python virtualenv, используя поваренную книгу Chef's application_python.

Я использую поваренную книгу application_python от Opscode и пытаюсь развернуть приложение Django. Мне нужно использовать Python 2.7 для этого проекта, но похоже, что создание virtualenv выполняется с python2.6 по умолчанию, который я не планирую устанавливать в системе. Поэтому я получаю следующую ошибку при запуске chef-client:

[Fri, 08 Jun 2012 16:55:35 +0000] FATAL: Mixlib::ShellOut::ShellCommandFailed: execute[virtualenv --python=python2.6 /opt/apps/trippingbear/shared/env] (/var/chef/cache/cookbooks/python/providers/virtualenv.rb line 28) had an error: Mixlib::ShellOut::ShellCommandFailed: Expected process to exit with [0], but received '3'
---- Begin output of virtualenv --python=python2.6 /opt/apps/trippingbear/shared/env ----
STDOUT: The executable python2.6 (from --python=python2.6) does not exist
STDERR: 
---- End output of virtualenv --python=python2.6 /opt/apps/trippingbear/shared/env ----
Ran virtualenv --python=python2.6 /opt/apps/trippingbear/shared/env returned 3

Я довольно (чрезвычайно) новичок в Chef и не знаю, как это изменить. По умолчанию, кажется, установлен с attribute :interpreter, :default => 'python2.6' в cookbooks/python/resources/virtualenv.rb, Я попытался установить значения по умолчанию на моем узле и в среде следующим образом, но безуспешно:

default_attributes(
  "python" => {
    "virtualenv" => {
      "interpreter" => "python2.7"
    }
  }
)

Я уверен, что это настраивается, но я не могу понять, как это сделать. Что я настраиваю неправильно?

1 ответ

Решение

Я всегда создаю свой virtualenv в своих рецептах развертывания в явном виде, а затем обращаюсь к нему по мере необходимости. Например:

venv_dir = node['some_identifier']['virtualenv_dir']

python_virtualenv venv_dir do
    interpreter "python"            # use system default python, not 2.6
    action :create
end 

python_pip "django" do
    version "1.4"
    action :install
    virtualenv venv_dir
end

Очевидно, что это использование python_virtualenv ресурс из кулинарной книги Python, поэтому кулинарная книга Python должна быть указана как зависимость в вашей кулинарной книге.

Другие вопросы по тегам