如何使用Ansible获取数据库表记录?附报错及Playbook排查
解决Ansible获取数据库表记录时的"missing required arguments: name"报错
问题原因
你使用的community.mysql.mysql_db模块核心用途是数据库的创建、删除、导入导出等管理操作,执行SQL查询并非它的设计目标。该模块执行任何操作时都必须指定name参数(用于定位目标数据库),即便你配置了login_db也无法替代——login_db仅定义登录时默认连接的数据库,而非模块操作的目标库。
更合理的选择是使用专门用于执行SQL查询的community.mysql.mysql_query模块,它不需要name参数,专门适配SELECT这类查询场景。
修正后的Playbook
- name: Access MariaDB in Docker Container hosts: localhost connection: local tasks: - name: Execute SQL query community.mysql.mysql_query: login_user: "{{ login_user }}" login_password: "{{ login_password }}" login_host: "{{ login_host }}" login_db: "{{ login_db }}" query: "{{ query }}" register: sql_result - name: Display SQL result debug: var: sql_result
额外说明
- 若执意使用
mysql_db模块执行查询(不推荐),需补充name: "{{ login_db }}"参数,但该模块返回的结果格式远不如mysql_query清晰,且不符合模块设计初衷。 - 确保已安装
community.mysql集合:执行ansible-galaxy collection install community.mysql即可完成安装。
内容的提问来源于stack exchange,提问作者Jasmi VInay
相关产品推荐
相关产品推荐

