Files
2026-03-19 12:39:54 +03:00

103 lines
3.5 KiB
YAML

---
- 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: make_lv_vg_list
- name: Assert that volume group exists
ansible.builtin.assert:
that: virtual_group in make_lv_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: make_lv_lv_list
- name: Assert that logical volume exists
ansible.builtin.assert:
that: logical_volume in make_lv_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: make_lv_current_fs
- name: Assert that current filesystem is the required one
ansible.builtin.assert:
that: make_lv_current_fs.stdout == make_lv_fs_type
success_msg: "{{ virtual_group }} - {{ logical_volume }} has {{ make_lv_fs_type }} filesystem"
fail_msg: "{{ virtual_group }} - {{ logical_volume }} DOES NOT have {{ make_lv_fs_type }} filesystem"
rescue:
- name: Unmount the main storage
ansible.posix.mount:
src: "/dev/{{ virtual_group }}/{{ logical_volume }}"
path: "{{ make_lv_storage_mountpoint }}"
state: absent
- name: Wipe disk signatures
ansible.builtin.command: "wipefs -af {{ lvm_dev }}"
register: make_lv_wipefs_result
changed_when: make_lv_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: make_lv_is_container
community.general.lvol:
vg: "{{ virtual_group }}"
lv: "{{ logical_volume }}"
size: "{{ make_lv_size }}"
opts: "--config 'activation/udev_rules=0'"
- name: Create a logical volume for the storage
when: not make_lv_is_container
community.general.lvol:
vg: "{{ virtual_group }}"
lv: "{{ logical_volume }}"
size: "{{ make_lv_size }}"
opts: "--config 'activation/udev_rules=1'"
- name: Create a filesystem for the storage
community.general.filesystem:
dev: "/dev/{{ virtual_group }}/{{ logical_volume }}"
fstype: "{{ make_lv_fs_type }}"
- name: Create a mountpoint for the storage
ansible.builtin.file:
path: "{{ make_lv_storage_mountpoint }}"
state: directory
owner: "{{ make_lv_mountpoint_owner }}"
group: "{{ make_lv_mountpoint_group }}"
mode: "{{ make_lv_storage_mountpoint_mode }}"
- name: Mount the main storage
ansible.posix.mount:
src: "/dev/{{ virtual_group }}/{{ logical_volume }}"
path: "{{ make_lv_storage_mountpoint }}"
fstype: "{{ make_lv_fs_type }}"
state: mounted