在Ansible中,命令行模式(Ad-Hoc 模式)是一种快速执行任务的方式,适合临时任务或简单操作。以下是 Ansible 命令行模式中常用模块的使用案例(第三部分)。
1 user
功能特性:用于管理用户账户(创建、修改、删除),底层调用useradd、usermod、userdel命令关键参数:
- name:用户名(必填)
- group:用户的主组(默认与用户名相同)
- groups:用户的附加组(多个组用逗号分隔,设为空字符串,groups=表示清空所有组)
- shell:用户的默认Shell
- state:账户状态,包括present(创建/修改)、absent(删除)
- remove:当state=absent时,是否删除用户家目录和邮件文件(类似userdel -r)
示例1:创建用户并指定主组与附加组
ansible web -m user -a "name=test group=admin groups=sudo,tmp shell=/bin/bash" -b示例2:删除用户并移除家目录
ansible db -m user -a "name=olduser state=absent remove=yes" -b示例3:清楚用户附加组
ansible all -m user -a "name=guest groups=" -b
2 group模块
功能特性:用于管理用户组(创建、修改、删除),底层调用groupadd、groupmod、groupdel命令关键参数:
- name:组名(必填)
- gid:指定组的 GID(可选)
- state:组状态,包括present(创建/修改)、absent(删除)
示例1:创建组并制定gid
ansible web -m group -a "name=admins gid=2000 state=present" -b示例2:删除组
ansible db -m group -a "name=oldgroup state=absent" -b
3 synchronize模块
功能特性:通过调用 rsync实现高性能文件/目录同步 ,支持本地与远程主机之间的双向传输(推送或拉取)关键参数:
- src:源路径(本地或远程路径)
- dest:目标路径(本地或远程路径)
- mode:同步模式:push(本地→远程)、pull(远程→本地)
- archive:归档模式(等效 rsync -a,包含递归、权限、时间戳等)
- compress:启用压缩传输
- checksum:根据文件内容(而非修改时间/大小)判断是否同步
- copy_links:复制符号链接文件本身(而非指向的目标)
- delete:删除目标路径中源路径不存在的文件
- exclude:排除特定文件/目录(支持通配符)
- rsync_opts:传递额外的 rsync 参数(如--bwlimit=1000)
- dest_port:远程主机的 SSH 端口
- set_remote_user:指定远程用户(需与ansible_user一致)
示例1:推送本地目录到远程主机
ansible web -m synchronize -a "src=/local/tmp/ dest=/tmp/remote/ mode=push archive=yes delete=yes" -b示例2:从远程主机拉取文件
ansible db -m synchronize -a "src=/remote/backup/ dest=/local/backup/ mode=pull" -b示例3:排除特定文件
ansible all -m synchronize -a "src=/data/ dest=/backup/ exclude='*.log,*.tmp' compress=no" -b示例4:使用校验和同步
ansible web -m synchronize -a "src=/code/ dest=/deploy/ checksum=yes" -b
4 get_url模块
功能特性:从 HTTP/HTTPS/FTP 服务器下载文件,支持身份验证、哈希校验、代理配置等高级功能,适用于自动化部署或配置文件拉取关键参数:
- url:要下载的文件URL(必填)
- dest:本地保存路径(若目录不存在会自动创建)
- sha256sum:下载后校验文件的SHA-256哈希值
- timeout:下载超时时间(秒)
- url_username:用于HTTP Basic认证的用户名
- url_password:用于HTTP Basic认证的密码
- use_proxy:是否使用代理(依赖环境变量http_proxy/https_proxy)
- force:强制重新下载(即使文件已存在)
示例1:基础下载
ansible web -m get_url -a "url=https://example.com/file.zip dest=/tmp/file.zip"示例2:校验文件完整性
ansible db -m get_url -a "url=https://example.com/app.rpm dest=/opt/app.rpm sha256sum=1234abcd..."示例3:设置超时与强制下载
ansible host -m get_url -a "url=https://slow.example.com/bigfile.tar.gz dest=/data/ timeout=60 force=yes"
5 setup模块
功能特性:用于收集远程主机信息的核心模块,它能够获取主机的各种信息,如操作系统、网络配置、硬件信息等。这些信息通常被称为 "facts",在playbooks中可以通过gather_facts参数来控制是否收集这些信息。关键参数:
- filter:过滤输出的Facts,支持通配符*
- fact_path:自定义Facts脚本路径(Ansible会执行该路径下的脚本并加载返回值)
- gather_subset:选择收集的子集(如all,min,hardware,network)
示例1:收集所有Facts
ansible web -m setup示例2:过滤特定信息
ansible db -m setup -a "filter=ansible_memory*"示例3:仅收集网络信息
ansible all -m setup -a "gather_subset=network"
常用Facts变量示例:
变量名 | 说明 |
ansible_os_family | 操作系统家族 |
ansible_distribution | 具体发行版名称 |
ansible_architecture | CPU 架构 |
ansible_memtotal_mb | 总内存(MB) |
ansible_eth0.ipv4.address | 主网络接口的 IPv4 地址 |
ansible_processor_cores | CPU 核心数 |