57 lines
2.0 KiB
YAML
57 lines
2.0 KiB
YAML
---
|
|
- block:
|
|
- name: Install requirements
|
|
package:
|
|
name: "{{ item }}"
|
|
state: present
|
|
loop: "{{ lvm_packages }}"
|
|
|
|
- name: Create volume group
|
|
lvg:
|
|
vg: "{{ item.group }}"
|
|
pvs: "{{ item.disks | join(',') }}"
|
|
pesize: "4"
|
|
loop: "{{ lvm_volumes }}"
|
|
loop_control:
|
|
label: "name: {{ item.group }}, disks: {{ item.disks | join(',') }}"
|
|
|
|
# workaround: https://github.com/ansible/ansible/pull/52890
|
|
- name: Resize physical volume
|
|
command: "pvresize {{ item.disks | join(' ') }}"
|
|
changed_when: False
|
|
with_items: "{{ lvm_volumes }}"
|
|
loop_control:
|
|
label: "disks: {{ item.disks | join(',') }}"
|
|
|
|
- name: Create logical volume
|
|
lvol:
|
|
vg: "{{ item.group }}"
|
|
lv: "{{ item.name }}"
|
|
size: "{{ item.size }}"
|
|
resizefs: "{{ item.resizefs | default(True) }}"
|
|
state: "{{ item.state | default('present') }}"
|
|
loop: "{{ lvm_volumes }}"
|
|
loop_control:
|
|
label: "name: {{ item.group }}, size: {{ item.size }}"
|
|
|
|
- name: Create filesystem
|
|
filesystem:
|
|
fstype: "{{ item.fstype | default('ext4') }}"
|
|
dev: "/dev/mapper/{{ item.group }}-{{ item.name }}"
|
|
loop: "{{ lvm_volumes }}"
|
|
loop_control:
|
|
label: "device: /dev/mapper/{{ item.group }}-{{ item.name }}, fstype: {{ item.fstype | default('ext4') }}"
|
|
|
|
- name: Mount volume
|
|
mount:
|
|
path: "{{ item.mountpoint }}"
|
|
src: "/dev/mapper/{{ item.group }}-{{ item.name }}"
|
|
fstype: "{{ item.fstype | default('ext4') }}"
|
|
opts: "{{ item.mountopts | default([]) | join(',') or omit }}"
|
|
state: "{{ 'mounted' if item.state | default('present') == 'present' else 'absent' }}"
|
|
loop: "{{ lvm_volumes }}"
|
|
loop_control:
|
|
label: "mount: /dev/mapper/{{ item.group }}-{{ item.name }} {{ item.mountpoint }} {{ item.fstype | default('ext4') }}{% if item.mountopts is defined %} {{ item.mountopts | join(',') }}{% endif %}"
|
|
become: True
|
|
become_user: root
|