Ansible命令行模式常用模块使用案例(三)

在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 核心数 |

相关推荐
帅得不敢出门5 小时前
Ubuntu打开中文文本乱码
linux·运维·ubuntu·vim
pp-周子晗(努力赶上课程进度版)5 小时前
【计算机网络-传输层】传输层协议-UDP
linux·计算机网络·udp
only火车头6 小时前
mdadm 报错: buffer overflow detected
linux·mdadm·blktest
Flaming_1236 小时前
将develop分支的修改同步到main分支
linux·git·merge
weixin_428498496 小时前
使用 pgrep 杀掉所有指定进程
linux
rayylee6 小时前
Ubuntu也开始锈化了?Ubuntu 计划在 25.10 版本开始引入 Rust Coreutils
linux·ubuntu·rust
gxh19927 小时前
springboot微服务连接nacos超时
linux·后端·微服务·nacos
@电子爱好者7 小时前
Vscode+git笔记
linux·职场和发展
胡耀超7 小时前
内网渗透技术全面指南——安全业务视角(基于《内网渗透技术 (吴丽进、苗春雨 主编;郑州、雷珊珊、王伦 副主编)》)
linux·windows·安全·web安全·网络安全·内网渗透·安全治理
dancing9998 小时前
linux下的Redis的编译安装与配置
linux·运维·redis