使用geerlingguy.mysql Ansible角色时遇MySQL服务找不到错误求助
解决Ansible geerlingguy.mysql角色服务找不到的问题
问题根源
目标主机(Ubuntu系统)上的MySQL/MariaDB服务名称与角色默认的mysql不匹配,导致Ansible无法定位服务。Ubuntu部分版本中,MySQL服务可能以mariadb为名运行。
解决方法
1. 确认目标主机的实际服务名
在30.10.1.7上执行命令,找出当前运行的数据库服务名:
systemctl list-units --type=service | grep -E 'mysql|mariadb'
输出会显示类似mysql.service或mariadb.service的结果,提取服务名(去掉.service后缀)。
2. 在变量配置中指定服务名
修改vars/database.yaml,添加mysql_service_name变量,值为上一步得到的服务名:
mysql_databases: - name: db01 encoding: utf8mb4 collation: utf8mb4_unicode_ci mysql_users: - name: linuxhint host: "%" password: secret priv: "db01.*:ALL" # 显式指定数据库服务名 mysql_service_name: "mariadb" # 替换为实际服务名,如mysql或mariadb
3. 重新执行检查命令
运行原命令验证修复效果:
ansible-playbook -i hosts playbooks/install_database.yaml -e ansible_python_interpreter=/usr/bin/python3 --check
补充说明
geerlingguy.mysql角色通常会自动适配不同系统的服务名,但自定义安装或特殊环境下可能检测失效,显式指定mysql_service_name即可强制角色使用正确的服务名。
内容的提问来源于stack exchange,提问作者Gary
相关产品推荐
相关产品推荐

