Использование пользователя Ansible postgresql с 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 vagrant и установил 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-playbook с ansible_python_interpreter чтобы указать на интерпретатор python из virtualenv, и задача создания базы данных выполнена успешно. Команда и содержание ansible следующие,

---
- 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

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