Files
homelab-infra/infrastructure/shared-postgresql/ansible/bootstrap-backup.yml
T
panxiao81 3a2fe5fa0c
yaml / yaml (pull_request) Successful in 41s
ansible / collection-test (pull_request) Successful in 2m41s
terraform / validate (pull_request) Successful in 2m41s
ansible / lint (pull_request) Successful in 4m36s
feat: 纳管共享 etcd 与 k3s 外 PostgreSQL 高可用及备份
2026-09-25 19:34:48 +00:00

41 lines
1.4 KiB
YAML

---
- name: 在已启动数据库上验证首备后启用调度
hosts: pg_repository
become: true
become_user: pgbackup
gather_facts: false
vars:
pg_backup_command: [pgbackrest, '--config=/etc/homelab-pgbackrest/repository.conf', '--stanza=prod']
tasks:
- name: 检查 stanza 元数据
ansible.builtin.stat:
path: "{{ pg_repo_path }}/backup/prod/backup.info"
register: pg_stanza
- name: 首次初始化 stanza
ansible.builtin.command:
argv: "{{ pg_backup_command + ['stanza-create'] }}"
when: not pg_stanza.stat.exists
changed_when: true
- name: 验证真实 WAL 归档(会触发 WAL 切换)
ansible.builtin.command:
argv: "{{ pg_backup_command + ['check'] }}"
changed_when: false
- name: 查询已有备份
ansible.builtin.command:
argv: "{{ pg_backup_command + ['--output=json', 'info'] }}"
register: pg_backup_info
changed_when: false
- name: 没有成功备份时创建首个 full
ansible.builtin.command:
argv: "{{ pg_backup_command + ['--type=full', 'backup'] }}"
when: (pg_backup_info.stdout | from_json)[0].backup | length == 0
changed_when: true
- name: 验证成功后才启用 timer
ansible.builtin.systemd_service:
name: homelab-postgresql-backup.timer
daemon_reload: true
enabled: true
state: started
become_user: root
become: true