Files
gitlab-mirror/roles/make_lv/tasks/main.yml
2026-03-19 12:16:48 +03:00

103 lines
3.3 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: 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