Ansibleを使用して特定のpythonバージョンのvirtualenvを作成するにはどうすればよいですか。ansible標準ライブラリにコマンドはありますか?
私は次のようなものが欲しいです:
- virtualenv: dest=venv python_version:/usr/bin/python3
virtualenv_command
を指定すると、ときどき不規則な動作が発生します(例:virtualenv-3.4
を指定してコマンドを実行するよう指定したにもかかわらず、virtualenvでpython 2.7実行可能ファイルを取得します。
その問題が発生した場合、cancommand
モジュールを使用してvirtualenvを手動で作成できます。
- name: Manually create the initial virtualenv
command: virtualenv /user/home/venvs/myenv -p python3.4 creates="/user/home/venvs/myenv"
(注:creates
を指定すると、このコマンドはvirtualenvが/user/home/venvs/myenv
に存在しない場合にのみ実行されます)。
次に、pip
コマンドを使用して、通常どおり要件をインストールできます。
- name: Install requirements
pip:
requirements=/my_app/requirements.txt
virtualenv=/user/home/venvs/myenv
更新
virtualenv_python
(Ansible 2.0+で利用可能)を指定することも、上記の場合に機能するようだとわかりました。例えば:
- name: Install requirements
pip:
requirements: /my_app/requirements.txt
virtualenv: /user/home/venvs/myenv
virtualenv_python: python3.4
(これにより、最初に手動でvirtualenvを作成する必要はありません)
pip
モジュールと特定のvirtualenv
バイナリでそれを行うことができます:
- pip: virtualenv=/path/to/venv virtualenv_command=/path/to/virtualenv3 ...
Ansible 2.0では、virtualenv_python
を使用してvirtualenvのpythonバージョンを指定できます
例えば:
- name: Initiate virtualenv
pip: virtualenv="{{ virtualenv_dir }}"
virtualenv_python=python3.4
requirements={{ app_dir }}/requirements.txt