61 lines
2.0 KiB
YAML
61 lines
2.0 KiB
YAML
---
|
|
- name: Converge
|
|
hosts: all
|
|
pre_tasks:
|
|
- name: Get /root/image.img stats
|
|
ansible.builtin.stat:
|
|
path: /root/image.img
|
|
register: make_lv_img_stat
|
|
|
|
- name: Create image file
|
|
when: not make_lv_img_stat.stat.exists
|
|
ansible.builtin.command: dd if=/dev/zero of=/root/image.img bs=1M count=128
|
|
register: make_lv_dd_result
|
|
changed_when: make_lv_dd_result.rc == 0
|
|
|
|
- name: Get linked loop devices
|
|
ansible.builtin.command: losetup -a
|
|
changed_when: false
|
|
register: make_lv_loop_devs
|
|
|
|
- name: Link image to loop device
|
|
when: "'/root/image.img' not in make_lv_loop_devs.stdout"
|
|
ansible.builtin.command: losetup --find --show -P /root/image.img
|
|
register: make_lv_loop_device
|
|
changed_when: "'/dev/loop' in make_lv_loop_device.stdout"
|
|
|
|
- name: Get all loop devices
|
|
ansible.builtin.command: losetup -a
|
|
register: make_lv_losetup_out
|
|
changed_when: false
|
|
|
|
- name: Find line with /root/image.img
|
|
ansible.builtin.set_fact:
|
|
make_lv_matched_line: "{{ make_lv_losetup_out.stdout_lines
|
|
| select('search', '/root/image.img')
|
|
| list
|
|
| first
|
|
| default('') }}"
|
|
|
|
- name: Extract loop device name (/dev/loopN)
|
|
ansible.builtin.set_fact:
|
|
make_lv_loop_dev: "{{ make_lv_matched_line | regex_search('(/dev/loop[0-9]+)', '\\1') | default('') }}"
|
|
|
|
- name: Debug result
|
|
ansible.builtin.debug:
|
|
msg: "/root/image.img is linked to {{ make_lv_loop_dev[0] }}"
|
|
when: make_lv_loop_dev != ''
|
|
|
|
roles:
|
|
- role: genlab.common.make_lv
|
|
virtual_group: "group"
|
|
logical_volume: "volume"
|
|
lvm_dev: "{{ make_lv_loop_dev[0] }}"
|
|
make_lv_size: 100%FREE
|
|
make_lv_fs_type: ext4
|
|
make_lv_storage_mountpoint: "/mnt"
|
|
make_lv_storage_mountpoint_mode: "0755"
|
|
make_lv_mountpoint_owner: root
|
|
make_lv_mountpoint_group: root
|
|
make_lv_is_container: true
|