feat: 纳管共享 etcd 与 k3s 外 PostgreSQL 高可用及备份
This commit is contained in:
@@ -0,0 +1,33 @@
|
||||
---
|
||||
- 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)
|
||||
Reference in New Issue
Block a user