Как вы создаете virtualenv для конкретной версии python, используя ansible. Есть ли команда в стандартной библиотеке?
Мне хотелось бы что-то вроде:
- virtualenv: dest=venv python_version:/usr/bin/python3
Как вы создаете virtualenv для конкретной версии python, используя ansible. Есть ли команда в стандартной библиотеке?
Мне хотелось бы что-то вроде:
- virtualenv: dest=venv python_version:/usr/bin/python3
Я иногда испытывал некоторое неустойчивое поведение при указании virtualenv_command
(например: получение исполняемого файла python 2.7 в моем виртуальном пространстве, даже если я указал для запуска команды с virtualenv-3.4
.
Если у вас возникла эта проблема, вы можете создать virtualenv вручную с помощью модуля command
:
- 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
(с этим вам не нужно вручную создавать виртуальную машину)
Вы можете сделать это с помощью pip
и конкретного virtualenv
двоичного файла:
- pip: virtualenv=/path/to/venv virtualenv_command=/path/to/virtualenv3 ...
С помощью ansible 2.0 вы можете указать версию python для своего виртуального пользователя с помощью virtualenv_python
Например:
- name: Initiate virtualenv
pip: virtualenv="{{ virtualenv_dir }}"
virtualenv_python=python3.4
requirements={{ app_dir }}/requirements.txt