2015-04-19 11 views

Odpowiedz

2

Jeśli chcesz użyć modułu psycopg2 z virtualenv, jednym z możliwych rozwiązań byłoby

Kroki następuje:

1) Utworzony ubuntu 16,04 Vagrant maszynę i zainstalowane PostgreSQL.

2) Używane do ansibl moduł postgresql_db aby utworzyć nową bazę danych i nie powiodło się z powodu błędu FAILED! => {"changed": false, "failed": true, "msg": "the python psycopg2 module is required"}

3) Tworzenie virtualenv i zainstalować psycopg2 w virtualenv

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

4) Uruchom ansibl-playbook z ansible_python_interpreter, aby wskazać interpreter python z virtualenv, a zadanie tworzenia bazy danych powiodło się. Ansibl polecenia i zawartość są następujące

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

ansibl-PlayBook komenda

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

Korzystanie z parametru „ansible_python_interpreter” jest wielkim wskazówka. Przed zaakceptowaniem odpowiedzi: czy nie byłoby bardziej sensowne ustawienie jej w konfiguracji magazynu, jak to opisano tutaj: http://docs.ansible.com/ansible/intro_inventory.html? –

+0

@ PeterTröger Istnieje wiele sposobów określania zmiennej ansible_python_interpreter, zależy to od moich preferencji użytkownika. Jeśli chcesz stałe podejście, możesz ustawić go w ekwipunku lub jako zmienną środowiskową na poziomie gry w sekcji gospodarzy. – tux