2015-04-19 8 views

risposta

2

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" 
+0

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

+0

@ 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