第二十九章 常用模块的使用

目录

1.ansible的基本语法格式。

2.shell模块。

3.文件管理的file模块。

4.copy和fetch模块

5.yum_repository模块

6.使用yum模块管理软件包

7.使用service模块管理服务

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

9.使用filesystem模块格式化

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

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

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


1.ansible的基本语法格式。

ansible 机器名 -m 模块x -a "模块的参数"

(1)查看所有模块。

[bdqn@rhel1 ~]$ ansible-doc -l

2.shell模块。

(1)shell模块的语法格式。

ansible 主机组 -m shell -a "系统命令"

(2)练习1:在server2上执行hostname命令。

[bdqn@rhel1 ~]$ ansible server2 -m shell -a "hostname"
server2 | CHANGED | rc=0 >>
rhel8
  • 这里rc=0的意思是执行此命令之后的返回值为0,rc的意思是returm code(返回值),为0说明正确执行了,非零说明没有正确执行。

(3)练习2:在server2上执行一个错误的命令。

[bdqn@rhel1 ~]$ ansible server2 -m shell -a "hostnamexx"
server2 | FAILED | rc=127 >>
/bin/sh: hostnamexx: 未找到命令non-zero return code
  • 这里rc=127的意思是执行此命令之后的返回值为127,非零说明没有正确执行。

3.文件管理的file模块。

file模块用于创建和删除文件/目录,修改文件/目录属性,其常见的参数包括以下几个。
  • path:用于指定文件/目录的路径,此选项可以用name或dest替代。
  • state:指定行为。
  • touch:创建文件。
  • directory:创建目录。
  • file:对已存文件进行修改。
  • absent:删除
  • link:软链接。
  • hard:硬链接。
  • 其他参数:owner指定所有者,group指定所属组,mode指定权限,setype指定上下文

(1)练习1:在server2上创建一个文件/opt/hosts,并设置所有者为root,所属组为bin,权限为444。

[bdqn@rhel1 ~]$ ansible server2 -m file -a "path=/opt/hosts owner=root group=bin mode=444
state=touch"

server2 | CHANGED => {
    "ansible_facts": {
        "discovered_interpreter_python": "/usr/libexec/platform-python"
    },
    "changed": true,
    "dest": "/opt/hosts",
    "gid": 1,
    "group": "bin",
    "mode": "0444",
    "owner": "root",
    "secontext": "unconfined_u:object_r:usr_t:s0",
    "size": 0,
    "state": "file",
    "uid": 0

(2)查看/opt/hosts文件的属性。

[bdqn@rhel1 ~]$ ansible server2 -m shell -a "ls -l /opt/hosts"

server2 | CHANGED | rc=0 >>
-r--r--r--. 1 root bin 0 12月 18 11:16 /opt/hosts

(3)练习2:为/opt/hosts创建一个软链接/opt/hosts123。

[bdqn@rhel1 ~]$ ansible server2 -m file -a "src=/opt/hosts dest=/opt/hosts123 state=link"

server2 | CHANGED => {
    "ansible_facts": {
        "discovered_interpreter_python": "/usr/libexec/platform-python"
    },
    "changed": true,
    "dest": "/opt/hosts123",
    "gid": 0,
    "group": "root",
    "mode": "0777",
    "owner": "root",
    "secontext": "unconfined_u:object_r:usr_t:s0",
    "size": 10,
    "src": "/opt/hosts",
    "state": "link",
    "uid": 0

(4)验证命令如下。

[bdqn@rhel1 ~]$ ansible server2 -m shell -a "ls -l /opt"

server2 | CHANGED | rc=0 >>
总用量 0
-r--r--r--. 1 root bin   0 12月 18 11:16 hosts
lrwxrwxrwx. 1 root root 10 12月 18 11:21 hosts123 -> /opt/hosts

(5)练习3:删除/opt/hosts123。

[bdqn@rhel1 ~]$ ansible server2 -m file -a 'name=/opt/hosts123 state=absent'

server2 | CHANGED => {
    "ansible_facts": {
        "discovered_interpreter_python": "/usr/libexec/platform-python"
    },
    "changed": true,
    "path": "/opt/hosts123",
    "state": "absent"
}

(6)练习4:创建目录/op/xx,上下文设置为default_t。

[bdqn@rhel1 ~]$ ansible server2 -m file -a 'name=/opt/xx state=directory setype=default_t'

server2 | CHANGED => {
    "ansible_facts": {
        "discovered_interpreter_python": "/usr/libexec/platform-python"
    },
    "changed": true,
    "gid": 0,
    "group": "root",
    "mode": "0755",
    "owner": "root",
    "path": "/opt/xx",
    "secontext": "unconfined_u:object_r:default_t:s0",
    "size": 6,
    "state": "directory",
    "uid": 0
}

(7)练习5:把/opt/hosts的权限改成000,所有者改成bin,所属组改成users。

[bdqn@rhel1 ~]$ ansible server2 -m file -a "name=/opt/hosts owner=bin group=users mode=000"

server2 | CHANGED => {
    "ansible_facts": {
        "discovered_interpreter_python": "/usr/libexec/platform-python"
    },
    "changed": true,
    "gid": 100,
    "group": "users",
    "mode": "0000",
    "owner": "bin",
    "path": "/opt/hosts",
    "secontext": "unconfined_u:object_r:usr_t:s0",
    "size": 0,
    "state": "file",
    "uid": 1
}

(8)验证命令如下。

[bdqn@rhel1 ~]$ ansible server2 -m shell -a "ls -l /opt/hosts"

server2 | CHANGED | rc=0 >>
----------. 1 bin users 0 12月 18 11:16 /opt/hosts
  • 注意:指定文件时用name或path都是可以的。

(9)清空server2 上/opt中所有的内容。

[bdqn@rhel1 ~]$ ansible server2 -m shell -a "rm -rf /opt/*"

[WARNING]: Consider using the file module with state=absent rather than running 'rm'.  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.
server2 | CHANGED | rc=0 >>

4.copy和fetch模块

copy模块常见的参数包括以下几个。

  • src:源文件。
  • dest:目的地,即拷贝到哪里。
  • owner:所有者。
  • group:所属组。
  • mode:权限。

(1)练习1:把本地的文件/etc/ansible/hosts拷贝到目标机器的/opt目录中,并设置权限为000,所有者为bin。

[bdqn@rhel1 ~]$ ansible server2 -m copy -a "src=/etc/ansible/hosts mode=000 owner=bin dest=/opt"

server2 | CHANGED => {
    "ansible_facts": {
        "discovered_interpreter_python": "/usr/libexec/platform-python"
    },
    "changed": true,
    "checksum": "da996f1a52dbae3b6b43a6c50d761e4ed5ec9a9f",
    "dest": "/opt/hosts",
    "gid": 0,
    "group": "root",
    "md5sum": "1564b951dc7c8511c6f9ee842653c541",
    "mode": "0000",
    "owner": "bin",
    "secontext": "system_u:object_r:usr_t:s0",
    "size": 1016,
    "src": "/home/bdqn/.ansible/tmp/ansible-tmp-1702872292.4907491-3407-264161185379246/source",
    "state": "file",
    "uid": 1
}

(2)验证命令如下。

[bdqn@rhel1 ~]$ ansible server2 -m shell -a "ls -l /opt/hosts"

server2 | CHANGED | rc=0 >>
----------. 1 bin root 1016 12月 18 12:04 /opt/hosts

(3)练习2:在被管理机器的/opt目录中创建11.txt,内容为123123。

[bdqn@rhel1 ~]$ ansible server2 -m copy -a 'content="123123" dest=/opt/11.txt'

server2 | CHANGED => {
    "ansible_facts": {
        "discovered_interpreter_python": "/usr/libexec/platform-python"
    },
    "changed": true,
    "checksum": "601f1889667efaebb33b8c12572835da3f027f78",
    "dest": "/opt/11.txt",
    "gid": 0,
    "group": "root",
    "md5sum": "4297f44b13955235245b2497399d7a93",
    "mode": "0644",
    "owner": "root",
    "secontext": "system_u:object_r:usr_t:s0",
    "size": 6,
    "src": "/home/bdqn/.ansible/tmp/ansible-tmp-1702872531.3140666-3504-228093022913533/source",
    "state": "file",
    "uid": 0
}

(4)验证/opt/11.txt的内容。

[bdqn@rhel1 ~]$ ansible server2 -m shell -a "cat /opt/11.txt"

server2 | CHANGED | rc=0 >>
123123
fetch用于把文件从被管理机器拷贝到本机当前目录中,命令如下。
[bdqn@rhel1 ~]$ ansible server2 -m fetch -a "src=/opt/hosts dest=."

server2 | CHANGED => {
    "changed": true,
    "checksum": "da996f1a52dbae3b6b43a6c50d761e4ed5ec9a9f",
    "dest": "/home/bdqn/server2/opt/hosts",
    "md5sum": "1564b951dc7c8511c6f9ee842653c541",
    "remote_checksum": "da996f1a52dbae3b6b43a6c50d761e4ed5ec9a9f",
    "remote_md5sum": null
}

(2)查看命令。

[bdqn@rhel1 ~]$ tree server2
server2
└── opt
    └── hosts

1 directory, 1 file

5.yum_repository模块

(1)利用yum_repository设置yum 源,一个标准的repo配置文件如下所示。
[bdqn@rhel1 ~]$ cat /etc/yum.repos.d/aa.repo 
[aa]
name=aa
baseurl=file:///mnt/AppStream
enabled=1
gpgcheck=0

[bb]
name=bb
baseurl=file:///mnt/BaseOS
enabled=1
gpgcheck=0
其中门中的名称用于区分不同的yum 源。这里参数的含义如下。
  • name:此 yum 源的描述信息。
  • baseurl:用于指定yum源的具体地址。
  • enabled:用于指定是否启用此 yum 源。
  • gpgcheck:用于指定在安装软件包时,是否要进行数字签名的验证,一般设置为0即可。

(1)练习:给server2配置yum源,地址是ftp://192.168.8.11/dvd/AppStream,所需要的密钥文件为ftp://192.168.8.11/dvd/RPM-GPG-KEY-redhat-release。

[bdqn@rhel1 ~]$ ansible server2 -m yum_repository -a "name=app description='this is appstream' baseurl=ftp://192.168.112.70/dvd/AppStream gpgcheck=yes gpgkey=ftp://192.168.112.70/dvd/RPM-GPG-KEY-redhat-release"

server2 | CHANGED => {
    "ansible_facts": {
        "discovered_interpreter_python": "/usr/libexec/platform-python"
    },
    "changed": true,
    "repo": "app",
    "state": "present"
}

(2)执行之后的效果如下。

[bdqn@rhel1 ~]$ ansible server2 -m shell -a "ls /etc/yum.repos.d"
server2 | CHANGED | rc=0 >>
app.repo

(3)app.repo里面的内容如下。

[bdqn@rhel1 ~]$ ansible server2 -m shell -a "cat /etc/yum.repos.d/app.repo"

server2 | CHANGED | rc=0 >>
[app]
baseurl = ftp://192.168.112.70/dvd/AppStream
gpgcheck = 1
gpgkey = ftp://192.168.112.70/dvd/RPM-GPG-KEY-redhat-release
name = this is appstream

(4)给server2配置第二个yum源,地址是 ftp://192.168.8.11/dvd/BaseOS,所需要的密钥 文件为fip://192.168.8.11/dvd/RPM-GPG-KEY-redhat-release。

[bdqn@rhel1 ~]$ ansible server2 -m yum_repository -a "name=baseos description='this is baseos' baseurl=ftp://192.168.112.70/dvd/BaseOS gpgcheck=yes gpgkey=ftp://192.168.112.70/dvd/RPM-GPG-KEY-redhat-release"

server2 | CHANGED => {
    "ansible_facts": {
        "discovered_interpreter_python": "/usr/libexec/platform-python"
    },
    "changed": true,
    "repo": "baseos",
    "state": "present"
}

(5)第二个yum源的内容如下。

[bdqn@rhel1 ~]$ ansible server2 -m shell -a "cat /etc/yum.repos.d/baseos.repo"

server2 | CHANGED | rc=0 >>
[baseos]
baseurl = ftp://192.168.112.70/dvd/BaseOS
gpgcheck = 1
gpgkey = ftp://192.168.112.70/dvd/RPM-GPG-KEY-redhat-release
name = this is baseos

6.使用yum模块管理软件包

yum模块常见的参数包括以下几个

  • name:用于指定软件包的名称。
  • state:此参数的值如下。
  1. presen或installed:用于安装软件包,没有指定state时的默认值就是installed。
  2. absent或removed:用于卸载软件包。
  3. latset:用于更新。
注意 yum模块可以用package模块替代,用于在 Ubuntu等其他系统上管理软件包。

(1)练习1:在server2上安装vsftpd软件。

[bdqn@rhel1 ~]$ ansible server2 -m yum -a "name=vsftpd state=installed"

server2 | CHANGED => {
    "ansible_facts": {
        "discovered_interpreter_python": "/usr/libexec/platform-python"
    },
    "changed": true,
    "msg": "",
    "rc": 0,
    "results": [
        "Installed: vsftpd-3.0.3-34.el8.x86_64"
    ]
}

(2)验证命令如下。

[bdqn@rhel1 ~]$ ansible server2 -m shell -a "rpm -qa | grep vsftpd"

server2 | CHANGED | rc=0 >>
vsftpd-3.0.3-34.el8.x86_64

(3)练习2:在server2上卸载vsftpd。

[bdqn@rhel1 ~]$ ansible server2 -m yum -a "name=vsftpd state=absent"

server2 | CHANGED => {
    "ansible_facts": {
        "discovered_interpreter_python": "/usr/libexec/platform-python"
    },
    "changed": true,
    "msg": "",
    "rc": 0,
    "results": [
        "Removed: vsftpd-3.0.3-34.el8.x86_64"
    ]
}
  • 如果本机没有安装vsftpd,下面的命令就是安装,如果已经安装则更新到最新版。
[bdqn@rhel1 ~]$ ansible server2 -m yum -a "name=vsftpd state=latest"

(4)练习3:安装RPM开发工具。

[bdqn@rhel1 ~]$ ansible server2 -m yum -a "name='@RPM 开发工具' state=installed"

server2 | CHANGED => {
    "ansible_facts": {
        "discovered_interpreter_python": "/usr/libexec/platform-python"
    },
    "changed": true,
  • 如果要安装组或模块,需要在组名或模块名前加@,这个模块要使用引号引起来。

7.使用service模块管理服务

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

(1)首先判断server2的vsftpd是否启动。

[bdqn@rhel1 ~]$ ansible server2 -m shell -a "systemctl is-active vsftpd"
server2 | FAILED | rc=3 >>
inactivenon-zero return code
  • 这里返回值为3(rc=3),说明server2上的vsftpd没有启动。

(2)练习:启动vsftpd并设置开机自动启动。

[bdqn@rhel1 ~]$ ansible server2 -m service -a "name=vsftpd state=started enabled=yes"

server2 | CHANGED => {
    "ansible_facts": {
        "discovered_interpreter_python": "/usr/libexec/platform-python"
    },

(3)验证命令如下。

[bdqn@rhel1 ~]$ ansible server2 -m shell -a "systemctl is-active vsftpd"
server2 | CHANGED | rc=0 >>
active

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

在 ansible中如果对分区进行管理,使用的是parted模块,parted模块常见的参数包括以下几个。
  • device:指的是哪块磁盘。
  • number:第几个分区。
  • part_start:指的是从硬盘的什么位置开始划分,不写默认为从头开始(0%)。
  • part_end:指的是到硬盘的什么位置作为分区的结束点。
  • state:用于指定操作,present是创建,absent是删除。

(1)自行在server2上新添加一块类型为SCSI、大小为20G的硬盘。

[root@rhel8 ~]# lsblk 

NAME        MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda           8:0    0   20G  0 disk 

(2)练习1:在server2上对/dev/sda创建一个大小为2GiB的分区/dev/sda1。

[bdqn@rhel1 ~]$ ansible server2 -m parted -a "device=/dev/sda number=1 part_end=2GiB state=present"

server2 | CHANGED => {
    "ansible_facts": {
        "discovered_interpreter_python": "/usr/libexec/platform-python"

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

[bdqn@rhel1 ~]$ ansible server2 -m shell -a "lsblk"

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

(4)练习2:在server2上对/dev/sdb创建一个大小为2GB的分区/dev/sdb2。

[bdqn@rhel1 ~]$ ansible server2 -m parted -a "device=/dev/sda number=2 part_start=2GiB part_end=4GiB state=present"
  • 此例是对/dev/sdb创建第二个分区,从2GiB位置开始,到4GiB位置结束。

(5)查看server2上面的分区。

[bdqn@rhel1 ~]$ ansible server2 -m shell -a "lsblk"

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

(6)练习3:删除server2上的/dev/sdb2。

[bdqn@rhel1 ~]$ ansible server2 -m parted -a "device=/dev/sda number=2 state=absent"

server2 | CHANGED => {
    "ansible_facts": {
        "discovered_interpreter_python": "/usr/libexec/platform-python"

(7)验证。

[bdqn@rhel1 ~]$ ansible server2 -m shell -a "lsblk"

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

(8)请自行创建出/dev/sdb2和/dev/sdb3备用。

[bdqn@rhel1 ~]$ ansible server2 -m shell -a "lsblk"

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

9.使用filesystem模块格式化

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

(1)练习:把server2的/dev/sda3格式化为XFS文件系统。

[bdqn@rhel1 ~]$ ansible server2 -m filesystem -a "dev=/dev/sda3 fstype=xfs"

server2 | CHANGED => {
    "ansible_facts": {
        "discovered_interpreter_python": "/usr/libexec/platform-python"
    },
    "changed": true
}

(2)如果想要重新格式化,需要加上force选项。

[bdqn@rhel1 ~]$ ansible server2 -m filesystem -a "dev=/dev/sda3 fstype=xfs force=yes"

server2 | CHANGED => {
    "ansible_facts": {
        "discovered_interpreter_python": "/usr/libexec/platform-python"
    },
    "changed": true
}

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

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

(1)练习1:把server2上的/dev/sdb3挂载到/123目录上,挂载选项为只读。

[bdqn@rhel1 ~]$ ansible server2 -m shell -a 'mkdir /123'        创建挂载点
server2 | CHANGED | rc=0 >>

[bdqn@rhel1 ~]$ ansible server2 -m mount -a "src=/dev/sda3 path=/123 state=mounted fstype=xfs opts=defaults,ro"

server2 | 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,多个选项用逗号隔开。

(2)验证。

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

[bdqn@rhel1 ~]$ ansible server2 -m shell -a "grep sda3 /etc/fstab"
server2 | CHANGED | rc=0 >>
/dev/sda3 /123 xfs defaults,ro 0 0

(3)练习2:在server2上卸载并从/etc/fstab中删除/dev/sdb3。

[bdqn@rhel1 ~]$ ansible server2 -m mount -a "src=dev/sda3 path=/123 state=absent"

server2 | 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"
}
  • 注意:如果卸载,path是一定要指定的,src指定不指定都无所谓。

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

  使用lvg模块管理卷组,此模块常见的参数包括以下几个。
  • pvs:用于指定物理卷,如果有多个PV则用逗号隔开,不需要提前创建PV,此命会自动创建PV。
  • vg:用于指定卷组的名称。
  • pesize:用于指定PE的大小。
  • state:此参数的值如下。present :用于创建卷组,默认。absent :用于删除卷组。

(1)练习1:在server2上创建名称为vg0的卷组,所使用的分区为/dev/sdb1和/dev/sdb2/pesize指定为16M。

       先确认server2上不存在任何PV 和VG。
[bdqn@rhel8_70 ~]$ ansible server2 -m shell -a "vgs"
server2 | CHANGED | rc=0 >>

       开始创建vg0,命令如下。这里如果不指定pesize选项,则默认为4。

[bdqn@rhel8_70 ~]$ ansible server2 -m lvg -a "pvs=/dev/sda1,/dev/sda2 vg=vg0 pesize=16 state=present"

server2 | CHANGED => {
    "ansible_facts": {
        "discovered_interpreter_python": "/usr/libexec/platform-python"
    },
    "changed": true
}

      验证,命令如下。

[bdqn@rhel8_70 ~]$ ansible server2 -m shell -a "vgs"

server2 | CHANGED | rc=0 >>
  VG  #PV #LV #SN Attr   VSize  VFree 
  vg0   2   0   0 wz--n- <3.97g <3.97g

(2)练习2:删除卷组vg0,命令如下。

[bdqn@rhel8_70 ~]$ ansible server2 -m lvg -a "vg=vg0 pesize=16 state=absent"

server2 | CHANGED => {
    "ansible_facts": {
        "discovered_interpreter_python": "/usr/libexec/platform-python"
    },
    "changed": true
}

     验证,命令如下。

[bdqn@rhel8_70 ~]$ ansible server2 -m shell -a "vgs"
server2 | CHANGED | rc=0 >>
  • 请再次把vg0创建出来,后面的实验需要用。

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

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

(1)练习1:在server2的卷组 vg0上,创建大小为1G、名称为lv0的逻辑卷。

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

[bdqn@rhel8_70 ~]$ ansible server2 -m shell -a "lvs"
server2 | CHANGED | rc=0 >>

         下面开始创建逻辑卷,命令如下。

[bdqn@rhel8_70 ~]$ ansible server2 -m lvol -a "vg=vg0 lv=lv0 size=1G"

server2 | CHANGED => {
    "ansible_facts": {
        "discovered_interpreter_python": "/usr/libexec/platform-python"
    },
    "changed": true,
    "msg": ""
}

        验证,命令如下。

[bdqn@rhel8_70 ~]$ ansible server2 -m shell -a "lvs"

server2 | CHANGED | rc=0 >>
  LV   VG  Attr       LSize Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  lv0  vg0 -wi-a----- 1.00g 

(2)练习2:在 server2上删除逻辑卷/dev/vg0/lv0,命令如下。

[bdqn@rhel8_70 ~]$ ansible server2 -m lvol -a "vg=vg0 lv=lv0 state=absent force=yes"

server2 | CHANGED => {
    "ansible_facts": {
        "discovered_interpreter_python": "/usr/libexec/platform-python"
    },
    "changed": true
}

  • 37
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值