Ansible creando un virtualenv

¿Cómo crear un virtualenv para una versión específica de python usando ansible? ¿Hay un comando en la biblioteca estándar ansible?

Me gustaría algo como:

- virtualenv: dest=venv python_version:/usr/bin/python3 

En ocasiones, he experimentado algún comportamiento errático al especificar virtualenv_command (por ejemplo: obtener un ejecutable de Python 2.7 en mi virtualenv, aunque especifiqué que ejecutaría el comando con virtualenv-3.4 .

Si experimenta ese problema, puede crear el virtualenv manualmente con el módulo de command :

 - name: Manually create the initial virtualenv command: virtualenv /user/home/venvs/myenv -p python3.4 creates="/user/home/venvs/myenv" 

(nota: especificando creates este comando solo se ejecutará en el caso de que no haya un virtualenv en /user/home/venvs/myenv ).

A continuación, puede instalar sus requisitos normalmente con el comando pip :

 - name: Install requirements pip: requirements=/my_app/requirements.txt virtualenv=/user/home/venvs/myenv 

Actualizar

Descubrí que la especificación del virtualenv_python (disponible en Ansible 2.0+) también parece funcionar en el caso mencionado anteriormente. Por ejemplo:

 - name: Install requirements pip: requirements: /my_app/requirements.txt virtualenv: /user/home/venvs/myenv virtualenv_python: python3.4 

(con esto no deberías necesitar crear manualmente el virtualenv primero)

Puedes hacerlo con el módulo pip y un binario virtualenv específico:

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

Con ansible 2.0 puedes especificar una versión de python para tu virtualenv con virtualenv_python

Por ejemplo:

 - name: Initiate virtualenv pip: virtualenv="{{ virtualenv_dir }}" virtualenv_python=python3.4 requirements={{ app_dir }}/requirements.txt