Запуск mkvirtualenv с использованием доступного

Я предоставляю машину, использующую возможность использования. Мне удалось установить virtualenv и virtualenvwrapper на vm. Тем не менее, я не могу создать virtualenv на vm.

Я пытаюсь использовать

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

и

- name: create virtualenv test
  action: command mkvirtualenv test

но не повезло. Любые идеи?

Ответ 1

Источник только добавляет virtualenvwrappers к вызываемой оболочке, после чего вы немедленно выходите. В любом случае, я бы не использовал virtualenvwrapper для этого. Вызовите virtualenv напрямую.

Ответ 2

Вы можете создать среду, использующую mkvirtualenv, как это. Я надеялся, что смогу использовать toggleglobalsitepackages, но я обнаружил, что переключение не очень удобно в автоматическом сеансе.

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

Ответ 3

В дополнение к отличному ответу @SiggyF, я хотел бы добавить: В случае, если окажется, что эта непонятная задача не удалась, поскольку это происходит со мной, вы можете использовать функцию failed_when (возможно, 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'