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

相关推荐
charlie1145141915 分钟前
IMX6ULL学习整理篇——Linux驱动开发的基础3:向新框架迁移
linux·驱动开发·嵌入式硬件·学习·教程
上海运维Q先生1 小时前
[RH342]iscsi配置与排错
linux·运维·服务器
tpoog2 小时前
[贪心算法] 摆动序列
java·linux·开发语言·redis·算法·贪心算法
IT大卡拉咪2 小时前
Centos 7 bash系统目录拯救
linux·运维·centos
张人玉3 小时前
如何在ubuntu上安装zookeeper
linux·ubuntu·zookeeper
敲上瘾3 小时前
操作系统的心脏节拍:CPU中断如何驱动内核运转?
linux·windows·算法·ubuntu·系统架构·centos·aigc
喜气youngyoung3 小时前
Bash中关于制表符\t站位情况说明
linux
昨天今天明天好多天4 小时前
【Mac】安装 Parallels Desktop、Windows、Rocky Linux
linux·windows·macos
李卓璐4 小时前
Linux上离线安装PyTorch教程:No module named ‘_bz2:No module named ‘_lzma‘
linux·运维·pytorch
初级蜗牛4 小时前
ubuntu qt工程打包后续:桌面快捷方式、开机登陆桌面后自动运行
linux·运维·ubuntu