Целевой сервер:
-bash-4.2$ python -V
Python 2.7.5
-bash-4.2$ pip list | grep psycopg2
psycopg2 (2.8.3)
Но если запустить ansible playbook с этой задачей, произойдет сбой:
- name: Create repmgr database
postgresql_db:
name: repmgr
become: true
become_user: postgres
Ошибка:
TASK [db : Create repmgr database] ***************************************************************************
fatal: [192.168.0.1]: FAILED! => {"changed": false, "msg": "Failed to import the required Python library (psycopg2) on db's Python /usr/bin/python. Please read module documentation and install in the appropriate location. If the required library is installed, but Ansible is using the wrong Python interpreter, please consult the documentation on ansible_python_interpreter"}
Почему нельзя импортировать psycopg2
?
Вы должны убедиться, что автообнаружение python или фиксированный ansible_python_interpreter
поскольку ваш конкретный хост не указывает на другую версию python (кроме той, которую вы использовали для установки библиотеки).
В этом случае вы можете:
ansible_python_interpreter
для вашего хозяина)pip3 install psycopg2
)Между тем, лучшее решение для обеспечения того, чтобы требование всегда выполнялось (в правильной версии Python), - это добавить установку в вашу книгу воспроизведения непосредственно перед тем, как вы действительно используете модуль postgres:
- name: Make sure psycopg2 is installed
pip:
name: psycopg2
state: present