当前位置: 首页 > news >正文

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

在Ansible中,命令行模式(Ad-Hoc 模式)是一种快速执行任务的方式,适合临时任务或简单操作。以下是 Ansible 命令行模式中常用模块的使用案例(第三部分)。

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"

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

相关文章:

  • Python与Solidity联手:从跨语言智能合约开发到区块链生态跃迁
  • 实习笔试-01字符转换小写字母
  • 【AWS入门】2025 AWS亚马逊云科技账户注册指南
  • 《解锁华为黑科技:MindSpore+鸿蒙深度集成奥秘》
  • A Survey on Mixture of Experts 混合专家模型综述(第二部分:混合专家系统设计)
  • 机器学习基础
  • MyBatis 如何解析 XML 配置文件和 SQL 映射文件
  • 【综述】An Introduction to Vision-Language Modeling【二】
  • WordPress调用当前文章作者头像
  • 使用Flask和OpenCV 实现树莓派与客户端的视频流传输与显示
  • Nature | TabPFN:表格基础模型用于小规模数据分析
  • 梯度下降法以及随机梯度下降法
  • 【学习笔记】LLM技术基础
  • OpenHarmony-XTS测试
  • QT登录系统界面
  • 动态路径规划——01背包问题讲解和通过滚动数组优化
  • 我与DeepSeek读《大型网站技术架构》- 大型网站架构技术一览与Web开发技术发展历程
  • 使用Hbuilder发布小程序显示发布失败?
  • 如何上传文件到github
  • 今日《AI-人工智能-编程》-3月13日
  • 广东高州发生山体滑坡,造成2人遇难4人送医救治1人失联
  • “80后”北大硕士罗婕履新甘肃宁县县委常委、组织部部长
  • 国际博物馆日|航海博物馆:穿梭于海洋神话与造船工艺间
  • 中国驻美大使:远离故土的子弹库帛书正随民族复兴踏上归途
  • 首映|《星际宝贝史迪奇》真人电影,不变的“欧哈纳”
  • 河南一县政府党组成员签订抵制违规吃喝问题承诺书,现场交给县长