Linux ansible常用模块的使用(2)

Linux ansible常用模块的使用(2)

1.使用service模块管理服务

可以通过systemctl对服务进行启动、重启、关闭等操作,在ansible中可以调用service模块来实现对服务的管理,service模块常见的参数包括以下几个。
(1)name :指定对哪个服务进行管理。
(2)enabled :用于设置此服务是否开机自动启动,值为yes或no,默认值为空。
(3)state:用于启动或关闭服务,其值包括started、stopped、restarted等。

首先判断rh2上的vsftpd是否启动,命令如下。

[blab@rh1 ~]$ ansible rh2 -m shell -a "systemctl is-active vsftpd"
rh2 | FAILED | rc=3 >>
inactivenon-zero return code

这里返回值为3(rc=3),说明rh2上的vsftpd没有启动。

启动vsftpd并设置开机自动启动,命令如下。

[blab@rh1 ~]$ ansible rh2 -m yum -a "name=vsftpd state=latest"
rh2 | SUCCESS => {
    "ansible_facts": {
        "discovered_interpreter_python": "/usr/libexec/platform-python"
    },
    "changed": false,
    "msg": "Nothing to do",
    "rc": 0,
    "results": []
}

到rh2验证命令如下

[root@rh2 blab]# systemctl is-enabled vsftpd

2.使用parted模块对硬盘分区

在 ansible中如果对分区进行管理,使用的是parted模块,parted模块常见的参数包括以下几个。

1)device:指的是哪块磁盘。
(2)number:第几个分区。
(3)part_start:指的是从硬盘的什么位置开始划分,不写默认为从头开始(0%)。
(4)part_end:指的是到硬盘的什么位置作为分区的结束点。
(5)state:用于指定操作,present是创建,absent是删除。

自行在rh2上新添加一块类型为SCSI、大小为20G的硬盘,命令如下。

[root@rh2 blab]# lsblk
NAME              MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sr0                11:0    1 10.2G  0 rom  /mnt
nvme0n1           259:0    0   20G  0 disk 
├─nvme0n1p1       259:1    0    1G  0 part /boot
└─nvme0n1p2       259:2    0   19G  0 part 
  ├─rhel_rh2-root 253:0    0   18G  0 lvm  /
  └─rhel_rh2-swap 253:1    0    1G  0 lvm  [SWAP]

在rh2上对/devIsdb创建一个大小为2GB的分区/dev/sda1,命令如下

[blab@rh1 ~]$ ansible rh2 -m parted -a "device=/dev/sda number=1 part_end=2GiB state=present"
rh2 | CHANGED => {
    "ansible_facts": {
        "discovered_interpreter_python": "/usr/libexec/platform-python"
    },
    "changed": true,
    "disk": {

此例是对/dev/sdb创建第一个分区,因为从硬盘头开始,所以不需要指定part_start,此分区到2GB位置结束。

[blab@rh1 ~]$ ansible rh2 -m shell -a "lsblk"
rh2 | CHANGED | rc=0 >>
NAME              MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda                 8:0    0   20G  0 disk 
└─sda1              8:1    0    2G  0 part 
sr0                11:0    1 10.2G  0 rom  /mnt
nvme0n1           259:0    0   20G  0 disk 
├─nvme0n1p1       259:1    0    1G  0 part /boot
└─nvme0n1p2       259:2    0   19G  0 part 
  ├─rhel_rh2-root 253:0    0   18G  0 lvm  /
  └─rhel_rh2-swap 253:1    0    1G  0 lvm  [SWAP]

在rh2上对/dev/sdb创建一个大小为2GB的分区/dev/sda2,命令如下。

[blab@rh1 ~]$ ansible rh2 -m parted -a "device=/dev/sda number=2 part_start=2GiB part_end=4GiB \
> state=present"
rh2 | CHANGED => {
    "ansible_facts": {
        "discovered_interpreter_python": "/usr/libexec/platform-python"
    },
    "changed": true,
    "disk": {
        "dev": "/dev/sda",
        "logical_block": 512,
        "model": "VMware, VMware Virtual S",
        "physical_block": 512,
        "size": 20971520.0,
        "table": "msdos",

此例是对/dev/sdb创建第二个分区,从2GiB位置开始,到4GiB位置结束。

在rh2上查看分区,命令如下。

[blab@rh1 ~]$ ansible rh2 -m shell -a  "lsblk"
rh2 | CHANGED | rc=0 >>
NAME              MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda                 8:0    0   20G  0 disk 
├─sda1              8:1    0    2G  0 part 
└─sda2              8:2    0    2G  0 part 
sr0                11:0    1 10.2G  0 rom  /mnt
nvme0n1           259:0    0   20G  0 disk 
├─nvme0n1p1       259:1    0    1G  0 part /boot
└─nvme0n1p2       259:2    0   19G  0 part 
  ├─rhel_rh2-root 253:0    0   18G  0 lvm  /
  └─rhel_rh2-swap 253:1    0    1G  0 lvm  [SWAP]

删除server2上的/dev/sdb2,命令如下。

[blab@rh1 ~]$ ansible rh2 -m parted -a "device=/dev/sda number=2 state=absent"
rh2 | CHANGED => {
    "ansible_facts": {
        "discovered_interpreter_python": "/usr/libexec/platform-python"
    },
    "changed": true,
    "disk": {
        "dev": "/dev/sda",
        "logical_block": 512,
        "model": "VMware, VMware Virtual S",
        "physical_block": 512,
        "size": 20971520.0,

验证,命令如下

[blab@rh1 ~]$ ansible rh2 -m shell -a "lsblk"
rh2 | CHANGED | rc=0 >>
NAME              MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda                 8:0    0   20G  0 disk 
└─sda1              8:1    0    2G  0 part 
sr0                11:0    1 10.2G  0 rom  /mnt
nvme0n1           259:0    0   20G  0 disk 
├─nvme0n1p1       259:1    0    1G  0 part /boot
└─nvme0n1p2       259:2    0   19G  0 part 
  ├─rhel_rh2-root 253:0    0   18G  0 lvm  /
  └─rhel_rh2-swap 253:1    0    1G  0 lvm  [SWAP]

可以看到,/dev/sda2已经被删除了。

请自行创建出/dev/sda2和/dev/sda3备用。

[blab@rh1 ~]$ ansible rh2 -m shell -a "lsblk"
rh2 | CHANGED | rc=0 >>
NAME              MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda                 8:0    0   20G  0 disk 
├─sda1              8:1    0    2G  0 part 
├─sda2              8:2    0    2G  0 part 
└─sda3              8:3    0    2G  0 part 
sr0                11:0    1 10.2G  0 rom  /mnt
nvme0n1           259:0    0   20G  0 disk 
├─nvme0n1p1       259:1    0    1G  0 part /boot
└─nvme0n1p2       259:2    0   19G  0 part 
  ├─rhel_rh2-root 253:0    0   18G  0 lvm  /
  └─rhel_rh2-swap 253:1    0    1G  0 lvm  [SWAP]

3.使用filesystem模式格式化

分区创建好之后,需要对分区进行格式化操作,格式化的模块为filesystem,filesystem模块常见的参数包括以下几个。
(1)dev:用于指定对哪个设备进行格式化。
(2)fstype:用于指定用什么文件系统进行格式化。
(3)force:是否强制格式化,默认为no。

把 rh2上的/dev/sda3格式化为XFS文件系统,命令如下。

[blab@rh1 ~]$ ansible rh2 -m filesystem -a "dev=/dev/sda3 fstype=xfs"
rh2 | CHANGED => {
    "ansible_facts": {
        "discovered_interpreter_python": "/usr/libexec/platform-python"
    },
    "changed": true
}

如果想重新格式化,需要加上 force选项,命令如下。

[blab@rh1 ~]$ ansible rh2 -m filesystem -a "dev=/dev/sda3 fstype=xfs force=yes"
rh2 | CHANGED => {
    "ansible_facts": {
        "discovered_interpreter_python": "/usr/libexec/platform-python"
    },
    "changed": true
}

4.使用mount 模块挂载文件系统

格式化之后就需要挂载分区,挂载用的是mount模块,mount模块常见的参数包括以下
几个。
(1)src:用于指定挂载哪个设备。
(2)path:用于指定挂载点。
(3)fstype:用于指定挂载的文件系统,这个选项一定要指定。
(4)opts:用于指定挂载选项,如果不指定则为defaults。
(5)state:此参数的值如下。
①mounted:挂载的同时,也会写入/etc/fstab。
②present:只是写入/etc/fstab,但当前并没有挂载。
③unmounted:只卸载,并不会把条目从/etc/fstab中删除。
④absent:卸载并从/etc/fstab中删除。

把rh2上的/dev/sda3挂载到/123目录上,挂载选项为只读,命令如下。

[blab@rh1 ~]$ ansible rh2 -m shell -a 'mkdir /123'
[WARNING]: Consider using the file module with state=directory rather than running 'mkdir'.  If you
need to use command because file is insufficient you can add 'warn: false' to this command task or set
'command_warnings=False' in ansible.cfg to get rid of this message.
rh2 | CHANGED | rc=0 >>

[blab@rh1 ~]$ ansible rh2 -m mount -a "src=/dev/sda3 path=/123 state=mounted fstype=xfs opts=defaults,ro"
rh2 | CHANGED => {
    "ansible_facts": {
        "discovered_interpreter_python": "/usr/libexec/platform-python"
    },
    "changed": true,
    "dump": "0",
    "fstab": "/etc/fstab",
    "fstype": "xfs",
    "name": "/123",
    "opts": "defaults,ro",
    "passno": "0",
    "src": "/dev/sda3"
}

这里指定了挂载选项为defaults,ro,多个选项用逗号隔开。

验证,命令如下。

[blab@rh1 ~]$ ansible rh2 -m shell -a "df -Th | grep sda3"
rh2 | CHANGED | rc=0 >>
/dev/sda3                 xfs       2.0G  256K  2.0G    1% /123

因为挂载时state的值是mounted,所以不仅把/dev/sdb3挂载了,也写人/etc/fstab了。

在rh2上卸载并从/etc/fstab中删除/dev/sda3,命令如下。

[blab@rh1 ~]$ ansible rh2 -m mount -a "src=/dev/sda3 path=/123 state=absent"
rh2 | CHANGED => {
    "ansible_facts": {
        "discovered_interpreter_python": "/usr/libexec/platform-python"
    },
    "changed": true,
    "dump": "0",
    "fstab": "/etc/fstab",
    "name": "/123",
    "opts": "defaults",
    "passno": "0",
    "src": "/dev/sda3"
}

5.使用lvg模块对卷组进行管理

使用lvg模块管理卷组,此模块常见的参数包括以下几个。

(1)pvs:用于指定物理卷,如果有多个PV则用逗号隔开,不需要提前创建PV,此命令会自动创建PV。
(2)vg:用于指定卷组的名称。
(3)pesize:用于指定PE的大小。
(4)state:此参数的值如下。present :用于创建卷组,默认。absent :用于删除卷组。

在rh2上创建名称为vg0的卷组,所使用的分区为/dev/sda1和/dev/sda2/pesize指定为16M。

先确认rh2上不存在任何PV 和VG,命令如下。

[blab@rh1 ~]$ ansible rh2 -m shell -a "vgs"
rh2 | CHANGED | rc=0 >>
  VG       #PV #LV #SN Attr   VSize   VFree
  rhel_rh2   1   2   0 wz--n- <19.00g    0 

开始创建vg0,命令如下。

[blab@rh1 ~]$ ansible rh2 -m lvg -a "pvs=/dev/sda1,/dev/sda2 vg=vg0 pesize=16 state=present"
rh2 | CHANGED => {
    "ansible_facts": {
        "discovered_interpreter_python": "/usr/libexec/platform-python"
    },
    "changed": true
}

这里如果不指定pesize选项,则默认为4。

验证,命令如下。

[blab@rh1 ~]$ ansible rh2 -m shell -a "vgs"
rh2 | CHANGED | rc=0 >>
  VG       #PV #LV #SN Attr   VSize   VFree 
  rhel_rh2   1   2   0 wz--n- <19.00g     0 
  vg0        2   0   0 wz--n-  <3.97g <3.97g

删除卷组 vg0,命令如下。

[blab@rh1 ~]$ ansible rh2 -m lvg -a "vg=vg0 pesize=16 state=absent"
rh2 | CHANGED => {
    "ansible_facts": {
        "discovered_interpreter_python": "/usr/libexec/platform-python"
    },
    "changed": true
}

验证,命令如下。

[blab@rh1 ~]$ ansible rh2 -m shell -a "vgs"
rh2 | CHANGED | rc=0 >>
  VG       #PV #LV #SN Attr   VSize   VFree
  rhel_rh2   1   2   0 wz--n- <19.00g    0

可以看到,vg0已经没有了。

请使用命令再次把vg0创建出来。

6.使用lvol模块管理逻辑卷

卷组创建好之后就要创建逻辑卷了,管理逻辑卷的模块是Ivol,lvol模块常见的参数包含
以下几个。
(1)vg:用于指定在哪个卷组上划分逻辑卷。
(2)lv:用于指定逻辑卷的名称。
(3)size:用于指定逻辑卷的大小。
(4)state:此参数的值如下。present :用于创建逻辑卷。absent :用于删除逻辑卷。

在rh2的卷组 vg0上,创建大小为1G、名称为lv0的逻辑卷。

先判断rh2上是否存在逻辑卷,命令如下。

[blab@rh1 ~]$ ansible rh2 -m shell -a "lvs"
rh2 | CHANGED | rc=0 >>
  LV   VG       Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  root rhel_rh2 -wi-ao---- <18.00g                                                    
  swap rhel_rh2 -wi-ao----   1.00g

可以看到,不存在任何逻辑卷。下面开始创建逻辑卷,命令如下 。

[blab@rh1 ~]$ ansible rh2 -m lvol -a "vg=vg0 lv=lv0 size=1G"
rh2 | CHANGED => {
    "ansible_facts": {
        "discovered_interpreter_python": "/usr/libexec/platform-python"
    },
    "changed": true,
    "msg": ""
}

验证,命令如下

[blab@rh1 ~]$ ansible rh2 -m shell -a "lvs"
rh2 | CHANGED | rc=0 >>
  LV   VG       Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  root rhel_rh2 -wi-ao---- <18.00g                                                    
  swap rhel_rh2 -wi-ao----   1.00g                                                    
  lv0  vg0      -wi-a-----   1.00g 

可以看到,此逻辑卷已经创建出来了。

在 rh2上删除逻辑卷/dev/vg0/lv0,命令如下。

[blab@rh1 ~]$ ansible rh2 -m lvol -a "vg=vg0 lv=lv0 state=absent force=yes"
rh2 | CHANGED => {
    "ansible_facts": {
        "discovered_interpreter_python": "/usr/libexec/platform-python"
    },
    "changed": true
}

你可能感兴趣的:(linux,ansible,服务器)