block:正常的时候执行
rescure: 不正常的时候执行
always:无论如何都会执行

磁盘分区

写入一个文件中
  • 首先给目标主机server2添加一块新的20G的虚拟硬盘/dev/vdc。
    在这里插入图片描述
  • 查看分区的帮助文档:[devops@server1 ansible]$ ansible-doc parted
  • 编辑.yml文件并写入:
[devops@server1 ansible]$ vim my_disk.yml
---
 - hosts: test
  tasks:
    - name: Create a new primary partition
      parted:
        device: /dev/vdc
        number: 1
        part_end: 1GiB      #等于在这一行前面加 part_start: 1MiB
        state: present
    - name: Create two partition
      parted:
        device: /dev/vdc
        number: 2
        part_start: 1GiB
        part_end: 2GiB
        state: present
  • 执行:
[devops@server1 ansible]$ ansible-playbook my_disk.yml 

在这里插入图片描述

  • 在目标主机server2上查看:
[root@server2 ~]# fdisk -l

在这里插入图片描述

将新建分区的信息设置为变量
  • 编辑.yml文件并写入以下:
---
 - hosts: test
  vars_files:
    - storage_vars.yml    #存放变量信息文件
  tasks:
    - name: Create a new primary partition
      parted:
        device: /dev/vdc
        number: "{{ item.number }}"    #变量
        part_start: "{{ item.start }}"    #变量
        part_end: "{{ item.end }}"    #变量
        state: present
      loop: "{{ partitions }}"   #循环partitions模块中的内容
  • 新建storage_vars.yml文件,并写入是第几块分区,起始的位置信息。
[devops@server1 ansible]$ vim storage_vars.yml
---
partitions:
 - number: 1
    start: 1MiB
    end: 1GiB
 - number: 2
    start: 1GiB
    end: 2GiB
  • 执行:
[devops@server1 ansible]$ ansible-playbook my_disk.yml

在这里插入图片描述

  • 在目标主机server2查看
[root@server2 ~]# fdisk -l

在这里插入图片描述

创建逻辑卷

创建逻辑卷
  • 查看帮助文档。
[devops@server1 ansible]$ ansible-doc lvg   #物理卷组
[devops@server1 ansible]$ ansible-doc lvol  #逻辑卷
[devops@server1 ansible]$ ansible-doc filesystem   #文件系统类型
[devops@server1 ansible]$ ansible-doc mount  #挂载
  • 在磁盘分区的基础上继续编辑文件my_disk.yml ,加入创建物理卷组,创建逻辑卷,格式化文件系统并挂载等模块:
[devops@server1 ansible]$ vim my_disk.yml 
---
 - hosts: test
  vars_files:
    - storage_vars.yml
  tasks:
    - name: Create a new primary partition
      parted:
        device: /dev/vdc
        number: "{{ item.number }}"
        part_start: "{{ item.start }}"
        part_end: "{{ item.end }}"
        state: present
      loop: "{{ partitions }}"

    - name: create volume group   #创建pv
      lvg:
        vg: vg
        pvs: /dev/vdc1

    - name: create a logical volume    #创建lv
      lvol:
        vg: vg
        lv: test
        size: 100%VG
        resizefs: true      #可以扩展
        force: yes     #如果有数据,强制创建
        state: present
    - name: create a xfs filesystem     #格式化文件系统
      filesystem:
        fstype: xfs
        dev: /dev/vg/test

    - name: mount lvs     #挂载
      mount:
        path: /var/www/html    #挂载点
        src: /dev/vg/test   #挂载设备
        fstype: xfs
        state: mounted     # 挂载
        opts: noatime   #不修改access time
  • 执行:
[devops@server1 ansible]$ ansible-playbook my_disk.yml 

在这里插入图片描述

  • 在目标主机server2查看:
[root@server2 ~]# df
[root@server2 ~]# cat /etc/fstab

在这里插入图片描述

添加判断条件when,即当要添加的逻辑卷已经存在时直接跳过不执行
  • 修改my_disk.yml文件,在原有的基础上加入when判断条件:
[devops@server1 ansible]$ vim my_disk.yml 

在这里插入图片描述

  • 编辑存放变量的storage_vars.yml文件。
[devops@server1 ansible]$ vim storage_vars.yml

在这里插入图片描述

  • 执行:
[devops@server1 ansible]$ ansible-playbook my_disk.yml
  • 因为设备已经存在,所以显示skipping。
    在这里插入图片描述
Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐