34 lines
1.3 KiB
YAML
34 lines
1.3 KiB
YAML
---
|
|
- name: 检查现有 PGDATA
|
|
ansible.builtin.stat:
|
|
path: "{{ pg_data_root }}/{{ pg_instance }}/data/PG_VERSION"
|
|
register: pg_existing_version
|
|
- name: 检查本项目所有权标记
|
|
ansible.builtin.stat:
|
|
path: "{{ pg_data_root }}/{{ pg_instance }}/.homelab-owned"
|
|
register: pg_owned_marker
|
|
- name: 拒绝接管未知现有实例
|
|
ansible.builtin.assert:
|
|
that: not pg_existing_version.stat.exists or pg_owned_marker.stat.exists
|
|
fail_msg: 发现未登记 PGDATA,停止;导入和恢复必须使用独立流程。
|
|
- name: 核对已登记实例
|
|
when: pg_owned_marker.stat.exists
|
|
block:
|
|
- name: 读取实例标记
|
|
ansible.builtin.slurp:
|
|
src: "{{ pg_data_root }}/{{ pg_instance }}/.homelab-owned"
|
|
register: pg_marker_content
|
|
- name: 验证实例身份
|
|
ansible.builtin.assert:
|
|
that: (pg_marker_content.content | b64decode | trim) == ('shared-postgresql/' ~ pg_instance)
|
|
- name: 核对已有实例主版本,禁止隐式升级
|
|
when: pg_existing_version.stat.exists
|
|
block:
|
|
- name: 读取 PG_VERSION
|
|
ansible.builtin.slurp:
|
|
src: "{{ pg_data_root }}/{{ pg_instance }}/data/PG_VERSION"
|
|
register: pg_existing_version_content
|
|
- name: 主版本必须匹配
|
|
ansible.builtin.assert:
|
|
that: (pg_existing_version_content.content | b64decode | trim) == (pg_major | string)
|