Запуск виртуальной среды

Я пытаюсь запустить виртуальную среду в Ansible.

Это постоянно ошибка.

Вот код:

- name: Install virtualenv
  pip: name=virtualenv
  when: virtualenvexists.stat.exists != true

- name: Create virtualenv
  sudo: true
  command: virtualenv /home/vagrant/db/venv

- name: Activate
  sudo: yes
  sudo_user: vagrant
  command: /home/vagrant/db/venv/bin/source /home/vagrant/db/venv/bin/activate

Я получаю сообщение об ошибке:

{ "ЦМД": "/ дом / - Имя : ansible_python_interpreter set_fact : ansible_python_interpreter : / дома / бродяга / дб / venv / бен / питон / дб / venv / rootactivate", "не": правда, "гс": 13} тзд : [Errno 13] Разрешение отклонено

Я попытался запустить это - имя : Создать virtualenv Sudo : истинную команду : virtualenv / дома / бродяга / дб / venv , как несколько пользователей, и я также пытаюсь выяснить , как автоматически запускать команды из виртуального экземпляра без активации , и мне не повезло.

Как выполнять команды внутри виртуальной среды в Ansible?

Я тоже пробовал это без везения:

vagrant

python,ansible,virtual-environment,

3

Ответов: 2


3

Здесь есть ряд проблем. Во-первых, вы создаете виртуальную среду как :- name: Activate sudo: yes sudo_user: vagrant command: /home/vagrant/db/venv/bin/source /home/vagrant/db/venv/bin/activate

sudo_user: vagrant

Но вы пытаетесь получить к нему доступ как vagrantпользователь:

source

Скорее всего, вы захотите /home/vagrant/db/venv/bin/sourceпо обеим задачам.

Во-вторых, commandкоманда - это встроенная оболочка, вы ее не найдете . Так что эта команда просто не имеет смысла.command: /home/vagrant/db/venv/bin/somecommand

И, наконец, даже если это было иметь смысл, это не будет иметь никакого практического эффекта: Это было бы изменить окружение commandмодуля, но не будет иметь никакого влияния на последующих задачах. Есть несколько способов борьбы с этим; если вы просто пытаетесь запустить команду, установленную в вашей виртуальной среде, вы можете запустить ее напрямую:

shell:
  cmd: |
    source /home/vagrant/db/venv/bin/activate
    do_stuff_here

Это правильно использует версию Python, установленную в вашей виртуальной среде. Кроме того, вы можете встроить все в сценарий оболочки:

~/.synapse

Обновить

Для тех "это не работает!" комментаторы, я представляю вам ... примерный пример !


0

Возьмем следующий пример установки синапса в виртуальной среде, находящейся при pipвыполнении этого модуля.- pip: name: 'https://github.com/matrix-org/synapse/tarball/master' virtualenv: ~/.synapse virtualenv_site_packages: yes virtualenv_python: python2.7

chdir

Затем запустите команду во вновь созданной виртуальной среде. Используйте command:аргумент и убедитесь , предварять bin/сbin/

- command: bin/python -m synapse.app.homeserver --server-name {{ matrix_hostname }}
--config-path homeserver.yaml --generate-config --report-stats=yes
  args:
    chdir: ~/.synapse
    creates: homeserver.yaml
питон, анзибль, виртуальная среда,
Похожие вопросы