-
Notifications
You must be signed in to change notification settings - Fork 107
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Co-authored-by: przemyslavic <>
- Loading branch information
Showing
36 changed files
with
1,161 additions
and
730 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
26 changes: 23 additions & 3 deletions
26
ansible/playbooks/roles/postgresql/tasks/upgrade/extensions/replication/pg-new/packages.yml
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,14 +1,34 @@ | ||
--- | ||
- name: PostgreSQL | Extensions | repmgr | Install package(s) for PostgreSQL {{ new_version.pg.version }} | ||
# On Ubuntu there is dependent 'repmgr-common' package. Till Epiphany 1.2.0 it was installed in the latest version. | ||
# apt module doesn't support --allow-downgrades (see https://github.com/ansible/ansible/issues/29451) | ||
# so we keep installed version if it's newer. | ||
- name: Set target version for repmgr-common package | ||
when: ansible_os_family == 'Debian' | ||
block: | ||
# Fresh info is needed since repmgr-common migth be re-installed from different repository | ||
- name: Extensions | repmgr | Refresh information on installed packages | ||
package_facts: | ||
manager: auto | ||
|
||
- name: Extensions | repmgr | Set target version for repmgr-common package | ||
set_fact: | ||
repmgr_common_target_version: >- | ||
{{ _installed_version is version(_target_version, '>') | ternary(_installed_version, _target_version + '-*') }} | ||
vars: | ||
_installed_version: "{{ ansible_facts.packages['repmgr-common'][0].version }}" | ||
_target_version: "{{ new_version.repmgr.version.Debian }}" | ||
when: ansible_facts.packages['repmgr-common'] is defined | ||
|
||
- name: Extensions | repmgr | Install package(s) for PostgreSQL {{ new_version.pg.version }} | ||
package: | ||
name: "{{ _packages[ansible_os_family] }}" | ||
state: present | ||
vars: | ||
_packages: | ||
Debian: | ||
- "{{ new_version.repmgr.package_name.Debian }}={{ new_version.repmgr.version.Debian + '-*' }}" | ||
- "repmgr-common={{ new_version.repmgr.version.Debian + '-*' }}" | ||
- repmgr-common={{ repmgr_common_target_version | default(new_version.repmgr.version.Debian + '-*') }} | ||
RedHat: | ||
- "{{ new_version.repmgr.package_name.RedHat }}-{{ new_version.repmgr.version.RedHat }}" | ||
module_defaults: | ||
yum: { lock_timeout: "{{ yum_lock_timeout }}" } | ||
yum: {lock_timeout: "{{ yum_lock_timeout }}"} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
53 changes: 0 additions & 53 deletions
53
.../roles/postgresql/tasks/upgrade/extensions/replication/pg-new/repmgr-register-standby.yml
This file was deleted.
Oops, something went wrong.
14 changes: 0 additions & 14 deletions
14
...ostgresql/tasks/upgrade/extensions/replication/pg-new/repmgr-stop-and-disable-service.yml
This file was deleted.
Oops, something went wrong.
85 changes: 85 additions & 0 deletions
85
.../playbooks/roles/postgresql/tasks/upgrade/extensions/replication/pg-new/standby-clone.yml
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,85 @@ | ||
--- | ||
- name: standby | Stop {{ _service[ansible_os_family] }} service | ||
systemd: | ||
name: "{{ _service[ansible_os_family] }}" | ||
state: stopped | ||
vars: | ||
_service: | ||
# On Debian stop only instantiated service | ||
Debian: "{{ new_version.pg.instantiated_service_name[ansible_os_family] }}" | ||
RedHat: "{{ new_version.pg.service_name[ansible_os_family] }}" | ||
|
||
# 'repmgr standby clone' command uses 'pg_basebackup' that requires target directories to be empty | ||
# tablespace directories on a primary node are untouched | ||
- name: standby | Clean up tablespace directories | ||
vars: | ||
pattern: '*' | ||
include_tasks: helpers/rm-dir-content.yml | ||
loop_control: | ||
loop_var: directory_path | ||
loop: "{{ pg_custom_tablespace_locations }}" | ||
|
||
# Target data directory cannot contain running PostgreSQL instance | ||
# '--force' overwrites existing data directory | ||
- name: standby | extensions | repmgr | Clone standby node | ||
become_user: postgres | ||
command: >- | ||
{{ new_version.repmgr.bin_dir[ansible_os_family] }}/repmgr standby clone | ||
-h {{ pg_primary_node }} | ||
-U {{ manifest.specification.extensions.replication.privileged_user_name }} | ||
-d {{ manifest.specification.extensions.replication.repmgr_database }} -p 5432 --force | ||
register: repmgr_standby_clone | ||
changed_when: repmgr_standby_clone.rc == 0 | ||
|
||
- name: Stop old PostgreSQL service | ||
block: | ||
- name: standby | Stop PostgreSQL {{ old_version.pg.version }} service | ||
systemd: | ||
name: "{{ service_name }}" | ||
state: stopped | ||
loop_control: | ||
loop_var: service_name | ||
loop: "{{ _services | reject('==', '') }}" | ||
vars: | ||
_services: | ||
- "{{ old_version.pg.service_name[ansible_os_family] }}" | ||
- "{{ old_version.pg.instantiated_service_name[ansible_os_family] }}" | ||
|
||
- name: standby | Debian | Mask {{ old_version.pg.instantiated_service_name.Debian }} service to avoid port conflict | ||
when: ansible_os_family == 'Debian' | ||
systemd: | ||
name: "{{ old_version.pg.instantiated_service_name[ansible_os_family] }}" | ||
masked: true | ||
|
||
- name: Start new PostgreSQL service | ||
block: | ||
- name: standby | Debian | Unmask {{ new_version.pg.instantiated_service_name.Debian }} service | ||
when: ansible_os_family == 'Debian' | ||
systemd: | ||
name: "{{ new_version.pg.instantiated_service_name[ansible_os_family] }}" | ||
masked: false | ||
|
||
- name: standby | Start PostgreSQL {{ new_version.pg.version }} service | ||
systemd: | ||
name: "{{ service_name }}" | ||
state: started | ||
loop_control: | ||
loop_var: service_name | ||
loop: "{{ _services | reject('==', '') }}" | ||
vars: | ||
_services: | ||
- "{{ new_version.pg.service_name[ansible_os_family] }}" | ||
- "{{ new_version.pg.instantiated_service_name[ansible_os_family] }}" | ||
|
||
# '--force' overwrites existing node record | ||
- name: standby | extensions | repmgr | Register standby node | ||
become_user: postgres | ||
command: >- | ||
{{ new_version.repmgr.bin_dir[ansible_os_family] }}/repmgr standby register --force | ||
--upstream-conninfo='host={{ pg_primary_node }}, | ||
user={{ manifest.specification.extensions.replication.replication_user_name }}, | ||
dbname={{ manifest.specification.extensions.replication.repmgr_database }}, | ||
connect_timeout=2' | ||
--upstream-node-id 1 | ||
register: repmgr_standby_register | ||
changed_when: repmgr_standby_register.rc == 0 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
7 changes: 7 additions & 0 deletions
7
...ks/roles/postgresql/tasks/upgrade/extensions/replication/pg-new/update-repmgrd-config.yml
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,7 @@ | ||
--- | ||
- name: "{{ _node_role }} | extensions | repmgr | Debian | Update REPMGRD_CONF in /etc/default/repmgrd" | ||
when: ansible_os_family == 'Debian' | ||
replace: | ||
path: /etc/default/repmgrd | ||
regexp: ^REPMGRD_CONF=\"/etc/postgresql/\d+/main/repmgr.conf\" | ||
replace: REPMGRD_CONF="/etc/repmgr.conf" |
7 changes: 7 additions & 0 deletions
7
...oles/postgresql/tasks/upgrade/extensions/replication/pg-new/update-symlink-repmgr-bin.yml
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,7 @@ | ||
--- | ||
- name: "{{ _node_role }} | extensions | repmgr | RedHat | Update repmgr symlink" | ||
file: | ||
src: "{{ new_version.repmgr.bin_dir.RedHat }}/repmgr" | ||
dest: "/usr/bin/repmgr" | ||
state: link | ||
when: ansible_os_family == 'RedHat' |
Oops, something went wrong.