160 lines
5.1 KiB
YAML
160 lines
5.1 KiB
YAML
---
|
|
- name: Disk Partitions | PRELIM | Ensure baseline_home_luks_passphrase is defined
|
|
ansible.builtin.assert:
|
|
that:
|
|
- baseline_home_luks_passphrase is defined
|
|
msg: "Variable 'baseline_home_luks_passphrase' must be defined."
|
|
|
|
- name: Disk Partitions | PRELIM | Ensure baseline_second_disk_device is defined
|
|
ansible.builtin.assert:
|
|
that:
|
|
- baseline_second_disk_device is defined
|
|
msg: "Variable 'baseline_second_disk_device' must be defined."
|
|
|
|
- name: Disk Partitions | PATCH | Ensure lvm2 is installed
|
|
ansible.builtin.package:
|
|
name: lvm2
|
|
state: present
|
|
|
|
- name: Disk Partitions | PATCH | Create LVM partition spanning entire disk
|
|
community.general.parted:
|
|
device: "{{ baseline_second_disk_device }}"
|
|
number: 1
|
|
flags: [ lvm ]
|
|
state: present
|
|
part_start: "0%"
|
|
part_end: "100%"
|
|
|
|
- name: Disk Partitions | PATCH | Create volume group
|
|
community.general.lvg:
|
|
vg: "{{ baseline_second_disk_vg_name }}"
|
|
pvs: "{{ baseline_second_disk_device }}1"
|
|
|
|
- name: Disk Partitions | PATCH | Create /var logical volume
|
|
community.general.lvol:
|
|
vg: "{{ baseline_second_disk_vg_name }}"
|
|
lv: var
|
|
size: "{{ baseline_second_disk_var_size }}"
|
|
|
|
- name: Disk Partitions | PATCH | Create /var/log logical volume
|
|
community.general.lvol:
|
|
vg: "{{ baseline_second_disk_vg_name }}"
|
|
lv: var_log
|
|
size: "{{ baseline_second_disk_var_log_size }}"
|
|
|
|
- name: Disk Partitions | PATCH | Create /var/log/audit logical volume
|
|
community.general.lvol:
|
|
vg: "{{ baseline_second_disk_vg_name }}"
|
|
lv: var_log_audit
|
|
size: "{{ baseline_second_disk_var_log_audit_size }}"
|
|
|
|
- name: Disk Partitions | PATCH | Create /var/tmp logical volume
|
|
community.general.lvol:
|
|
vg: "{{ baseline_second_disk_vg_name }}"
|
|
lv: var_tmp
|
|
size: "{{ baseline_second_disk_var_tmp_size }}"
|
|
|
|
- name: Disk Partitions | PATCH | Create /home logical volume with remaining space
|
|
community.general.lvol:
|
|
vg: "{{ baseline_second_disk_vg_name }}"
|
|
lv: home
|
|
shrink: false # make idempotent
|
|
size: "100%FREE"
|
|
|
|
- name: Disk Partitions | PATCH | Ensure cryptsetup is installed
|
|
ansible.builtin.package:
|
|
name: cryptsetup
|
|
state: present
|
|
|
|
- name: Disk Partitions | PATCH | Encrypt /home with LUKS2 and provided passphrase
|
|
community.crypto.luks_device:
|
|
device: "/dev/{{ baseline_second_disk_vg_name }}/home"
|
|
state: present
|
|
passphrase: "{{ baseline_home_luks_passphrase }}"
|
|
type: luks2
|
|
|
|
- name: Disk Partitions | PATCH | Open LUKS device
|
|
community.crypto.luks_device:
|
|
device: "/dev/{{ baseline_second_disk_vg_name }}/home"
|
|
name: home_crypt
|
|
state: opened
|
|
passphrase: "{{ baseline_home_luks_passphrase }}"
|
|
|
|
- name: Disk Partitions | PATCH | Add /home logical volume to crypttab
|
|
community.general.crypttab:
|
|
backing_device: /dev/mapper/datavg-home
|
|
name: home_crypt
|
|
opts: discard
|
|
state: present
|
|
|
|
- name: Disk Partitions | PATCH | Create xfs filesystems on new partitions
|
|
community.general.filesystem:
|
|
dev: "{{ item }}"
|
|
fstype: xfs
|
|
with_items:
|
|
- /dev/mapper/datavg-var
|
|
- /dev/mapper/datavg-var_log
|
|
- /dev/mapper/datavg-var_log_audit
|
|
- /dev/mapper/datavg-var_tmp
|
|
- /dev/mapper/home_crypt
|
|
|
|
- name: Disk Partitions | AUDIT | Check if /home is mounted
|
|
ansible.builtin.command:
|
|
cmd: mountpoint -q /home
|
|
register: baseline_second_disk_home_mounted
|
|
changed_when: false
|
|
failed_when: false
|
|
|
|
- name: Disk Partitions | AUDIT | Check if /home is empty
|
|
ansible.builtin.command:
|
|
cmd: ls -A /home
|
|
register: baseline_second_disk_home_files
|
|
when: baseline_second_disk_home_mounted.rc != 0
|
|
changed_when: false
|
|
|
|
- name: Disk Partitions | AUDIT | Fail if /home is not mounted and not empty
|
|
ansible.builtin.assert:
|
|
that:
|
|
- ((baseline_second_disk_home_files.skipped is defined) and baseline_second_disk_home_files.skipped) or (baseline_second_disk_home_files.stdout == "")
|
|
|
|
- name: Disk Partitions | PATCH | Ensure /home is mounted
|
|
ansible.posix.mount:
|
|
src: "/dev/mapper/home_crypt"
|
|
path: '/home'
|
|
fstype: 'xfs'
|
|
opts: 'rw,nosuid,nodev'
|
|
state: mounted
|
|
|
|
- name: Disk Partitions | AUDIT | Check if /var is mounted
|
|
ansible.builtin.command:
|
|
cmd: mountpoint -q /var
|
|
register: baseline_second_disk_var_mounted
|
|
changed_when: false
|
|
failed_when: false
|
|
|
|
- name: Disk Partitions | PATCH | Migrate content if /var is not mounted
|
|
when: baseline_second_disk_var_mounted.rc != 0
|
|
block:
|
|
- name: Disk Partitions | PATCH | Enter emergency mode
|
|
ansible.builtin.command:
|
|
cmd: systemctl isolate emergency.target
|
|
|
|
- name: Disk Partitions | PATCH | Unmount /var/lib/nfs/rpc_pipefs if mounted
|
|
ansible.posix.mount:
|
|
path: /var/lib/nfs/rpc_pipefs
|
|
state: unmounted
|
|
|
|
- name: Disk Partitions | PATCH | Migrate data to new partitions
|
|
ansible.builtin.include_tasks:
|
|
file: disk_partitions_migrate.yml
|
|
vars:
|
|
baseline_second_disk_migrate_path: "{{ item }}"
|
|
with_items:
|
|
- "/var"
|
|
- "/var/log"
|
|
- "/var/log/audit"
|
|
- "/var/tmp"
|
|
|
|
- name: Disk Partitions | PATCH | Restore default mode
|
|
ansible.builtin.command:
|
|
cmd: systemctl isolate default.target
|