Использование пользователя 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"