Comment créer un virtualenv pour une version spécifique de python en utilisant ansible. Existe-t-il une commande dans la bibliothèque standard ansible?
Je voudrais quelque chose comme:
- virtualenv: dest=venv python_version:/usr/bin/python3
J'ai parfois eu un comportement erratique en spécifiant virtualenv_command
(exemple: obtenir un exécutable python 2.7 dans mon virtualenv même si j’ai spécifié d’exécuter la commande avec virtualenv-3.4
.
Si vous rencontrez ce problème, vous pouvez créer manuellement virtualenv avec le module command
:
- name: Manually create the initial virtualenv
command: virtualenv /user/home/venvs/myenv -p python3.4 creates="/user/home/venvs/myenv"
(note: en spécifiant creates
, cette commande ne sera exécutée que dans le cas où virtualenv n’existerait pas à /user/home/venvs/myenv
).
Vous pouvez ensuite installer vos besoins normalement avec la commande pip
:
- name: Install requirements
pip:
requirements=/my_app/requirements.txt
virtualenv=/user/home/venvs/myenv
Mise à jour
J'ai trouvé que spécifiant le virtualenv_python
(disponible dans Ansible 2.0+) semble également fonctionner dans le cas mentionné ci-dessus. Par exemple:
- name: Install requirements
pip:
requirements: /my_app/requirements.txt
virtualenv: /user/home/venvs/myenv
virtualenv_python: python3.4
(avec cela, vous ne devriez pas avoir besoin de créer manuellement virtualenv d’abord)
Vous pouvez le faire avec le module pip
et un binaire virtualenv
spécifique:
- pip: virtualenv=/path/to/venv virtualenv_command=/path/to/virtualenv3 ...
Avec ansible 2.0, vous pouvez spécifier une version python pour votre virtualenv avec virtualenv_python
Par exemple:
- name: Initiate virtualenv
pip: virtualenv="{{ virtualenv_dir }}"
virtualenv_python=python3.4
requirements={{ app_dir }}/requirements.txt