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

embedded/2025/3/20 3:44:32/

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


http://www.ppmy.cn/embedded/174038.html

相关文章

[HelloCTF]PHPinclude-labs超详细WP-Level 6Level 7Level 8Level 9-php://协议

由于Level 6-9 关的原理都是通用的, 这里就拿第6关举例, 其他的关卡同理 源码分析 定位到代码 isset($_GET[wrappers]) ? include("php://".$_GET[wrappers]) : ; 与前几关发生变化的就是 php:// 解题分析 这一关要求我们使用 php协议 php:// 协议 php://filte…

设计C语言的单片机接口

一、主要内容 (一)控制引脚 1、定义管脚 // 定义管脚的结构体 struct pin{ int id; // 管脚编号 int mode; // 模式,输入为1,输出为0 int pull; // 输入电阻 int driver; // 功率 } 2、输出电平 语法: void pin_output(s…

c++ 基础题目lambda

1. auto lambda = [](double x) { return static_cast<int>(x); }; 是 匿名函数对象 ,不可直接声明 a.可以赋值给一个与其类型兼容的 std::function 类型的对象 std::function<int(int, int)> lambda = [](int x, int y) { return x + y; }; b.使用具体的 lambda …

Java List 接口的核心 API

1. 添加元素 方法&#xff1a; boolean add(E e)&#xff1a;将元素添加到列表末尾。 void add(int index, E element)&#xff1a;将元素插入到指定位置。 boolean addAll(Collection<? extends E> c)&#xff1a;将集合中的所有元素添加到列表末尾。 boolean addA…

Deepseek API+Python测试用例一键生成与导出-V1.0.2【实现需求文档图片识别与用例生成自动化】

在测试工作中&#xff0c;需求文档中的图片&#xff08;如界面设计图、流程图&#xff09;往往是测试用例生成的重要参考。然而&#xff0c;手动提取图片并识别内容不仅耗时&#xff0c;还容易出错。本文将通过一个自研小工具&#xff0c;结合 PaddleOCR 和大模型&#xff0c;自…

三月九次前端面试复盘:当场景题成为通关密钥

三月初集中面了包括字节、美团、滴滴在内的9家公司&#xff0c;经历7场技术面2场Leader面后&#xff0c;发现如今的面试逻辑已发生根本转变。这里分享真实经历与题目&#xff0c;供近期求职者参考。 一、面试形态变化&#xff1a;从理论背诵到实战推演 1. 八股文边缘化&#…

python web开发flask库安装与使用

要在 Python 中使用 Flask 进行 Web 开发&#xff0c;首先需要安装 Flask 库。Flask 是一个轻量级的 Web 框架&#xff0c;它使开发者能够快速构建网站或 web 服务。下面是安装 Flask 和创建一个简单的 Flask 应用程序的基本步骤。 安装 Flask 确保您的环境中已经安装了 Pyth…

SpringBoot使用HibernateValidation

概述 Bean Validation源于JSR-303 &#xff0c;而JSR303是 Java EE 6 中的一项子规范。JSR349、JSR380是其升级版&#xff0c;添加了一些新的特性。Oracle公司传统艺能&#xff0c;一流公司定标准&#xff0c;它们只定义了一些校验注解&#xff08;Constraint&#xff09;&…