Использование Ansible postgresql_user с psycopg2 от VirtualEnv

Модуль Ansible postgresql_user требует рабочей установки psycopg2:

http://docs.ansible.com/postgresql_user_module.html

Если это установлено в VirtualEnv на сервере, как можно найти модуль Ansible?

Другие модули Ansible, похоже, имеют явную поддержку VirtualEnv, так что это просто недостающая функция?

Ответ 1

Если вы хотите использовать модуль psycopg2 из virtualenv, одним из возможных решений будет

Шаги:

1) Создал ubuntu 16.04 бродягу и установил postgresql.

2) Используется модуль ansible postgresql_db для создания новой базы данных и с ошибкой FAILED! => {"changed": false, "failed": true, "msg": "the python psycopg2 module is required"}

3) Создайте virtualenv и установите psycopg2 в virtualenv

virtualenv venv -p /usr/bin/python (Note: python2.7)
source venv/bin/activate
pip install psycopg2

4) Запустите загрузочную книгу с ansible_python_interpreter, чтобы указать на интерпретатор python из virtualenv, и задача создания базы данных выполнена успешно. Описанная команда и содержимое таковы,

---
- hosts: vagrant
  sudo: true

  pre_tasks:
     - raw: test -e /usr/bin/python || (apt -y update && apt install -y python-minimal)
     - setup:

  tasks:
    - name: db create
      postgresql_db:
        name: acme
      become_user: postgres

Команда с файлами без записи

ansible-playbook playbook.yml -e "ansible_python_interpreter=/home/ubuntu/venv/bin/python"