Игра ниже создает список подключенных устройств. Если mount_src не смонтирован, то создается файловая система, а mount_src монтируется в mount_path .
- hosts: localhost
vars:
mount_src: /dev/sdb
mount_path: /export
tasks:
- name: Create list of mounted devices
set_fact:
mounted_devices: "{{ ansible_mounts|json_query('[].device') }}"
- name: Create File System
filesystem:
fstype: ext4
dev: "{{ mount_src }}"
when: mount_src not in mounted_devices
- name: Mount File System
mount:
path: "{{ mount_path }}"
src: "{{ mount_src }}"
fstype: ext4
state: mounted
when: mount_src not in mounted_devices
(не тестировалось)
Ansible не собирает факты о блочных устройствах. Пример создания списка блочных устройств в Linux
- hosts: localhost
tasks:
- command: 'lsblk -lno NAME'
register: results
- name: Create list of block devices
set_fact:
block_devices: "{{ block_devices|default([]) + [ item ] }}"
loop: "{{ results.stdout_lines }}"
- debug:
var: block_devices
дает:
ok: [127.0.0.1] =>
block_devices:
- sda
- sda1
- sda2
- sda3
- sda5
- sdb
- sdb1
- sdb9
- mmcblk0
- mmcblk0p1