web-dev-qa-db-fra.com

Ansible créer un virtualenv

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
51
user204088

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)

63
toast38coza

Vous pouvez le faire avec le module pip et un binaire virtualenv spécifique:

- pip: virtualenv=/path/to/venv virtualenv_command=/path/to/virtualenv3 ...
14
Schnouki

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
8
Tristan