configpolicy/raid-array.yml

72 lines
1.7 KiB
YAML

- 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