mirror of
https://gitea.0xace.cc/ansible-galaxy/postgresql.git
synced 2024-11-25 00:06:42 +00:00
rewrite restore logic
This commit is contained in:
parent
a20385be58
commit
e201c69b36
@ -13,20 +13,23 @@ postgresql_ssl_keep_nonssl_endpoint: false
|
|||||||
postgresql_self_signed_cert: true
|
postgresql_self_signed_cert: true
|
||||||
postgresql_self_signed_cert_name: "cert"
|
postgresql_self_signed_cert_name: "cert"
|
||||||
|
|
||||||
## Backup and restore options
|
## WAL-G backup and restore options
|
||||||
postgresql_wal_g_install: false
|
postgresql_wal_g_install: false
|
||||||
postgresql_wal_g_restore: false
|
postgresql_wal_g_restore_from_backup: false
|
||||||
postgresql_wal_g_force_delete_and_restore: false
|
postgresql_wal_g_force_delete_and_restore: false
|
||||||
postgresql_wal_g_config_name: ".walg.json"
|
postgresql_wal_g_config_name: ".walg.json"
|
||||||
postgresql_wal_g_restore_config_name: ".walg-restore.json"
|
postgresql_wal_g_restore_config_name: ".walg-restore.json"
|
||||||
|
postgresql_wal_g_pitr: 'latest'
|
||||||
|
postgresql_wal_g_restore_backup_name: 'LATEST'
|
||||||
postgresql_wal_g_binary_name: "wal-g-pg"
|
postgresql_wal_g_binary_name: "wal-g-pg"
|
||||||
postgresql_wal_g_postgresql_pitr: "LATEST"
|
|
||||||
postgresql_recovery_target_time: ""
|
postgresql_recovery_target_time: ""
|
||||||
postgresql_promote_trigger_file: "{{ postgresql_data_dir }}/promote.trigger"
|
postgresql_promote_trigger_file: "{{ postgresql_data_dir }}/promote.trigger"
|
||||||
|
|
||||||
postgresql_password_encryption_algorithm: "scram-sha-256"
|
postgresql_password_encryption_algorithm: "scram-sha-256"
|
||||||
postgresql_default_parameters:
|
postgresql_default_parameters:
|
||||||
data_directory: '{{ postgresql_data_dir }}'
|
data_directory: '{{ postgresql_data_dir }}'
|
||||||
|
archive_mode: "{{ postgresql_archive_mode | default('on') }}"
|
||||||
listen_addresses: '*'
|
listen_addresses: '*'
|
||||||
max_connections: '1000'
|
max_connections: '1000'
|
||||||
superuser_reserved_connections: '5'
|
superuser_reserved_connections: '5'
|
||||||
@ -59,8 +62,9 @@ postgresql_default_parameters:
|
|||||||
|
|
||||||
postgresql_backup_parameters:
|
postgresql_backup_parameters:
|
||||||
archive_command: "{{ postgresql_archive_command | default('cd .')}}"
|
archive_command: "{{ postgresql_archive_command | default('cd .')}}"
|
||||||
|
|
||||||
|
postgresql_restore_parameters:
|
||||||
restore_command: "{{ postgresql_restore_command | default('cd .') }}"
|
restore_command: "{{ postgresql_restore_command | default('cd .') }}"
|
||||||
archive_mode: "{{ postgresql_archive_mode | default('on') }}"
|
|
||||||
|
|
||||||
postgresql_log_dir: "/var/log/postgresql"
|
postgresql_log_dir: "/var/log/postgresql"
|
||||||
|
|
||||||
|
@ -19,8 +19,11 @@
|
|||||||
|
|
||||||
- name: Merge backup options for PostgreSQL config
|
- name: Merge backup options for PostgreSQL config
|
||||||
set_fact:
|
set_fact:
|
||||||
postgresql_combined_parameters: "{{ postgresql_combined_parameters | combine(postgresql_backup_parameters|default({}), recursive=true) }}"
|
postgresql_combined_parameters: "{{ postgresql_combined_parameters | combine(postgresql_backup_parameters, recursive=true) }}"
|
||||||
when:
|
|
||||||
|
- name: Merge restore options for PostgreSQL config
|
||||||
|
set_fact:
|
||||||
|
postgresql_combined_parameters: "{{ postgresql_combined_parameters | combine(postgresql_restore_parameters, recursive=true) }}"
|
||||||
|
|
||||||
- name: Propagate PostgreSQL configs
|
- name: Propagate PostgreSQL configs
|
||||||
block:
|
block:
|
||||||
|
@ -6,6 +6,10 @@
|
|||||||
include_tasks: config.yaml
|
include_tasks: config.yaml
|
||||||
tags: postgresql_configuration
|
tags: postgresql_configuration
|
||||||
|
|
||||||
|
- name: "Manage TLS/SSL certificates"
|
||||||
|
include_tasks: cacert.yaml
|
||||||
|
when: postgresql_ssl
|
||||||
|
|
||||||
- name: Include WAL-G role
|
- name: Include WAL-G role
|
||||||
ansible.builtin.include_role:
|
ansible.builtin.include_role:
|
||||||
name: wal-g
|
name: wal-g
|
||||||
@ -16,6 +20,10 @@
|
|||||||
wal_g_restore: "{{ postgresql_wal_g_restore }}"
|
wal_g_restore: "{{ postgresql_wal_g_restore }}"
|
||||||
when: postgresql_wal_g_install
|
when: postgresql_wal_g_install
|
||||||
|
|
||||||
|
- name: Include PostgreSQL restore
|
||||||
|
include_tasks: restore.yaml
|
||||||
|
when: postgresql_wal_g_restore_from_backup
|
||||||
|
|
||||||
- name: "PostgreSQL initdb"
|
- name: "PostgreSQL initdb"
|
||||||
become_user: "{{ postgresql_superuser_username }}"
|
become_user: "{{ postgresql_superuser_username }}"
|
||||||
shell: "/usr/lib/postgresql/{{ postgresql_major_version }}/bin/initdb -D {{ postgresql_data_dir }} --username {{ postgresql_superuser_username }} --auth-local peer --auth-host {{ postgresql_password_encryption_algorithm }} --no-instructions"
|
shell: "/usr/lib/postgresql/{{ postgresql_major_version }}/bin/initdb -D {{ postgresql_data_dir }} --username {{ postgresql_superuser_username }} --auth-local peer --auth-host {{ postgresql_password_encryption_algorithm }} --no-instructions"
|
||||||
|
@ -6,7 +6,10 @@
|
|||||||
- name: Merge backup options for PostgreSQL config
|
- name: Merge backup options for PostgreSQL config
|
||||||
set_fact:
|
set_fact:
|
||||||
postgresql_combined_parameters: "{{ postgresql_combined_parameters | combine(postgresql_backup_parameters|default({}), recursive=true) }}"
|
postgresql_combined_parameters: "{{ postgresql_combined_parameters | combine(postgresql_backup_parameters|default({}), recursive=true) }}"
|
||||||
when:
|
|
||||||
|
- name: Merge restore options for PostgreSQL config
|
||||||
|
set_fact:
|
||||||
|
postgresql_combined_parameters: "{{ postgresql_combined_parameters | combine(postgresql_restore_parameters|default({}), recursive=true) }}"
|
||||||
|
|
||||||
- name: Propagate PostgreSQL configs
|
- name: Propagate PostgreSQL configs
|
||||||
block:
|
block:
|
||||||
|
@ -27,6 +27,10 @@
|
|||||||
- name: Include data direcory
|
- name: Include data direcory
|
||||||
include_tasks: data_dir.yaml
|
include_tasks: data_dir.yaml
|
||||||
|
|
||||||
|
- name: "Manage TLS/SSL certificates"
|
||||||
|
include_tasks: cacert.yaml
|
||||||
|
when: postgresql_ssl
|
||||||
|
|
||||||
- name: Include WAL-G role
|
- name: Include WAL-G role
|
||||||
ansible.builtin.include_role:
|
ansible.builtin.include_role:
|
||||||
name: wal-g
|
name: wal-g
|
||||||
@ -39,7 +43,7 @@
|
|||||||
|
|
||||||
- name: Include PostgreSQL restore
|
- name: Include PostgreSQL restore
|
||||||
include_tasks: restore.yaml
|
include_tasks: restore.yaml
|
||||||
when: postgresql_wal_g_restore
|
when: postgresql_wal_g_restore_from_backup
|
||||||
|
|
||||||
- name: PostgreSQL Initdb
|
- name: PostgreSQL Initdb
|
||||||
shell: "/usr/pgsql-{{ postgresql_major_version }}/bin/postgresql-{{ postgresql_major_version }}-setup initdb --username {{ postgresql_superuser_username }} --auth-host {{ postgresql_password_encryption_algorithm }}"
|
shell: "/usr/pgsql-{{ postgresql_major_version }}/bin/postgresql-{{ postgresql_major_version }}-setup initdb --username {{ postgresql_superuser_username }} --auth-host {{ postgresql_password_encryption_algorithm }}"
|
||||||
|
@ -27,9 +27,9 @@
|
|||||||
include_tasks: "{{ ansible_facts['os_family'] }}/main.yaml"
|
include_tasks: "{{ ansible_facts['os_family'] }}/main.yaml"
|
||||||
tags: postgresql_setup
|
tags: postgresql_setup
|
||||||
|
|
||||||
- name: "Manage TLS/SSL certificates"
|
#- name: "Manage TLS/SSL certificates"
|
||||||
include_tasks: cacert.yaml
|
# include_tasks: cacert.yaml
|
||||||
when: postgresql_ssl
|
# when: postgresql_ssl
|
||||||
|
|
||||||
- name: Enable and start PostgreSQL
|
- name: Enable and start PostgreSQL
|
||||||
systemd:
|
systemd:
|
||||||
|
@ -29,27 +29,27 @@
|
|||||||
- postgresql_files_found.matched == 0
|
- postgresql_files_found.matched == 0
|
||||||
block:
|
block:
|
||||||
- name: Restore database dir from backup
|
- name: Restore database dir from backup
|
||||||
shell: "{{ postgresql_wal_g_binary_name ~ ' --config ' ~ postgresql_home_dir ~ '/' ~ postgresql_wal_g_restore_config_name ~ ' backup-fetch ' ~ postgresql_data_dir ~ ' ' ~ postgresql_wal_g_postgresql_pitr }}"
|
shell: "{{ postgresql_wal_g_binary_name ~ ' --config ' ~ postgresql_home_dir ~ '/' ~ postgresql_wal_g_restore_config_name ~ ' backup-fetch ' ~ postgresql_data_dir ~ ' ' ~ postgresql_wal_g_restore_backup_name }}"
|
||||||
become_user: postgres
|
become_user: postgres
|
||||||
|
|
||||||
- name: Include PostgreSQL configuration
|
- name: Include PostgreSQL configuration
|
||||||
vars:
|
vars:
|
||||||
postgresql_archive_command: "cd ."
|
postgresql_archive_command: "cd ."
|
||||||
postgresql_restore_command: "{{ postgresql_wal_g_binary_name ~ ' --config ' ~ postgresql_home_dir ~ '/' ~ postgresql_wal_g_restore_config_name ~ ' wal-fetch %f %p' }}"
|
postgresql_restore_command: "{{ postgresql_wal_g_binary_name ~ ' --config ' ~ postgresql_home_dir ~ '/' ~ postgresql_wal_g_restore_config_name ~ ' wal-fetch %f %p' }}"
|
||||||
include_tasks: config.yaml
|
include_tasks: config.yaml
|
||||||
|
|
||||||
- name: Create recovery.signal file
|
- name: Create recovery.signal file
|
||||||
file:
|
file:
|
||||||
name: "{{ postgresql_data_dir }}/recovery.signal"
|
name: "{{ postgresql_data_dir }}/recovery.signal"
|
||||||
state: touch
|
state: touch
|
||||||
become_user: postgres
|
become_user: postgres
|
||||||
|
|
||||||
- name: Create standby.signal file
|
#- name: Create standby.signal file
|
||||||
file:
|
# file:
|
||||||
name: "{{ postgresql_data_dir }}/standby.signal"
|
# name: "{{ postgresql_data_dir }}/standby.signal"
|
||||||
state: touch
|
# state: touch
|
||||||
become_user: postgres
|
# become_user: postgres
|
||||||
|
|
||||||
- name: Start PostgreSQL for recovery
|
- name: Start PostgreSQL for recovery
|
||||||
systemd:
|
systemd:
|
||||||
daemon_reload: true
|
daemon_reload: true
|
||||||
@ -57,19 +57,19 @@
|
|||||||
state: started
|
state: started
|
||||||
masked: no
|
masked: no
|
||||||
register: postgresql_start_for_recovery
|
register: postgresql_start_for_recovery
|
||||||
|
|
||||||
- name: Ping PostgreSQL server
|
- name: Ping PostgreSQL server
|
||||||
vars:
|
vars:
|
||||||
ansible_python_interpreter: '/usr/bin/env python3'
|
ansible_python_interpreter: '/usr/bin/env python3'
|
||||||
community.postgresql.postgresql_ping:
|
community.postgresql.postgresql_ping:
|
||||||
db: "{{ postgresql_superuser_db }}"
|
db: "{{ postgresql_superuser_db }}"
|
||||||
login_user: "{{ postgresql_superuser_username }}"
|
login_user: "{{ postgresql_superuser_username }}"
|
||||||
login_password: "{{ postgresql_superuser_password }}"
|
login_password: "{{ postgresql_superuser_password }}"
|
||||||
register: postgresql_ping
|
register: postgresql_ping
|
||||||
until: postgresql_ping.is_available
|
until: postgresql_ping.is_available
|
||||||
retries: 60
|
retries: 60
|
||||||
delay: 20
|
delay: 20
|
||||||
|
|
||||||
- name: debug
|
- name: debug
|
||||||
debug:
|
debug:
|
||||||
msg: "{{ postgresql_ping }}"
|
msg: "{{ postgresql_ping }}"
|
||||||
@ -83,7 +83,10 @@
|
|||||||
register: postgresql_stop
|
register: postgresql_stop
|
||||||
|
|
||||||
- name: Create promote trigger file
|
- name: Create promote trigger file
|
||||||
file:
|
file:
|
||||||
name: "{{ postgresql_promote_trigger_file }}"
|
name: "{{ postgresql_promote_trigger_file }}"
|
||||||
state: touch
|
state: touch
|
||||||
become_user: postgres
|
become_user: postgres
|
||||||
|
|
||||||
|
- name: Include PostgreSQL configuration
|
||||||
|
include_tasks: config.yaml
|
||||||
|
Loading…
Reference in New Issue
Block a user