2014-04-09 26 views
10

Dostarczam maszynę za pomocą ansible. Udało mi się zainstalować virtualenv i virtualenvwrapper fine na vm. Jednak nie mogę utworzyć virtualenv na vm.Uruchamianie mkvirtualenv przy użyciu ansible

Staram użyciu

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

i

- name: create virtualenv test 
    action: command mkvirtualenv test 

ale bez powodzenia. Jakieś pomysły?

Odpowiedz

4

Źródło tylko dodaje virtualenvwrappers do powłoki, do której jest wywoływane, a następnie natychmiast wychodzi. W każdym razie nie używałbym do tego programu virtualenvwrapper. Wywołaj bezpośrednio: virtualenv.

11

Możesz stworzyć środowisko, używając mkvirtualenv w ten sposób. Miałem nadzieję, że będę mógł korzystać z toggleglobalsitepackages, ale odkryłem, że przełączanie nie jest tak wygodne w zautomatyzowanej sesji.

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

Dodatkowo do użytkownika @ SiggyF doskonałą odpowiedź, chciałbym dodać: W przypadku, gdy okaże się, że ten ansibl zadanie nie powiedzie się, jak to się dzieje w jakiś sposób ze mną, można użyć failed_when funkcji (ansibl 1.4+):

- 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' 
Powiązane problemy