Opscodeの application_python クックブックを使用していて、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"
}
}
)
これは設定可能だと確信していますが、その方法がわかりません。何を間違って設定していますか?
私は常にデプロイメントレシピでvirtualenvを明示的に作成し、必要に応じてその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クックブックからpython_virtualenv
リソースを使用しているため、pythonクックブックを依存関係としてリストする必要があります。クックブック。