自动化运维-ansible的常用模块及参数

一、命令

1、查看系统上安装的所有模块
ansible-doc -l
2、查看模块的帮助文档
ansible-doc 模块名
3、使用临时命令通过模块来执行任务
ansible 受控主机名 -m 模块名 -a '参数'
4、下载模块到集合
[student@master ansible] ansible-galaxy collection install http://ansible.example.com/materials/community-general-6.3.0.tar.gz -p collections/
[student@master ansible] ansible-galaxy collection install http://ansible.example.com/materials/ansible-posix-1.5.1.tar.gz -p collections/

二、常用模块

1、user模块
  • 管理系统用户账户,包括创建、修改、删除用户,以及管理其密码、组、家目录等属性
常用参数作用
name要创建、修改、移除的用户名
password设置用户密码,此处只能使用加密密码作为值
system设置为yes,表示创建一个系统用户,只能用于创建,不能用于修改已有用户为系统用户
createhome创建家目录,或者已有的用户但家目录不存在也会创建,设置为no则不创建家目录
home指定要创建的家目录路径
move_home设置为yes,移动到home=的家目录路径
uid设置用户的uid
group设置用户的primary group
groups设置用户的辅助组
shell设置用户的shell环境
force强制删除用户、家目录和邮件列表
remove删除家目录和邮件列表
update_passworduser是幂等模块,“always”将总是修改密码,“on_create”将只在创建用户时设置密码

例子:创建用户user1

[student@master ansible] ansible node1 -m user -a 'name=user1 uid=4000 groups=student state=present'

在这里插入图片描述

例子:创建用户user2,并设置密码,需要先对密码进行加密

[student@master ansible] openssl passwd -1 wiltjer
$1$Hg6hbOI1$DvR5d.ike1E8Fl2imJ2681
[student@master ansible] ansible node1 -m user -a 'name=user2 uid=4001 password="$1$Hg6hbOI1$DvR5d.ike1E8Fl2imJ2681" groups=root state=present'

在这里插入图片描述

2、shell模块
  • 在目标节点上执行复杂的 shell 命令或脚本,支持管道和重定向等操作符

例子:查看/home的详情信息

[student@master ansible] ansible node1 -m shell -a 'ls -l /home'

在这里插入图片描述

3、copy模块
  • 将控制机上的文件或内联内容静态地复制到远程目标节点上的指定位置
常用参数作用
backup[yes|no]拷贝的同时创建一个包含时间戳信息的备份文件,默认为no
dest目标路径,只能是绝对路径
content相当于重定向
directory_mode当对目录做递归拷贝时,使得只拷贝新建文件,旧文件不会被拷贝,默认未设置
follow=[yes|no]是否追踪到连接的源文件
force=[yes|no]设置为yes,将覆盖远程同名文件,设置为no,忽略同名文件的拷贝
group设置远程文件的所属组
owner设置远程文件的所有者
mode设置远程文件的权限
src源文件,可以使用绝对路径或相对路径
加/,只会拷贝目录中的内容到远程;不加/,则拷贝目录本身和目录内的内容到远程

例子:把控制主机 master 上的 /tmp/file1 文件拷贝到受控主机 node1 的 /tmp/ 下

[student@master ansible]$ ansible node1 -m copy -a 'src=/tmp/file1 dest=/tmp/'

在这里插入图片描述

例子:拷贝的同时设置所属用户和组

[student@master ansible]$ ansible node1 -m copy -a 'src=/tmp/file2 dest=/tmp/ group=root owner=student'

在这里插入图片描述

4、template模块
  • 基于 Jinja2 模板生成文件并传输到目标节点,能够动态地将变量替换为具体值,常用于配置文件
常用参数作用
backup拷贝的同时创建一个包含时间戳信息的备份文件,默认为no
dest目标路径
force设置为yes,将覆盖远程同名文件,设置为no,忽略同名文件的拷贝
group设置远程文件的所属组
owner设置远程文件的所有者
mode设置远程文件的权限
src源文件,可以使用绝对路径或相对路径
validate在复制到目标主机后但放到目标位置之前,执行此选项指定的命令
一般用于检查配置文件语法,语法正确则保存到目标位置

使用和copy模块相似,但template模块可以含有变量

5、file模块
  • 管理文件和目录的属性,包括设置权限、所有权、创建软链接/硬链接,以及创建目录和删除文件
常用命令作用
mode设置文件的权限
group设置文件的所有组
owner设置文件的所有者
setype修改文件的context
path指定待操作的文件,可使用别名destname来代替path
recurse默认no,递归修改文件的属性信息,要求state=directory
src创建链接时使用,指定源文件
statedirectory:如果目录不存在则递归创建
file:文件不存在时,不会被创建(默认)
touch:创建一个新文件
link:修改或创建软连接
hard:修改或创建硬链接
absent:目的和其中的文件会被递归删除,文件或链接将取消链接状态

例子:创建文件

[student@master ansible] ansible node1 -m file -a 'path=/tmp/file11 state=touch'

在这里插入图片描述

例子:创建目录

[student@master ansible] ansible node1 -m file -a 'path=/tmp/dir1 state=directory'

在这里插入图片描述

例子:删除文件

[student@master ansible] ansible node1 -m file -a 'path=/tmp/file11 state=absent'

在这里插入图片描述

例子:创建软连接

[student@master ansible] ansible node1 -m file -a 'dest=/tmp/file11 src=/tmp/file1 state=link'

在这里插入图片描述

例子:创建硬链接

[student@master ansible] ansible node1 -m file -a 'dest=/tmp/file22 src=/tmp/file2 state=hard'

在这里插入图片描述

6、yum_repository模块
  • 在目标节点上配置和管理 YUM/DNF 软件仓库(定义 .repo 文件)
常用参数作用
baseurl地址
mirrorlist设置mirrorlist地址
description描述信息
enabled是否启用该仓库,默认为yes
file保存此仓库的文件,不设置该项的话则默认以name选项中的名称命名
gpgcheck是否要进行gpgcheck
name仓库的名称,要保证名称的唯一性
reposdir保存.repo文件的目录
staterepo文件的状态,present/absent,默认present

例子:配置yum仓库

[student@master ansible] ansible node1 -m yum_repository -a 'file=server name=aa description=aa1 baseurl=http://ansible.example.com/rhel9/BaseOS enabled=yes gpgcheck=no'
[student@master ansible] ansible node1 -m yum_repository -a 'file=server name=cc description=cc1 baseurl=http://ansible.example.com/rhel9/AppStream enabled=yes gpgcheck=no'

在这里插入图片描述

7、yum模块
  • 使用 YUM 或 DNF 包管理器在 RHEL/CentOS/Fedora 等系统上安装、升级、降级或删除软件包
常用参数作用
disable_gpg_check安装包时禁止gpgcheck,仅在state=present或latest时生效
disablerepo禁用指定的repoid,多个repoid使用逗号分隔
enablerepo明确使用该repoid
exclude排除哪些包不安装,仅在state=present或latest
list类似于yum list
name指定安装的包名,可带上版本号。多个包可使用逗号分隔
statepresent、installed、latest用于安装包;absent、removed用于移除已安装包
update_cache强制更新yum的cache

例子:安装httpd

[student@master ansible] ansible node1 -m yum -a 'name=httpd state=installed'

在这里插入图片描述

例子:卸载httpd

[student@master ansible] ansible node1 -m yum -a 'name=httpd state=removed'

在这里插入图片描述

8、service模块
  • 管理系统服务(守护进程)的状态,例如启动、停止、重启、重载以及设置开机自启
常用参数作用
enabled设置服务为开机自启动,默认为no
name服务名
statestarted启动服务,stopd停止服务,幂等操作
restarted重启服务
reloaded重读配置文件,如果服务是未运行状态,则reloaded会启动服务
(state和enabled两者至少要给一个)

例子:重启httpd服务并设置下次启动生效

[student@master ansible] ansible node1 -m service -a 'name=httpd state=started enabled=yes'

在这里插入图片描述

9、fetch模块
  • 从远程目标节点拉取文件到控制机,通常用于收集日志或备份配置文件
常用参数作用
dest本地存储拉取文件的目录
src远程主机的源文件,只能是文件,不支持目录
fail_on_missing当设置为yes时,如果拉取的源文件不存在则此任务失败,默认为no
flat改变拉取后的路径存储方式,如果设置为yes,且当dest以/结尾时,将直接把源文件的basename存储在dest下
validate_checksumfetch到文件后,检查其md5和源文件是否相同

例子:将受控主机 node1 的/tmp/file3文件拉取到本地来,存储的名字为/tmp/file3-node1(node2)

[student@master ansible]$ ansible node1,node2 -m fetch -a 'src=/tmp/file3 dest=/tmp/file3-{{inventory_hostname}} flat=yes'

在这里插入图片描述

10、firewalld模块
  • 管理目标系统上的 firewalld 守护进程,配置防火墙规则( zones, services, ports 等)
常用参数作用
service指定服务名
permanentyes
stateenabled添加,disabled移除
immediateyes

例子:允许http流量的传入

[student@master ansible] ansible node1 -m firewalld -a 'service=http permanent=yes state=enabled immediate=yes'

在这里插入图片描述

例子:富规则 允许192.168.100.0/24主机http流量的传入

[student@master ansible] ansible node1 -m firewalld -a 'zone=public rich_rule="rule family=ipv4 source address=192.168.100.0/24 service name=http accept" permanent=yes state=enabled immediate=yes'

在这里插入图片描述

例子:允许80端口http流量的传入

[student@master ansible]$ ansible node1 -m firewalld -a 'port=80/tcp state=enabled permanent=yes immediate=yes'

在这里插入图片描述

11、replace模块
  • 使用正则表达式匹配并替换文件中的特定文本行或字符串
常用参数作用
path指定操作文件,可使用dest、destfile、name
regexp指定被替换字符串
replace指定替换字符串
backup设置为yes,进行备份

例子:把受控主机 node1 的 /tmp/file1 文件中的 ab 替换为 yy

[student@master ansible] ansible node1 -m replace -a 'path=/tmp/file1 regexp="ab" replace="yy"'

在这里插入图片描述

12、parted模块
  • 对目标节点上的磁盘进行分区操作(创建、调整、删除分区等)
常用参数作用
device指定设备
number指定分区号
part_type指定分区类型
part_start指定起始大小
part_end指定结束大小
statepresent创建,absent移除

例子:创建分区1,大小为500M

[student@master ansible] ansible node1 -m parted -a 'device=/dev/vdb number=1 part_type=primary part_start=10MiB part_end=510MiB state=present'

在这里插入图片描述

13、filesystem模块
  • 在目标块设备(如分区)上创建指定类型的文件系统(如 ext4, xfs, swap)
常用参数作用
dev指定设备
fstype指定格式化类型

例子:格式化 /dev/vdb1 为 xfs 类型

[student@master ansible] ansible node1 -m filesystem -a 'dev=/dev/vdb1 fstype=xfs'

在这里插入图片描述

14、mount模块
  • 挂载或卸载文件系统,并永久性地将挂载信息写入 /etc/fstab
常用参数作用
src指定设备
path指定挂载点
fstype指定文件系统
opts指定挂载选项
statemounted挂载,absent卸载

例子:永久挂载 /dev/vdb1 ,需要先获取 /dev/vdb1 的 UUID

[student@master ansible] ansible node1 -m shell -a 'blkid /dev/vdb1'
[student@master ansible] ansible node1 -m mount -a 'src="UUID=85275060-72ce-40cb-98b8-9b3b9283c59d" path=test fstype=xfs state=mounted'

在这里插入图片描述

15、lvg模块
  • 管理 LVM(逻辑卷管理)的物理卷(PV)和卷组(VG)
常用参数作用
vg指定卷组名
pesize指定PE大小
pvs指定设备

例子:创建卷组

[student@master ansible] ansible node1 -m lvg -a 'vg=vg0 pesize=4M pvs=/dev/vdb2'

在这里插入图片描述

16、lvol模块
  • 管理 LVM 的逻辑卷(LV),包括创建、调整大小和删除
常用参数作用
lv指定逻辑卷名
size指定大小
vg指定卷组
resizefsyes,调整大小

例子:创建逻辑卷

[student@master ansible] ansible node1 -m lvol -a 'lv=lv0 size=1000M vg=vg0'

在这里插入图片描述

17、debug模块
  • 在任务执行期间打印调试信息到输出,常用于输出变量值或自定义消息以辅助排错
常用参数作用
msg输出自定义信息,如果省略,则输出普通字符
var指定待测试的变量,只能指定变量,不能指定自定义信息,且变量不能加{{}}包围,而是直接的变量名
verbosity控制debug运行的调试级别,有效值为一个数值N

例子:输出123321

[student@master ansible] ansible node1 -m debug -a 'msg="123321"'

例子:输出变量

[student@master ansible] ansible node1 -m debug -a 'msg="this is {{ inventory_hostname }}"'

在这里插入图片描述

18、cron模块
  • 管理计划任务(cron jobs),可以创建、修改或删除用户的 cron 任务
常用参数作用
backup如果设置了,则会在修改远程cron_file前备份这些文件
cron_file自定义cron_file的文件名,使用相对路径表示在/etc/cron.d,必须同时指定user选项
user指定哪个用户,默认为root
disabled禁用crontab中的某个job,要求state=present
env设置一个环境变量
job需要执行的命令
minute
hour
day
month
weekday
name描述crontab任务的字符串
special_time定时任务的别称,用于定义何时运行的job条目
statepresent创建,absent移除

例子:创建计划任务 test ,每个月 11 号下午 2 点每 5 分钟执行一次 /bin/echo I AM RHCE

[student@master ansible] ansible node1 -m cron -a 'name="test" minute="*/5" hour=14 day=11 job="/bin/echo I AM RHCE" state=present'

在这里插入图片描述

19、get_url模块
  • 从 HTTP、HTTPS 或 FTP URL 下载文件到目标节点
常用命令作用
backup下载文件时同时创建一个带时间戳的备份文件
dest文件保存路径,必须为绝对路径
tmp_dest下载时临时存放目录,在任务执行完成前会删除下载的临时文件
group文件/目录的所属组
owner文件/目录的所有者
mode设置文件/目录的权限
timeout请求url时的超时时间,默认10秒钟
url要下载的url路径

例子:下载受控主机 node1 的 /var/www/html/file1 文件到控制主机 master 的 /tmp/file1

[student@master ansible]$ ansible node1 -m get_url -a 'url=http://node1.example.com/file1 dest=/tmp/file1'

在这里插入图片描述

20、sefcontext模块
  • 为 SELinux 策略设置文件上下文(安全上下文)标签,但不立即应用更改(需要后续调用 restorecon
常用参数作用
target指定目标
setype更改context
statepresent

例子:

[student@master ansible] ansible node1 -m sefcontext -a 'target="/share(/.*)?" setype=samba_share_t state=present'
[student@master ansible] ansible node1 -m shell -a 'restorecon -Rv /share'

在这里插入图片描述

在这里插入图片描述

posted on 2025-09-21 16:55  ycfenxi  阅读(12)  评论(0)    收藏  举报