/
/
/
1---
2- name: Check existing RAID arrays
3 shell: "cat /proc/mdstat"
4 register: mdstat_output
5 changed_when: false
6 become: true
7
8- name: Display current RAID status
9 debug:
10 var: mdstat_output.stdout_lines
11
12- name: Create RAID arrays
13 shell: |
14 mdadm --create {{ item.device }} \
15 --level={{ item.level }} \
16 --raid-devices={{ item.members | length }} \
17 {{ item.members | join(' ') }} \
18 --assume-clean
19 loop: "{{ nas_raid_devices }}"
20 register: raid_creation
21 failed_when:
22 - raid_creation.rc != 0
23 - "'already exists' not in raid_creation.stderr"
24 become: true
25 when: item.device not in mdstat_output.stdout
26
27- name: Wait for RAID arrays to be ready
28 wait_for:
29 path: "{{ item.device }}"
30 timeout: 300
31 loop: "{{ nas_raid_devices }}"
32 become: true
33
34- name: Create filesystems on RAID devices
35 filesystem:
36 fstype: "{{ item.filesystem }}"
37 dev: "{{ item.device }}"
38 opts: "-F"
39 loop: "{{ nas_raid_devices }}"
40 become: true
41 register: filesystem_creation
42 failed_when:
43 - filesystem_creation.rc != 0
44 - "'already contains' not in filesystem_creation.stderr"
45
46- name: Scan RAID arrays and update mdadm.conf
47 shell: "mdadm --detail --scan >> {{ nas_mdadm_config_file }}"
48 become: true
49 register: mdadm_scan
50 failed_when: false
51 changed_when: mdadm_scan.rc == 0
52
53- name: Remove duplicate entries from mdadm.conf
54 shell: "sort {{ nas_mdadm_config_file }} | uniq > {{ nas_mdadm_config_file }}.tmp && mv {{ nas_mdadm_config_file }}.tmp {{ nas_mdadm_config_file }}"
55 become: true
56 when: mdadm_scan.changed
57
58- name: Update initramfs with RAID configuration
59 command: update-initramfs -u
60 become: true
61 when: mdadm_scan.changed
62
63- name: Set up RAID monitoring
64 template:
65 src: mdadm-monitor.j2
66 dest: /etc/mdadm/mdadm.conf
67 backup: true
68 mode: '0644'
69 owner: root
70 group: root
71 become: true
72 when: nas_raid_monitoring | bool
73 notify: restart mdadm service
74
75- name: Enable mdadm monitoring service
76 systemd:
77 name: mdmonitor
78 state: started
79 enabled: true
80 become: true
81 when: nas_raid_monitoring | bool