Назад | Перейти на главную страницу

Невозможно использовать модуль postgresql_db с ansible

Целевой сервер:

-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 (кроме той, которую вы использовали для установки библиотеки).

В этом случае вы можете:

  1. исправьте версию той, в которой вы установили библиотеку (установите ansible_python_interpreter для вашего хозяина)
  2. установить библиотеку в другой версии (например, pip3 install psycopg2)

Между тем, лучшее решение для обеспечения того, чтобы требование всегда выполнялось (в правильной версии Python), - это добавить установку в вашу книгу воспроизведения непосредственно перед тем, как вы действительно используете модуль postgres:

- name: Make sure psycopg2 is installed
  pip:
    name: psycopg2
    state: present