我正在尝试使用 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)包在远程主机上。