Ansible - community.mysql python 模块错误

Ansible - community.mysql python 模块错误

我正在尝试使用 Ansibles 社区 msql 模块来设置外部数据库。但是,当我尝试创建数据库时,我收到以下错误消息:

failed: [target] (item=db_name) => {"ansible_loop_var": "item", "changed": false, "item": "db_name", "msg": "A MySQL module is required: for Python 2.7 either PyMySQL, or MySQL-python, or for Python 3.X mysqlclient or PyMySQL. Consider setting ansible_python_interpreter to use the intended Python version."}

我不明白为什么会出现此错误,因为我在主机上安装了 mysqlclient 和 PyMySQL 模块。以下是我使用的版本的一些信息:

vagrant@ctrl-01:~$ ansible --version
ansible [core 2.16.1]
  config file = None
  configured module search path = ['/home/vagrant/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
  ansible python module location = /usr/local/lib/python3.10/dist-packages/ansible
  ansible collection location = /home/vagrant/.ansible/collections:/usr/share/ansible/collections
  executable location = /usr/local/bin/ansible
  python version = 3.10.12 (main, Nov 20 2023, 15:14:05) [GCC 11.4.0] (/usr/bin/python3)
  jinja version = 3.1.2
  libyaml = True


vagrant@ctrl-01:~$ pip list |grep -i sql
mysqlclient            2.1.1
PyMySQL                1.1.0

vagrant@ctrl-01:~$ ansible-galaxy collection list | grep mysql
community.mysql               3.8.0  

我找不到 mysql 模块的额外要求,所以我有点不知所措。

编辑:

由于在回复中提到:mysql 和 mysqldump 二进制文件以及 PyMySQL 模块也存在于目标主机上:

[root@galera01-rhel8 ~]# which mysql
/usr/bin/mysql
[root@galera01-rhel8 ~]# which mysqldump
/usr/bin/mysqldump


[root@galera01-rhel8 ~]# pip3 list | grep -i sql
PyMySQL      0.10.1

答案1

您可以尝试更改 ansible.cfg 以设置远程服务器上的 Python 默认解释器,

interpreter_python  = /usr/bin/python3

答案2

您需要在执行操作的目标机器上安装所需的模块之一。

引自文档(我重点标注了):

  • 需要 mysql 和 mysqldump 二进制文件在远程主机上
  • 需要安装 PyMySQL(Python 2.7 和 Python 3.X)或 MySQL-python(Python 2.X)包在远程主机上

相关内容