Ansible常用模块
yum_repository模块
Ansible使用yum_repository模块创建或修改yum源配置文件。
常用选项:
file: 指定仓库文件名
name:指定仓库名称
description::指定仓库描述
baseurl :指定源路径
enabled :仓库是否启用
gpgcheck:仓库是否检测gpgkey
state:状态,默认值present 建立;absent 为删除
# 创建yum源
[root@pubserver ansible]# ansible webservers -m yum_repository -a "file=myrepo name=myApp description='My App' baseurl=ftp://192.168.88.240/dvd/AppStream gpgcheck=no enabled=yes"
yum模块
Ansible使用yum模块安装、卸载、升级软件包。
常用选项:
name:包名
state: 状态。present 安装,如果已安装则忽略;absent卸载;latest安装或升级到最新版本
# 给web1安装httpd
[root@pubserver ansible]# ansible web1 -m yum -a 'name=httpd state=present'
# 卸载httpd
[root@pubserver ansible]# ansible web1 -m yum -a 'name=httpd state=absent'
service模块
Ansible使用service模块管理系统服务状态(启动、关闭、重启、开机自启动)。
常用选项:
name:控制的服务名
state:状态。 started启动;stopped关闭;restarted重启
enabled:设置开机启动。yes表示设置开机自启;no表示设置开机不自启
# 设置httpd开机自启,并且启动服务
[root@pubserver ansible]# ansible web1 -m service -a 'name=httpd state=started enable=yes'
lvg模块
逻辑卷(LVM)是Linux系统对硬盘分区的一种管理机制。利用逻辑卷可以动态管理磁盘存储空间,提高磁盘分区管理的灵活性。
创建逻辑卷的原理是:把硬盘或分区转换成物理卷PV;再把一个到多个PV组合成卷组VG;在VG上划分逻辑卷LV。LV可以像普通分区那样,进行分区、格式化、挂载使用。
Ansible使用lvg模块来创建、删除卷组(VG),修改卷组大小。
常用选项:
vg:定义卷组名。vg:volume group
pvs:由哪些物理卷构成。pvs:physical volumes
state:状态。present 创建;absent 删除
# 创建物理卷
[root@web1 ~]# parted /dev/nvme0n2 mklabel gpt
信息: You may need to update /etc/fstab.
[root@web1 ~]# parted /dev/nvme0n2 mkpart primary 1 50%
信息: You may need to update /etc/fstab.
[root@web1 ~]# parted /dev/nvme0n2 mkpart primary 50% 100%
[root@web1 ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sr0 11:0 1 1024M 0 rom
nvme0n1 259:0 0 20G 0 disk
├─nvme0n1p1 259:1 0 1G 0 part /boot
└─nvme0n1p2 259:2 0 19G 0 part
├─rl-root 253:0 0 17G 0 lvm /
└─rl-swap 253:1 0 2G 0 lvm [SWAP]
nvme0n2 259:3 0 20G 0 disk
├─nvme0n2p2 259:5 0 10G 0 part
└─nvme0n2p1 259:6 0 10G 0 part
nvme0n3 259:4 0 20G 0 disk
# 安装工具
[root@pubserver ansible]# ansible web1 -m yum -a 'name=lvm2'
# 在web1上创建名为myvg的卷组
[root@pubserver ansible]# ansible web1 -m lvg -a 'vg=myvg pvs=/dev/nvme0n2p1'
[root@web1 ~]# vgs
VG #PV #LV #SN Attr VSize VFree
myvg 1 0 0 wz--n- <10.00g <10.00g
rl 1 2 0 wz--n- <19.00g 0
[root@web1 ~]# pvs
PV VG Fmt Attr PSize PFree
/dev/nvme0n1p2 rl lvm2 a-- <19.00g 0
/dev/nvme0n2p1 myvg lvm2 a-- <10.00g <10.00g
# 扩容
[root@pubserver ansible]# ansible web1 -m lvg -a 'vg=myvg pvs=/dev/nvme0n2p1,/dev/nvme0n2p2'
[root@web1 dev]# vgs
VG #PV #LV #SN Attr VSize VFree
myvg 2 0 0 wz--n- 19.99g 19.99g
rl 1 2 0 wz--n- <19.00g 0
[root@web1 dev]# pvs
PV VG Fmt Attr PSize PFree
/dev/nvme0n1p2 rl lvm2 a-- <19.00g 0
/dev/nvme0n2p1 myvg lvm2 a-- <10.00g <10.00g
/dev/nvme0n2p2 myvg lvm2 a-- <10.00g <10.00g
# 删除
[root@pubserver ansible]# ansible web1 -m lvg -a 'vg=myvg state=absent'
lvol模块
Ansible使用lvol模块创建、删除逻辑卷(LV),修改逻辑卷大小。
常用选项:
vg:指定在哪个卷组上创建逻辑卷
lv:创建的逻辑卷名。lv:logical volume
size:逻辑卷的大小,不写单位,以M为单位
state状态。present 创建;absent 删除
# 在web1上创建名为mylv的逻辑卷,大小为2GB
[root@pubserver ansible]# ansible web1 -m lvol -a 'lv=mylv vg=myvg size=2G'
[root@web1 dev]# lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
mylv myvg -wi-a----- 2.00g
root rl -wi-ao---- <17.00g
swap rl -wi-ao---- 2.00g
#将mylv的逻辑卷扩容至4GB
[root@pubserver ansible]# ansible web1 -m lvol -a 'lv=mylv vg=myvg size=4G'
[root@web1 dev]# lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
mylv myvg -wi-a----- 4.00g
root rl -wi-ao---- <17.00g
swap rl -wi-ao---- 2.00g
# 强制删除
[root@pubserver ansible]# ansible web1 -m lvol -a 'lv=mylv state=absent vg=myvg force=yes'
filesystem模块
Ansible使用filesystem模块进行格式化,即创建文件系统。
常用选项:
fstype:指定文件系统类型
dev:指定要格式化的设备,可以是分区,可以是逻辑卷
# 格式化
[root@pubserver ansible]# ansible web1 -m filesystem -a 'fstype=xfs dev=/dev/myvg/mylv'
[root@web1 dev]# blkid /dev/myvg/mylv
/dev/myvg/mylv: UUID="ebea4fd6-152b-42cd-bbbf-cfacb792e286" BLOCK_SIZE="512" TYPE="xfs"
mount模块
Ansible使用mount模块挂载文件系统。
常用选项:
path:挂载点。如果挂载点不存在,自动创建
src:待挂载的设备
stype:文件系统类型
state:状态。mounted,表示永久挂载
# 挂载
[root@pubserver ansible]# ansible web1 -m mount -a 'path=/data src=/dev/myvg/mylv fstype=xfs state=mounted'
[root@web1 dev]# df -h /data
文件系统 容量 已用 可用 已用% 挂载点
/dev/mapper/myvg-mylv 4.0G 61M 4.0G 2% /data
# 卸载
[root@pubserver ansible]# ansible web1 -m mount -a 'path=/data state=absent'
[root@web1 dev]# df -h /data
df: /data: 没有那个文件或目录