1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
|
---
- name: disks
tags:
- disks
block:
- name: check for mounted disk
# Not perfect.
ansible.builtin.command: "grep '{{ item }}' /proc/mounts"
failed_when: false
changed_when: false
register: check_mounted_disk
check_mode: no
loop:
- /dev/nvme0n1
- /dev/nvme1n1
- name: debug
ansible.builtin.debug:
msg: "{{ check_mounted_disk }}"
- name: abort if disk mounted
ansible.builtin.fail:
msg: "Aborting install due to {{ item }} being mounted"
when: item.rc == 0
loop: "{{ check_mounted_disk.results }}"
- name: write partition layout file
ansible.builtin.copy:
dest: /tmp/partition.sfdisk
# This is a consistent disk layout for all systems, EFI or Legacy
# non-LVM RootFS
# TODO: where should boot be set? EFI vs BIOSBP
content: |
label: gpt
p1 : start=1MiB, size=1MiB, type=21686148-6449-6E6F-744E-656564454649, name=BIOS
p2 : start=2MiB, size=63MiB, type=uefi, name=EFI
p3 : start=64MiB, size=448MiB, type=raid, name=BOOT
p4 : start=512MiB, size=30GiB, type=raid, name=ROOT
p5 : start=+, size=+, type=lvm, name=LVM
tags:
- partition
- name: partition disks
ansible.builtin.shell: "/usr/sbin/sfdisk {{ item }} </tmp/partition.sfdisk"
loop:
- /dev/nvme0n1
- /dev/nvme1n1
tags:
- partition
- name: fact md1 devices
ansible.builtin.set_fact:
md1_dev: "{{ ansible_loop.allitems|join(' ') }}"
loop:
- /dev/nvme0n1p1
- /dev/nvme1n1p1
loop_control:
extended: true
tags:
- mdadm
- name: fact md2 devices
ansible.builtin.set_fact:
md2_dev: "{{ ansible_loop.allitems|join(' ') }}"
loop:
- /dev/nvme0n1p2
- /dev/nvme1n1p2
loop_control:
extended: true
tags:
- mdadm
- name: mdadm p2
ansible.builtin.command: "mdadm --create -e 1.0 /dev/md2 --level=raid1 -n 2 {{ md2_dev }}"
tags:
- mdadm
- name: mdadm p3
ansible.builtin.command: "mdadm --create -e 1.0 /dev/md3 --level=raid1 -n 2 {{ md3_dev }}"
tags:
- mdadm
- name: mdadm p4
ansible.builtin.command: "mdadm --create -e 1.0 /dev/md4 --level=raid1 -n 2 {{ md4_dev }}"
tags:
- mdadm
- name: format p2/mkfs
ansible.builtin.command: "mkfs.fat -F 16 -n EFI {{ item }}"
tags:
- mkfs
loop:
- /dev/md2
- name: format p3/mkfs
ansible.builtin.command: "mkfs.ext4 -T floppy,news -L BOOT {{ item }}"
loop:
- /dev/md3
tags:
- mkfs
- name: format p4/mkfs
ansible.builtin.command: "mkfs.ext4 -T floppy,news -L ROOT {{ item }}"
loop:
- /dev/md4
tags:
- mkfs
- name: format p5/pvcreate
ansible.builtin.command: "pvcreate {{ ansible_loop.allitems|join(' ') }}"
loop_control:
extended: true
loop:
- /dev/nvme0n1p5
- /dev/nvme1n1p5
tags:
- lvm
- pvcreate
- name: fact vgcreate PVs
ansible.builtin.set_fact:
pvs: "{{ ansible_loop.allitems|join(' ') }}"
loop:
- /dev/nvme0n1p5
- /dev/nvme1n1p5
loop_control:
extended: true
tags:
- lvm
- vgcreate
- name: fact vgs
ansible.builtin.set_fact:
vgs: "{{ hostname }}"
tags:
- disk
- mount
- lvm
- name: vgcreate
ansible.builtin.command: "vgcreate {{ hostname }} {{ pvs }}"
tags:
- lvm
- vgcreate
|