77 lines
2.1 KiB
YAML
77 lines
2.1 KiB
YAML
---
|
|
- name: Wait for connection
|
|
ansible.builtin.wait_for_connection:
|
|
timeout: "{{ environment_wait_timeout }}"
|
|
delay: "{{ environment_wait_delay }}"
|
|
|
|
- name: Gather facts
|
|
ansible.builtin.setup:
|
|
|
|
- name: Check for live environment markers
|
|
ansible.builtin.stat:
|
|
path: "{{ item }}"
|
|
loop:
|
|
- /run/archiso
|
|
- /run/live
|
|
- /run/initramfs
|
|
- /run/initramfs/live
|
|
register: environment_live_marker_stat
|
|
changed_when: false
|
|
|
|
- name: Determine root filesystem type
|
|
ansible.builtin.set_fact:
|
|
environment_root_fstype: >-
|
|
{{
|
|
ansible_mounts
|
|
| selectattr('mount', 'equalto', '/')
|
|
| map(attribute='fstype')
|
|
| list
|
|
| first
|
|
| default('')
|
|
| lower
|
|
}}
|
|
environment_archiso_present: >-
|
|
{{
|
|
(
|
|
environment_live_marker_stat.results
|
|
| selectattr('item', 'equalto', '/run/archiso')
|
|
| selectattr('stat.exists')
|
|
| list
|
|
| length
|
|
) > 0
|
|
}}
|
|
|
|
- name: Identify live environment indicators
|
|
ansible.builtin.set_fact:
|
|
environment_is_live_environment: >-
|
|
{{
|
|
(
|
|
environment_live_marker_stat.results
|
|
| selectattr('stat.exists')
|
|
| list
|
|
| length
|
|
) > 0
|
|
or environment_root_fstype in ['overlay', 'overlayfs', 'squashfs', 'aufs']
|
|
or (ansible_hostname | default('') | lower is search('live'))
|
|
}}
|
|
|
|
- name: Abort if target is not a live environment
|
|
ansible.builtin.assert:
|
|
that:
|
|
- environment_is_live_environment | bool
|
|
fail_msg: |
|
|
PRODUCTION SYSTEM DETECTED - ABORTING
|
|
|
|
The target system does not appear to be a live installer environment.
|
|
This playbook must run from a live ISO to avoid wiping production data.
|
|
|
|
Boot from a live installer (Arch, Debian, Ubuntu, etc.) and retry.
|
|
quiet: true
|
|
|
|
- name: Abort if the host is not booted from the Arch install media
|
|
when:
|
|
- not (custom_iso | bool)
|
|
- not environment_archiso_present | bool
|
|
ansible.builtin.fail:
|
|
msg: This host is not booted from the Arch install media!
|