add make_lv role
This commit is contained in:
102
roles/make_lv/tasks/main.yml
Normal file
102
roles/make_lv/tasks/main.yml
Normal file
@@ -0,0 +1,102 @@
|
||||
---
|
||||
- name: Install LVM tools
|
||||
ansible.builtin.apt:
|
||||
name: lvm2
|
||||
state: present
|
||||
update_cache: true
|
||||
cache_valid_time: 3600
|
||||
- name: Check lvm storage exists
|
||||
block:
|
||||
- name: Get volume group list
|
||||
ansible.builtin.shell:
|
||||
cmd: "set -o pipefail ; pvs | grep {{ lvm_dev }}"
|
||||
executable: /bin/bash
|
||||
changed_when: false
|
||||
failed_when: false
|
||||
register: vg_list
|
||||
|
||||
- name: Assert that volume group exists
|
||||
ansible.builtin.assert:
|
||||
that: virtual_group in vg_list.stdout
|
||||
success_msg: "{{ lvm_dev }} has {{ virtual_group }} group"
|
||||
fail_msg: "{{ lvm_dev }} DOES NOT have {{ virtual_group }} group"
|
||||
|
||||
- name: Get logical volume list
|
||||
ansible.builtin.shell:
|
||||
cmd: "set -o pipefail ; lvs | grep {{ virtual_group }} | grep {{ logical_volume }}"
|
||||
executable: /bin/bash
|
||||
changed_when: false
|
||||
failed_when: false
|
||||
register: lv_list
|
||||
|
||||
- name: Assert that logical volume exists
|
||||
ansible.builtin.assert:
|
||||
that: logical_volume in lv_list.stdout
|
||||
success_msg: "{{ virtual_group }} has {{ logical_volume }} volume"
|
||||
fail_msg: "{{ virtual_group }} DOES NOT have {{ logical_volume }} volume"
|
||||
|
||||
- name: Get filesystem type
|
||||
ansible.builtin.command: "blkid /dev/mapper/{{ virtual_group }}-{{ logical_volume }} -o value -s TYPE"
|
||||
changed_when: false
|
||||
failed_when: false
|
||||
register: current_fs
|
||||
|
||||
- name: Assert that current filesystem is the required one
|
||||
ansible.builtin.assert:
|
||||
that: current_fs.stdout == fs_type
|
||||
success_msg: "{{ virtual_group }} - {{ logical_volume }} has {{ fs_type }} filesystem"
|
||||
fail_msg: "{{ virtual_group }} - {{ logical_volume }} DOES NOT have {{ fs_type }} filesystem"
|
||||
|
||||
rescue:
|
||||
- name: Unmount the main storage
|
||||
ansible.posix.mount:
|
||||
src: "/dev/{{ virtual_group }}/{{ logical_volume }}"
|
||||
path: "{{ storage_mountpoint }}"
|
||||
state: absent
|
||||
|
||||
- name: Wipe disk signatures
|
||||
ansible.builtin.command: "wipefs -af {{ lvm_dev }}"
|
||||
register: wipefs_result
|
||||
changed_when: wipefs_result.rc == 0
|
||||
|
||||
- name: Create a volume group for the storage
|
||||
community.general.lvg:
|
||||
pvs: "{{ lvm_dev }}"
|
||||
vg: "{{ virtual_group }}"
|
||||
force: true
|
||||
|
||||
- name: Create a logical volume for the storage
|
||||
when: is_container
|
||||
community.general.lvol:
|
||||
vg: "{{ virtual_group }}"
|
||||
lv: "{{ logical_volume }}"
|
||||
size: "{{ size }}"
|
||||
opts: "--config 'activation/udev_rules=0'"
|
||||
|
||||
- name: Create a logical volume for the storage
|
||||
when: not is_container
|
||||
community.general.lvol:
|
||||
vg: "{{ virtual_group }}"
|
||||
lv: "{{ logical_volume }}"
|
||||
size: "{{ size }}"
|
||||
opts: "--config 'activation/udev_rules=1'"
|
||||
|
||||
- name: Create a filesystem for the storage
|
||||
community.general.filesystem:
|
||||
dev: "/dev/{{ virtual_group }}/{{ logical_volume }}"
|
||||
fstype: "{{ fs_type }}"
|
||||
|
||||
- name: Create a mountpoint for the storage
|
||||
ansible.builtin.file:
|
||||
path: "{{ storage_mountpoint }}"
|
||||
state: directory
|
||||
owner: "{{ mountpoint_owner }}"
|
||||
group: "{{ mountpoint_group }}"
|
||||
mode: "{{ storage_mountpoint_mode }}"
|
||||
|
||||
- name: Mount the main storage
|
||||
ansible.posix.mount:
|
||||
src: "/dev/{{ virtual_group }}/{{ logical_volume }}"
|
||||
path: "{{ storage_mountpoint }}"
|
||||
fstype: "{{ fs_type }}"
|
||||
state: mounted
|
||||
Reference in New Issue
Block a user