RedHat9 | Ansible 模块参数记录

发布于:2024-07-25 ⋅ 阅读:(70) ⋅ 点赞:(0)

1. file模块

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

查询方式

ansible-navigator doc file -m stdout

EXAMPLE 1

- 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

- 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模块

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

查询方式

ansible-navigator doc lineinfile -m stdout

EXAMPLE 1

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

EXAMPLE 2

- 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

- 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模块

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

查询方式

ansible-navigator doc template -m stdout

EXAMPLE 1

- 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

- 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模块

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

查询方式

ansible-navigator doc firewalld -m stdout

EXAMPLE 1

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

EXAMPLE 2

- 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。

查询方式

ansible-navigator doc dnf -m stdout

EXAMPLE 1

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

EXAMPLE 2

- 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模块

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

查询方式

ansible-navigator doc package_facts -m stdout

EXAMPLE 1

- 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仓库文件

查询方式

ansible-navigator doc yum_repository -m stdout

模块名忘记查找方式

ansible-doc -l | grep yum

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

EXAMPLE 1

- 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公钥

查询方式

ansible-navigator doc rpm_key -m stdout

EXAMPLE 1

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

state列表项的不同属性值

列表项 说明
present 导入
absent 删除

9. user模块

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

查询方式

ansible-navigator doc user -m stdout

EXAMPLE 1

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

EXAMPLE 2

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

EXAMPLE 3

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

EXAMPLE 4

- 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模块

主要功能:管理组

查询方式

ansible-navigator doc group -m stdout

EXAMPLE 1

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

EXAMPLE 2

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

查询方式

ansible-navigator doc at -m stdout

EXAMPLE 1

- 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

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

EXAMPLE 3

- 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模块

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

查询方式

ansible-navigator doc cron -m stdout

EXAMPLE 1

- 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

- 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模块

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

查询方式

ansible-navigator doc service -m stdout

EXAMPLE 1

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

EXAMPLE 2

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

EXAMPLE 3

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

EXAMPLE 4

- 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’命令行工具配置块设备分区

查询方式

ansible-navigator doc parted -m stdout

EXAMPLE 1

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

EXAMPLE 2

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

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

- 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模块默认不存在,需要安装对应的集合。

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

查询方式

ansible-navigator doc lvg -m stdout

EXAMPLE 1

- 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

- 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模块

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

查询方式

ansible-navigator doc lvol -m stdout

EXAMPLE 1

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

EXAMPLE 2

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

EXAMPLE 3

 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模块

主要功能:创建文件系统

查询方式

ansible-navigator doc filesystem -m stdout

EXAMPLE 1

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

EXAMPLE 2

- name: Blank filesystem signature on /dev/sdb1
  community.general.filesystem:
    dev: /dev/sdb1
    state: absent

EXAMPLE 3

- 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中的配置

查询方式

ansible-navigator doc mount -m stdout

EXAMPLE 1

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

EXAMPLE 2

- 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)