Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Ansible creating a virtualenv

Tags:

python

ansible

How do you create a virtualenv for a specific python version using ansible. Is there a command in the ansible standard library?

I would like something like:

- virtualenv: dest=venv python_version:/usr/bin/python3 
like image 835
user204088 Avatar asked Oct 16 '14 10:10

user204088


People also ask

Where is Ansible CFG in Virtualenv?

ansible. cfg (in the home directory) /etc/ansible/ansible. cfg.


1 Answers

I have at times experienced some erratic behaviour with specifying virtualenv_command (e.g.: getting a python 2.7 executable in my virtualenv even though I specified to run the command with virtualenv-3.4.

If you experience that problem, you can create the virtualenv manually with the command module:

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

(note: by specifying creates this command will only run in the case that a virtualenv does not exist at /user/home/venvs/myenv).

Then you can install your requirements as normal with the pip command:

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

Update

I've found that specifying the virtualenv_python (available in Ansible 2.0+) also seems to work in the case stated above. For example:

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

(with this you shouldn't need to manually create the virtualenv first)

like image 131
toast38coza Avatar answered Oct 19 '22 10:10

toast38coza