2014-04-09 4 views
10

Ich versorge eine Maschine mit ansible. Ich habe es geschafft, virtualenv und virtualenvwrapper in Ordnung auf dem vm zu installieren. Allerdings kann ich nicht scheinen, ein virtualenv auf dem VM zu erstellen.läuft mkvirtualenv mit anssible

Ich versuche

- name: create virtualenv test 
    shell: > 
    executable=/bin/zsh 
    source `which virtualenvwrapper.sh` && mkvirtualenv test 
    register: run_cmd 

und

- name: create virtualenv test 
    action: command mkvirtualenv test 

aber kein Glück mit. Irgendwelche Ideen?

Antwort

4

Die Quelle fügt der Shell, in der sie aufgerufen wird, nur virtulenvwrappers hinzu, die Sie dann sofort verlassen. In jedem Fall würde ich virtualenvwrapper dafür nicht verwenden. Rufen Sie virtualenv direkt auf.

11

Sie können eine Umgebung mit mkvirtualenv wie folgt erstellen. Ich hatte gehofft, in der Lage zu sein, die zu verwenden, aber ich fand, dass das Umschalten in einer automatisierten Sitzung nicht so bequem ist.

- name: Make a virtualenv 
    shell: . /usr/share/virtualenvwrapper/virtualenvwrapper.sh && mkvirtualenv {{ venv }} 
    args: 
    executable: /bin/bash 
    creates: "{{ venvabs }}" 
2

Zusätzlich zu @ SiggyF die ausgezeichnete Antwort, würde Ich mag hinzufügen: Im Fall, dass es scheint, dass diese ansible Aufgabe versagt, da es irgendwie mit mir geschieht, können Sie die failed_when Funktion (ansible 1.4+) verwenden:

- name: Make virtualenv 
    shell: "./usr/share/virtualenvwrapper/virtualenvwrapper.sh && mkvirtualenv {{ project }} --python={{ python }} --no-site-packages" 
    args: 
    executable: /bin/bash 
    creates: "{{ virtualenv_dir }}/{{ project }}" 
    register: mkvirtualenv 
    failed_when: 'mkvirtualenv.changed and "New python executable" not in mkvirtualenv.stdout'