Postgresql

不能將 postgresql_db 模組與 ansible 一起使用

  • December 24, 2019

目標伺服器:

-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(而不是你用來安裝 lib 的那個)。

如果是這種情況,您可以:

  1. 將版本修復為您安裝庫的版本(ansible_python_interpreter為您的主機設置)
  2. 在其他版本中安裝庫(例如pip3 install psycopg2

同時,確保始終滿足要求的最佳解決方案(在正確的 python 版本中)是在您實際使用 postgres 模組之前將安裝添加到您的劇本中:

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

引用自:https://serverfault.com/questions/995156