- hosts: minio-backups gather_facts: true tasks: - name: ensure mdadm is installed package: name: mdadm state: present tags: - install - name: ensure usb hdd partitions are removed command: wipefs -fa {{ item }} args: removes: '{{ item }}-part1' loop: '{{ raid_disks }}' tags: - wipefs - name: ensure md raid array exists command: >- systemd-cat -t mdadm mdadm --create --run --name={{ md_name }} --level=raid1 --raid-devices=2 /dev/md/{{ md_name }} {{ raid_disks | join(' ') }} args: creates: /dev/disk/by-id/md-name-{{ md_name }} tags: - mdadm - mdadm-create - name: ensure md-auto-readd script is installed copy: content: |+ #!/bin/sh main() { md_dev=$(readlink -e /dev/disk/by-id/md-name-"$2") if [ -z "${md_dev}" ]; then printf 'Could not find block device for MD raid %s\n' "$2" >&2 exit 1 fi exec mdadm --re-add "${md_dev}" "$1" } main "$@" 2>&1 | logger dest: /usr/local/libexec/md-auto-readd owner: root group: root mode: u=rwx,go=rx tags: - script - name: ensure raid auto re-add udev rule exists copy: content: >+ ACTION=="add", ENV{ID_FS_TYPE}=="linux_raid_member", ENV{ID_FS_USAGE}=="raid", RUN+="/usr/local/libexec/md-auto-readd $devnode $env{ID_FS_LABEL}" dest: /etc/udev/rules.d/80-md-auto-readd.rules mode: u=rw,go=r owner: root group: root notify: - reload udev tags: - udev handlers: - name: reload udev command: udevadm control --reload