Se si desidera utilizzare il modulo psycopg2 dal virtualenv, una possibile soluzione sarebbe
passaggi seguiti:
1) Creato un ubuntu 16.04 macchina di vagabondo e PostgreSQL installato.
2) ha utilizzato il modulo di postgresql_db ansible per creare un nuovo database e non riuscita con errore FAILED! => {"changed": false, "failed": true, "msg": "the python psycopg2 module is required"}
3) Creare un virtualenv ed installare psycopg2 in virtualenv
virtualenv venv -p /usr/bin/python (Note: python2.7)
source venv/bin/activate
pip install psycopg2
4) Eseguire ansible-playbook con ansible_python_interpreter per puntare all'interprete python dal virtualenv e l'attività di creazione del database è riuscita. Il comando ansible ei contenuti sono i seguenti,
---
- 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
Il ansible-playbook comando
ansible-playbook playbook.yml -e "ansible_python_interpreter=/home/ubuntu/venv/bin/python"
Con il parametro "ansible_python_interpreter" è un grande indizio. Prima di accettare la risposta: non avrebbe più senso impostarlo nella configurazione dello spazio pubblicitario, come descritto qui: http://docs.ansible.com/ansible/intro_inventory.html? –
@ PeterTröger Esistono diversi modi per specificare la variabile ansible_python_interpreter, a seconda delle preferenze dell'utente. Se si desidera un approccio persistente, è possibile impostarlo nell'inventario o come variabile di ambiente su un livello di riproduzione nella sezione degli host. – tux