You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Ansible community.mysql.mysql_query模块执行查询时报错求助

问题原因及解决办法

核心原因

  1. 模块版本不兼容:你使用的Ansible 2.6.20版本过于老旧,community.mysql.mysql_query模块是在Ansible 2.10及以上版本才被纳入community.mysql集合的,2.6版本根本不存在这个模块。
  2. 错误行号偏移:由于Ansible无法识别不存在的模块,导致错误提示的行号不准确,实际问题出在模块本身,而非任务名称行。

解决步骤

方案一:升级Ansible及相关集合(推荐)

若环境允许,升级到支持目标模块的版本:

  1. 升级Ansible到2.10+版本:
    pip install ansible>=2.10
    
  2. 安装community.mysql集合:
    ansible-galaxy collection install community.mysql
    
  3. 保持现有playbook结构不变,重新执行命令即可。

方案二:适配Ansible 2.6版本(不升级环境)

2.6版本无原生mysql_query模块,可通过调用MySQL客户端执行查询:
修改playbook的tasks部分为:

- name: Simple select query to db
  shell: |
    mysql -h {{ host_name }} -P {{ database_port }} -u {{ database_user }} -p'{{ database_password }}' {{ database_name }} -e "SELECT * FROM DECOM_QUEUE"
  register: query_result

- name: Print query result
  debug:
    var: query_result.stdout_lines

注意:此方式要求目标主机(此处为localhost)已安装MySQL客户端工具;命令行明文写密码存在安全风险,建议改用环境变量或MySQL配置文件传递认证信息。

额外注意点

你的inventory文件中[vars]组写法不符合Ansible标准,标准写法应为:

[localhost]
localhost ansible_connection=local

[localhost:vars]
host_name=mydb.localdomain
database_name=serverdb
database_port=5501
database_user=sql_svc
database_password=Test1234

也可直接在playbook中覆盖变量,避免inventory与playbook变量冲突。

内容的提问来源于stack exchange,提问作者itinneed2022_1

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.30 02:05:09