RedHat9 | Ansible 模块参数记录

1. file模块

设置权限、所有者、SElinux上下文及常规文件、符号连接、硬链接等

查询方式

bash 复制代码
ansible-navigator doc file -m stdout

EXAMPLE 1

yaml 复制代码
- name: Change file ownership, group and permissions
  ansible.builtin.file:		# file模块
    path: /etc/foo.conf		# 文件路径
    owner: foo				# 文件所有者
    group: foo				# 文件所属组
    mode: '0644'			# 文件权限
    state: touch			# 操作状态:创建文件
    modification_time: now	# 设置文件修改时间
    access_time: now		# 设置文件的访问时间

EXAMPLE 2

yaml 复制代码
- name: Create a symbolic link		# 创建一个符号链接
  ansible.builtin.file:
    src: /file/to/link/to			# 源文件
    dest: /path/to/symlink			# 目的文件
    owner: foo						# 文件所属者
    group: foo						# 文件所属组
    state: link						# 创建或更改符号链接

文件权限的不同设置方式

设置方式 说明
mode: '0644' 设置权限
mode: u+rw,g-wx,o-rwx 设置权限

state列表项的不同属性值

列表项 说明
absent 目录-->递归删除,符号链接-->取消链接
directory 目录存在-->不做任何操作,目录不存在-->新建目录
file 默认值,文件存在-->被修改,文件不存在-->不会修改
hard 创建或更改硬链接
link 创建或更改符号链接
touch 文件存在-->不做任何操作,文件不存在-->创建文件

file模板列表项

列表项 说明
modifycation_time 设置修改时间【YYYYMMDDHHMM.SS】
access_time 设置文件访问时间【YYYYMMDDHHMM.SS】
setype SELinux安全上下文

2. lineinfile模块

主要功能:针对文件中的特定一行。

查询方式

bash 复制代码
ansible-navigator doc lineinfile -m stdout

EXAMPLE 1

yaml 复制代码
- name: Ensure SELinux is set to enforcing mode
  ansible.builtin.lineinfile:		# lineinfile模块
    path: /etc/selinux/config		# 文件路径
    regexp: '^SELINUX='				# 匹配项(正则表达式语句)
    line: SELINUX=enforcing			# 要插入/替换的行

EXAMPLE 2

yaml 复制代码
- name: Ensure the default Apache port is 8080
  ansible.builtin.lineinfile:
    path: /etc/httpd/conf/httpd.conf	# 文件路径
    regexp: '^Listen '					# 匹配项(正则表达式语句)
    insertafter: '^#Listen '			# 当找不到regexp项,才查找此项
    line: Listen 8080					# 要插入/替换的行

EXAMPLE 3

yaml 复制代码
- name: Replace a localhost entry with our own
  ansible.builtin.lineinfile:
    path: /etc/hosts					# 文件路径
    regexp: '^127\.0\.0\.1'				# 匹配项(正则表达式语句)
    line: 127.0.0.1 localhost			# 要插入/替换的行
    owner: root							# 修改文件的所有者
    group: root							# 修改文件的所属组
    mode: '0644'						# 修改文件的权限

lineinfile模板列表项

列表项 说明
path 要修改的文件
regexp 匹配项(可以使用正则表达式语句)
line 文件中要插入/替换的行
insertafter 需要和regexp一起使用,当regexp不匹配,则匹配此选项
owner 修改文件的所有者
group 修改文件的所属组
mode 修改文件的权限
create 默认情况下,如果操作文件不存在,会报错。设置create=True,当文件不存在时,会自动创建该文件

3. template模块

主要功能:可以获取变量的值和使用循环

查询方式

bash 复制代码
ansible-navigator doc template -m stdout

EXAMPLE 1

yaml 复制代码
- name: Template a file to /etc/file.conf
  ansible.builtin.template:
    src: /mytemplates/foo.j2		# 指定jinja2文件
    dest: /etc/file.conf			# 操作的文件
    owner: bin			# 修改文件所属者
    group: wheel		# 修改文件所属组
    mode: '0644'		# 设置文件权限

EXAMPLE 2

yaml 复制代码
- name: Update sshd configuration safely, avoid locking yourself out
  ansible.builtin.template:
    src: etc/ssh/sshd_config.j2		# 指定jinja2文件
    dest: /etc/ssh/sshd_config		# 操作的文件
    owner: root		# 设置文件所属者
    group: root		# 设置文件所属组
    mode: '0600'	# 设置文件权限
    validate: /usr/sbin/sshd -t -f %s
    backup: yes

template模板列表项

列表项 说明
src 指定jinja2文件路径
dest 操作的文件
owner 设置文件所属者
group 设置文件所属组
mode 设置文件权限
validate 执行命令前的验证选项
backup 创建一个包含时间戳信息的备份文件,可以将原始文件找回,默认为False
newline_sequence 指定用于模板文件的换行符序列,默认为\n

4. firewalld模块

主要功能:调整防火墙策略、富规则等与防火墙相关的操作

查询方式

bash 复制代码
ansible-navigator doc firewalld -m stdout

EXAMPLE 1

yaml 复制代码
- name: permit traffic in default zone for https service
  ansible.posix.firewalld:
    service: https				# 放行的服务名
    permanent: yes				# 永久开启
    state: enabled				# 添加服务

EXAMPLE 2

yaml 复制代码
- name: do not permit traffic in default zone on port 8081/tcp
  ansible.posix.firewalld:
    port: 8081/tcp			# 删除的端口号
    permanent: yes			# 永久删除
    state: disabled			# 删除放行端口

Firewalld模板列表项

列表项 说明
service 添加/删除要放行的服务
port 添加/删除要放行的端口
permanent 永久生效【no/yes】
state absent删除、disabled关闭、enabled开启
rich_rule 富规则
zone 操作的区域
target 防火墙区域目标
icmp_block 在firewalld的区域中添加/删除的ICMP块
immediate 立刻生效配置

5. dnf/yum模块

主要功能:安装、卸载、升级软件包,其中yum模块选项更多,dnf偏少,建议使用yum。

查询方式

bash 复制代码
ansible-navigator doc dnf -m stdout

EXAMPLE 1

yaml 复制代码
- name: Install the latest version of Apache
  ansible.builtin.dnf:		
    name: httpd			# 安装的服务名
    state: latest		# 升级到最新版本

EXAMPLE 2

yaml 复制代码
- name: Install a modularity appstream with defined stream
  ansible.builtin.dnf:
    name: '@postgresql:9.6'		# 安装的软件包组
    state: present

state列表项的不同属性值

列表项 说明 命令比对
present 确保安装 install
latest 升级到最新版本 upgrade
absent 删除 remove
installed 安装 install

6. package_facts模块

主要功能:将已安装的软件包信息作为事实返回。

查询方式

bash 复制代码
ansible-navigator doc package_facts -m stdout

EXAMPLE 1

yaml 复制代码
- name: Gather the package facts
  ansible.builtin.package_facts:
    manager: auto		# 选择系统使用的包管理器

manager列表项的不同属性值

列表项 说明
auto 自动匹配
rpm rpm包管理器
apt apt包管理器
portage portage包管理器
pkg pkg包管理器
pacman pacman包管理器
apk Android应用程序包
pkg_info pkg_info包管理器

7. yum_repository模块

主要功能:配置yum仓库文件

查询方式

bash 复制代码
ansible-navigator doc yum_repository -m stdout

模块名忘记查找方式

bash 复制代码
ansible-doc -l | grep yum

EXAMPLE 1

yaml 复制代码
- name: Add multiple repositories into the same file (1/2)
  ansible.builtin.yum_repository:
    name: epel						# 仓库名称
    description: EPEL YUM repo		# 仓库描述
    file: external_repos		# 仓库文件名
    baseurl: xxxx			# 仓库路径
    gpgcheck: no		# 不启用gpgcheck

yum_repository模板列表项

列表项 说明
name 仓库名称
description 仓库描述信息
file 仓库文件名
baseurl 仓库邻居
gpgcheck 是否对包执行GPG签名检查
gpgkey GPG密钥文件的路径
enabled 是否启用此仓库(默认为true)

8. rpm_key模块

主要功能:先rpm数据库添加/删除rpm公钥

查询方式

bash 复制代码
ansible-navigator doc rpm_key -m stdout

EXAMPLE 1

yaml 复制代码
- name: Import a key from a file
  ansible.builtin.rpm_key:
    state: present				# 添加
    key: /path/to/key.gpg		# 导入的公钥路径

state列表项的不同属性值

列表项 说明
present 导入
absent 删除

9. user模块

主要功能:管理用户帐户和用户属性

查询方式

bash 复制代码
ansible-navigator doc user -m stdout

EXAMPLE 1

yaml 复制代码
- name: Add the user 'johnd'
  ansible.builtin.user:
    name: johnd				# 用户名
    comment: John Doe		# 用户描述信息
    uid: 1040				# UID
    group: admin		# 所属组

EXAMPLE 2

yaml 复制代码
- name: Remove the user 'johnd'
  ansible.builtin.user:
    name: johnd		# 用户名
    state: absent	# 删除
    remove: yes		# 删除用户

EXAMPLE 3

yaml 复制代码
- name: Add the user 'james' 
  ansible.builtin.user:
    name: james		# 用户名
    shell: /bin/bash				# 指定shell
    groups: admins,developers		# 附加组
    append: yes		# 追加到附加组

EXAMPLE 4

yaml 复制代码
- name: Create a 2048-bit SSH key for user jsmith in ~jsmith/.ssh/id_rsa
  ansible.builtin.user:
    name: jsmith
    generate_ssh_key: yes
    ssh_key_bits: 2048
    ssh_key_file: .ssh/id_rsa

user模块列表项

列表项 说明 命令比对
name 用户名
comment 用户描述信息 -c
uid 设置用户ID -u
group 设置用户所属组 -g
shell 默认shell终端 -s
groups 设置用户的附加组 -G
append yes:将用户添加到groups指定的组中,不会影响原来存在的附加组,相当于追加 no:将用户添加groups中,然后从其它组中移除,相当于替换
remove 删除与用户关联的用户,需要和state=absent一起使用
home 设置用户家目录 -d
password 设置用户密码 -p
generate_ssh_key 生成ssh密码
ssh_key_bits 密钥的字节
ssh_key_file 密码的存储路径
expires 用户过期时间 -e
password_expire_max 更改密码的最大天数 -f
password_expire_min 更改密码的最小天数

10. group模块

主要功能:管理组

查询方式

bash 复制代码
ansible-navigator doc group -m stdout

EXAMPLE 1

yaml 复制代码
- name: Ensure group "somegroup" exists
  ansible.builtin.group:
    name: somegroup		# 指定组名
    state: present		# 新建组

EXAMPLE 2

yaml 复制代码
- name: Ensure group "docker" exists with correct gid
  ansible.builtin.group:
    name: docker		# 指定组名
    state: present		# 新建组
    gid: 1750			# 指定GID

state列表项的不同属性值

列表项 说明 命令比对
present 新建组 groupadd
absent 删除组 groupdel

group模块列表项

列表项 说明
name 指定组名
state 对组的操作
gid 指定组ID
system 是否为系统组

11. at模块

主要功能:使用此模块可以安排命令或脚本文件在将来运行一次

at命令的特点就是计划任务的一次性特征,一旦设置的计划任务被执行,则该任务就会被从任务列表库中删除,因此常被用于仅需执行一次的工作。

查询方式

bash 复制代码
ansible-navigator doc at -m stdout

EXAMPLE 1

yaml 复制代码
- name: Schedule a command to execute in 20 minutes as root
  ansible.posix.at:
    command: ls -d / >/dev/null		# 执行的命令
    count: 20			# 执行命令或脚本文件的间隔时间
    units: minutes		# 执行的命令或脚本文件的单位类型

EXAMPLE 2

yaml 复制代码
- name: Match a command to an existing job and delete the job
  ansible.posix.at:
    command: ls -d / >/dev/null		# 执行的命令
    state: absent		# 删除该任务

EXAMPLE 3

yaml 复制代码
- name: Schedule a command to execute in 20 minutes making sure it is uni>
  ansible.posix.at:
    command: ls -d / >/dev/null		# 执行的命令
    count: 20		# 执行命令或脚本文件的单位数
    units: minutes	# 执行的命令或脚本文件的单位类型
    unique: yes		# 如果该工作存在则不添加,不存在则添加

state列表项的不同属性值

列表项 说明 命令比对
present 添加临时任务
absent 删除临时任务 at -r

utits列表项的不同属性值

列表项 说明
minutes 分钟
hours 小时
days
weeks

at模块列表项

列表项 说明
command 要执行的命令
count 间隔时间
units 时间单位
unique yes:该任务存在则不添加;no:该任务不存在则添加
script_file 要执行的脚本路径
state 对一次性任务的操作

12. cron模块

主要功能:周期执行计划任务

查询方式

bash 复制代码
ansible-navigator doc cron -m stdout

EXAMPLE 1

yaml 复制代码
- name: Ensure a job that runs at 2 and 5 exists. Creates an entry like ">
  ansible.builtin.cron:
    name: "check dirs"		# 计划任务名
    minute: "0"			# 分钟
    hour: "5,2"			# 小时
    job: "ls -alh > /dev/null"		# 执行的命令

EXAMPLE 2

yaml 复制代码
- name: Creates a cron file under /etc/cron.d
  ansible.builtin.cron:
    name: yum autoupdate		# 计划任务名
    weekday: "2"		# 周
    minute: "0"			# 分钟
    hour: "12"			# 小时
    user: root		# 修改crontab的用户
    job: "YUMINTERACTIVE=0 /usr/sbin/yum-autoupdate"	# 任务
    cron_file: ansible_yum-autoupdat	# 在指定路径下创建cron作业

state列表项的不同属性值

列表项 说明 命令比对
present 添加cron作业 crontab -r
absent 删除cron作业 crontab -e

cron模块列表项

列表项 说明
name Cron作业的标识
minute 执行时间(分钟),不指定则默认为*
hour 执行时间(小时),不指定则默认为*
day 执行时间(日),不指定则默认为*
month 执行时间(月),不指定则默认为*
weekday 执行时间(周),不指定则默认为*
job 要运行的命令
state 对周期任务的操作
env 管理crontab的环境变量
user 指定cron作业的执行用户
insertafter 在指定环境变量的声明之后插入环境变量,与state=present一起使用
cron_file 指定cron作业的的存储路径

13. service模块

主要功能:控制受管主机上的服务

查询方式

bash 复制代码
ansible-navigator doc service -m stdout

EXAMPLE 1

yaml 复制代码
- name: Start service httpd, if not started
  ansible.builtin.service:
    name: httpd			# 服务名
    state: started		# 启动服务

EXAMPLE 2

yaml 复制代码
- name: Enable service httpd, and not touch the state
  ansible.builtin.service:
    name: httpd			# 服务名
    enabled: yes		# 加入到开启自启

EXAMPLE 3

yaml 复制代码
- name: Start service foo, based on running process /usr/bin/foo
  ansible.builtin.service:
    name: foo				# 服务名
    pattern: /usr/bin/foo	# 指定服务进程
    state: started			# 启动服务

EXAMPLE 4

yaml 复制代码
- name: Restart network service for interface eth0
  ansible.builtin.service:
    name: network			# 服务名
    state: restarted		# 重启服务
    args: eth0			# 指定网卡对象

state列表项的不同属性值

列表项 说明
reloaded 重载服务
restarted 重启服务
started 启动服务
stopped 停止服务

at模块列表项

列表项 说明
name 服务名
state 对服务的操作
enabled 是否设置为开机自启
pattern 如果服务不响应状态命令,在ps中查找该选项值,如果找到则代表服务启动
args 携带的其它参数

14. parted模块

parted模块默认不存在,需要安装对应的集合。

主要功能:使用'parted'命令行工具配置块设备分区

查询方式

bash 复制代码
ansible-navigator doc parted -m stdout

EXAMPLE 1

yaml 复制代码
- name: Create a new ext4 primary partition
  community.general.parted:
    device: /dev/sdb		# 操作的磁盘
    number: 1				# 分区编号
    state: present			# 新建分区
    fs_type: ext4		# 分区类型

EXAMPLE 2

yaml 复制代码
- name: Create a new primary partition for LVM
  community.general.parted:
    device: /dev/sdb		# 操作的磁盘
    number: 2				# 分区编号
    flags: [ lvm ]		# 在分区上设置的标志的列表
    state: present		# 新建分区
    part_start: 1GiB	# 开始分区位置

以事实变量的方式返回分区信息

bash 复制代码
- name: Read device information (always use unit when probing)
  community.general.parted: device=/dev/sdb unit=MiB
  register: sdb_info

state列表项的不同属性值

列表项 说明
absent 新建分区
present 删除分区
info 返回设备信息

parted模块列表项

列表项 说明
device 操作的磁盘
number 分区编号
state 对分区的操作
unit 分区的单位
fs_type 为给定的分区设置文件系统类型
part_end 分区的开始位置
part_start 分区的结束位置

15. lvg模块

lvg模块默认不存在,需要安装对应的集合。

主要功能:创建、删除重新定位卷组

查询方式

bash 复制代码
ansible-navigator doc lvg -m stdout

EXAMPLE 1

yaml 复制代码
- name: Create a volume group on top of /dev/sda1 with physical extent size = 32MB
  community.general.lvg:
    vg: vg.services		# 卷组的名称
    pvs: /dev/sda1		# 用作卷组成员设备的硬盘/分区
    pesize: 32			# 块大小

EXAMPLE 2

yaml 复制代码
- name: Create a volume group on top of /dev/sdb with physical extent size = 128KiB
  community.general.lvg:
    vg: vg.services		# 卷组的名称
    pvs: /dev/sdb		# 用作卷组成员设备的硬盘/分区
    pesize: 128K
# 块大小。必须是至少1扇区中的2个功率(扇区大小是VG中pesize当前使用的最大扇区大小),或者至少128KiB

lvg模块列表项

列表项 说明
vg 卷组的名称
pvs 用作卷组成员设备的硬盘/分区
state 对卷组的操作
pvresize 块大小

16. lvol模块

主要功能:创建、删除或调整逻辑卷大小

查询方式

bash 复制代码
ansible-navigator doc lvol -m stdout

EXAMPLE 1

yaml 复制代码
- name: Create a logical volume of 512m
  community.general.lvol:
    vg: firefly		# 指定卷组
    lv: test		# 逻辑卷名
    size: 512		# 逻辑卷大小

EXAMPLE 2

yaml 复制代码
- name: Create cache pool logical volume
  community.general.lvol:
    vg: firefly		# 指定卷组名称
    lv: lvcache		# 逻辑卷的名称
    size: 512m		# 逻辑卷的大小
    opts: --type cache-pool		# 传递的参数

EXAMPLE 3

yaml 复制代码
 name: Extend the logical volume to consume all remaining space in the volume group
  community.general.lvol:
    vg: firefly			# 指定卷组的名称
    lv: test			# 逻辑卷的名称
    size: +100%FREE		# 逻辑卷的大小为:全部空余时间

lvol模块列表项

列表项 说明
vg 卷组的名称
lv 逻辑卷的名称
size 逻辑卷的大小
pvs 物理范围的大小
opts 传递给lvcreate命令的选项
resizefs 刷新逻辑卷的大小
force 卷的减小或删除操作需要此开关。确保文件系统永远不会因错误而损坏/销毁。
shrink 如果当前容量小于请求的容量,则缩小请求容量(默认yes)
snapshot 快照卷的名称
active 逻辑磁盘是否处于活跃状态,不活跃则主机不可见(默认yes)
thinpool 精简卷名

17. filesystem模块

主要功能:创建文件系统

查询方式

bash 复制代码
ansible-navigator doc filesystem -m stdout

EXAMPLE 1

yaml 复制代码
- name: Create a ext4 filesystem on /dev/sdb1 and check disk blocks
  community.general.filesystem:
    fstype: ext4
    dev: /dev/sdb1
    opts: -cc

EXAMPLE 2

yaml 复制代码
- name: Blank filesystem signature on /dev/sdb1
  community.general.filesystem:
    dev: /dev/sdb1
    state: absent

EXAMPLE 3

yaml 复制代码
- name: Create a filesystem on top of a regular file
  community.general.filesystem:
    dev: /path/to/disk.img
    fstype: vfat

state列表项的不同属性值

列表项 说明
absent 新建文件系统
present 删除文件系统

filesystem模块列表项

列表项 说明
fstype 创建的文件系统
dev 块设备的路径
opts 传递给mkfs命令的选项列表
state 对文件系统的操作
resizefs 刷新空间

18. mount模块

主要功能:控制/etc/fstab中的配置

查询方式

bash 复制代码
ansible-navigator doc mount -m stdout

EXAMPLE 1

yaml 复制代码
- name: Mount DVD read-only
  ansible.posix.mount:挂载点路径
    path: /mnt/dvd		# 挂载点路径
    src: /dev/sr0		# 挂载的设备
    fstype: iso9660		# 文件系统类型(挂载设备的文件系统)
    opts: ro,noauto		# 挂载选项
    state: present		# 新增条目

EXAMPLE 2

yaml 复制代码
- name: Mount up device by UUID
  ansible.posix.mount:
    path: /home			# 挂载点
    src: UUID=b3e48f45-f933-4c8e-a700-22a159ec9077
    fstype: xfs			# 文件系统类型(挂载设备的文件系统)
    opts: noatime		# 挂载选项
    state: present		# 新增条目

state列表项的不同属性值

列表项 说明
absent 删除fstab文件中条目,卸载设备并删除挂载点
present 只写入fstab文件中
mounted 设备会被主动挂载并写入fstab文件,如果挂载点不存在,会创建挂载点
unmounted 卸载设备,但不修改fstab文件
remounted 强制刷新设备并重新挂载

filesystem模块列表项

列表项 说明
path 挂载点路径
src 挂载的设备
fstype 文件系统类型(挂载设备的文件系统)
opts 挂载选项
state 挂载的相关操作
boot 是否在引导时间挂载(默认True)
相关推荐
小安运维日记9 分钟前
Linux云计算 |【第四阶段】NOSQL-DAY1
linux·运维·redis·sql·云计算·nosql
CoolTiger、3 小时前
【Vmware16安装教程】
linux·虚拟机·vmware16
学习3人组4 小时前
CentOS 中配置 OpenJDK以及多版本管理
linux·运维·centos
厨 神5 小时前
vmware中的ubuntu系统扩容分区
linux·运维·ubuntu
Karoku0665 小时前
【网站架构部署与优化】web服务与http协议
linux·运维·服务器·数据库·http·架构
geek_Chen015 小时前
虚拟机共享文件夹开启后mnt/hgfs/下无sharefiles? --已解决
linux·运维·服务器
(⊙o⊙)~哦5 小时前
linux 解压缩
linux·运维·服务器
牧小七6 小时前
Linux命令---查看端口是否被占用
linux
鸡鸭扣7 小时前
虚拟机:3、(待更)WSL2安装Ubuntu系统+实现GPU直通
linux·运维·ubuntu
友友马8 小时前
『 Linux 』HTTP(一)
linux·运维·服务器·网络·c++·tcp/ip·http