Ansible 无 --list-modules 命令;用 ansible-doc -l 列模块,ansible-doc 模块名 查参数,参数是模块接口部分而非全局变量。

Ansible 中并没有 --list-modules 这个官方支持的命令行选项,该指令无法直接列出“模块变量”。你可能混淆了几个概念:Ansible 模块本身、模块支持的参数(即“模块变量”)、以及如何查看可用模块列表。
查看当前环境所有可用模块
要列出 Ansible 安装后可识别的所有模块(如 copy、file、yum 等),使用以下命令:
-
ansible-doc -l—— 列出全部模块名称及简短描述 -
ansible-doc -F—— 以表格形式展示模块名、所属集合(collection)、路径等信息(需 Ansible ≥ 2.10) -
ansible-doc -t module -l—— 显式指定类型为 module(效果同-l)
查看某个模块的参数(即“模块变量”)
每个模块接受一组参数(比如 copy 模块有 src、dest、backup 等),这些才是实际使用的“变量”。查看方式:
-
ansible-doc copy—— 显示copy模块的完整文档,含参数说明、默认值、是否必需、示例等 -
ansible-doc -s copy—— 显示精简版参数签名(类似 Python 的 help() 输出) -
ansible-doc -S copy—— 在支持的版本中显示参数结构化 JSON(便于脚本解析)
确认模块来源与可用性
某些模块不在核心中,而是来自第三方 collection(如 community.general)。确保它们已安装并被发现:
- 运行
ansible-galaxy collection list查看已安装的 collection - 用
ansible-doc -l | grep '模块名'或ansible-doc -F | grep 'collection_name'确认模块是否在搜索路径中 - 若模块未出现,可能是未安装对应 collection,或
ANSIBLE_COLLECTIONS_PATHS配置不正确
注意常见误区
“模块变量”不是独立存在的配置项,而是模块接口的一部分。它不等同于 playbook 中定义的 vars 或 host_vars。你在任务中写的 src: /tmp/file.txt,其中 src 是 copy 模块的参数,不是全局变量。
没有命令能一次性导出“所有模块的所有参数列表”,因为参数数量庞大且存在条件逻辑(例如某些参数仅在特定条件下生效)。实用做法是按需查文档:ansible-doc 模块名。

















