Skip to content
Snippets Groups Projects
Commit 4a223f2f authored by Louan B's avatar Louan B
Browse files

step 4 : fix replication :D

parent 9a7e78c9
No related branches found
No related tags found
No related merge requests found
all: all:
hosts: hosts:
PrimaryVM: PrimaryVM:
ansible_host: 34.133.70.45 ansible_host: 35.202.23.190
ansible_user: louanbelicaud ansible_user: louanbelicaud
ansible_port: 22 ansible_port: 22
ansible_ssh_private_key_file: "/Users/louanbelicaud/.ssh/google_compute_engine" ansible_ssh_private_key_file: "/Users/louanbelicaud/.ssh/google_compute_engine"
StandbyVM: StandbyVM:
ansible_host: 34.28.59.62 ansible_host: 130.211.227.208
ansible_user: louanbelicaud ansible_user: louanbelicaud
ansible_port: 22 ansible_port: 22
ansible_ssh_private_key_file: "/Users/louanbelicaud/.ssh/google_compute_engine" ansible_ssh_private_key_file: "/Users/louanbelicaud/.ssh/google_compute_engine"
......
...@@ -11,10 +11,10 @@ ...@@ -11,10 +11,10 @@
hosts: PrimaryVM hosts: PrimaryVM
become: true become: true
roles: roles:
- { role: pg_replication, postgresql_mode: "primary", postgresql_standby_ip: "34.28.59.62" } - { role: pg_replication, postgresql_mode: "primary", postgresql_standby_ip: "130.211.227.208" }
- name: Configure PostgreSQL on Standby VM - name: Configure PostgreSQL on Standby VM
hosts: StandbyVM hosts: StandbyVM
become: true become: true
roles: roles:
- { role: pg_replication, postgresql_mode: "standby", postgresql_primary_ip: "34.133.70.45" } - { role: pg_replication, postgresql_mode: "standby", postgresql_primary_ip: "35.202.23.190" }
- name: Debug postgresql_mode before including tasks - name: Debug postgresql_mode before including tasks
debug: debug:
msg: "postgresql_mode is currently set to {{ postgresql_mode }} for inventory host {{ inventory_hostname }}" msg: "postgresql_mode is currently set to {{ postgresql_mode }} for inventory host {{ inventory_hostname }}"
- name: Connect to postgres database, create postgres replicator, and grant access to database
- name: Create replication user
community.postgresql.postgresql_user: community.postgresql.postgresql_user:
db: postgres db: postgres
name: replicator name: replicator
...@@ -9,21 +10,22 @@ ...@@ -9,21 +10,22 @@
role_attr_flags: "replication" role_attr_flags: "replication"
become: yes become: yes
become_user: postgres become_user: postgres
- name: Do show hba_file
- name: Get hba_file path
community.postgresql.postgresql_query: community.postgresql.postgresql_query:
query: "SHOW hba_file" query: "SHOW hba_file"
register: hba_file register: hba_file
become: yes become: yes
become_user: postgres become_user: postgres
- name: debug show postgresql_standby_ip
- name: Show postgresql_standby_ip
ansible.builtin.debug: ansible.builtin.debug:
msg: "The postgresql_standby_ip is {{ postgresql_standby_ip }}" msg: "The postgresql_standby_ip is {{ postgresql_standby_ip }}"
become: yes
become_user: postgres - name: Grant replication connection to replicator user
- name: Grant connexion to user replicator
community.postgresql.postgresql_pg_hba: community.postgresql.postgresql_pg_hba:
dest: "{{ hba_file.query_result[0]['hba_file'] }}" dest: "{{ hba_file.query_result[0]['hba_file'] }}"
contype: hostssl contype: host
users: replicator users: replicator
source: 0.0.0.0/0 source: 0.0.0.0/0
databases: replication databases: replication
...@@ -31,24 +33,19 @@ ...@@ -31,24 +33,19 @@
address: "{{ postgresql_standby_ip }}" address: "{{ postgresql_standby_ip }}"
become: yes become: yes
become_user: postgres become_user: postgres
- name: Set wal_level to replica and max_wal_senders to 10
- name: Configure PostgreSQL parameters
community.postgresql.postgresql_set: community.postgresql.postgresql_set:
name: "{{ item.name }}" name: "{{ item.name }}"
value: "{{ item.value }}" value: "{{ item.value }}"
loop: loop:
- { name: "wal_level", value: "replica" } - { name: "wal_level", value: "replica" }
- { name: "max_wal_senders", value: "10" } - { name: "max_wal_senders", value: "10" }
- { name: "wal_keep_size", value: "512MB" }
become: yes become: yes
become_user: postgres become_user: postgres
- name: Set wal_keep_size to 1GB in postgresql.conf
ansible.builtin.lineinfile: - name: Restart PostgreSQL
path: /etc/postgresql/15/main/postgresql.conf
regexp: '^#?wal_keep_size\s*='
line: 'wal_keep_size = 1GB'
backrefs: yes
become: yes
become_user: root
- name: restart postgresql
ansible.builtin.systemd: ansible.builtin.systemd:
name: postgresql name: postgresql
state: restarted state: restarted
......
- name: Debug postgresql_mode before including tasks - name: Debug postgresql_mode before including tasks
debug: debug:
msg: "postgresql_mode is currently set to {{ postgresql_mode }} for inventory host {{ inventory_hostname }}" msg: "postgresql_mode is currently set to {{ postgresql_mode }} for inventory host {{ inventory_hostname }}"
- name: Connect to postgres database, create postgres replicator, and grant access to database
- name: Create replication user
community.postgresql.postgresql_user: community.postgresql.postgresql_user:
db: postgres db: postgres
name: replicator name: replicator
...@@ -9,18 +10,19 @@ ...@@ -9,18 +10,19 @@
role_attr_flags: "replication" role_attr_flags: "replication"
become: yes become: yes
become_user: postgres become_user: postgres
- name: Do show hba_file
- name: Get hba_file path
community.postgresql.postgresql_query: community.postgresql.postgresql_query:
query: "SHOW hba_file" query: "SHOW hba_file"
register: hba_file register: hba_file
become: yes become: yes
become_user: postgres become_user: postgres
- name: debug show postgresql_primary_ip
- name: Show postgresql_primary_ip
ansible.builtin.debug: ansible.builtin.debug:
msg: "The postgresql_primary_ip is {{ postgresql_primary_ip }}" msg: "The postgresql_primary_ip is {{ postgresql_primary_ip }}"
become: yes
become_user: postgres - name: Grant replication connection to replicator user
- name: Grant connexion to user replicator
community.postgresql.postgresql_pg_hba: community.postgresql.postgresql_pg_hba:
dest: "{{ hba_file.query_result[0]['hba_file'] }}" dest: "{{ hba_file.query_result[0]['hba_file'] }}"
contype: host contype: host
...@@ -31,6 +33,7 @@ ...@@ -31,6 +33,7 @@
address: "{{ postgresql_primary_ip }}" address: "{{ postgresql_primary_ip }}"
become: yes become: yes
become_user: postgres become_user: postgres
- name: Configure PostgreSQL parameters - name: Configure PostgreSQL parameters
community.postgresql.postgresql_set: community.postgresql.postgresql_set:
name: "{{ item.name }}" name: "{{ item.name }}"
...@@ -40,23 +43,18 @@ ...@@ -40,23 +43,18 @@
- { name: "wal_level", value: "replica" } - { name: "wal_level", value: "replica" }
- { name: "max_wal_senders", value: "10" } - { name: "max_wal_senders", value: "10" }
- { name: "hot_standby", value: "on" } - { name: "hot_standby", value: "on" }
- { name: "wal_keep_size", value: "1GB" }
become: yes become: yes
become_user: postgres become_user: postgres
- name: Set wal_keep_size to 1GB in postgresql.conf
ansible.builtin.lineinfile: - name: Restart PostgreSQL
path: /etc/postgresql/15/main/postgresql.conf
regexp: '^#?wal_keep_size\s*='
line: 'wal_keep_size = 1GB'
backrefs: yes
become: yes
become_user: root
- name: restart postgresql
ansible.builtin.systemd: ansible.builtin.systemd:
name: postgresql name: postgresql
state: restarted state: restarted
become: yes become: yes
become_user: root become_user: root
- name: Create .pgpass from template file
- name: Create .pgpass file
template: template:
src: pgpass_template.j2 src: pgpass_template.j2
dest: /tmp/.pgpass dest: /tmp/.pgpass
...@@ -67,54 +65,55 @@ ...@@ -67,54 +65,55 @@
USER_REPLICATOR: "replicator" USER_REPLICATOR: "replicator"
PW_REPLICATOR: "replicator" PW_REPLICATOR: "replicator"
IP_PRIMARY: "{{ postgresql_primary_ip }}" IP_PRIMARY: "{{ postgresql_primary_ip }}"
- name: Show data_directory
- name: Get data_directory path
community.postgresql.postgresql_query: community.postgresql.postgresql_query:
query: "SHOW data_directory" query: "SHOW data_directory"
register: data_directory register: data_directory
become: yes become: yes
become_user: postgres become_user: postgres
- name: Debug data_directory
ansible.builtin.debug: - name: Stop PostgreSQL
msg: "The data_directory path is {{ data_directory.query_result[0]['data_directory'] }}" ansible.builtin.systemd:
become: yes
become_user: root
- name: Stop the postgresql service
ansible.builtin.service:
name: postgresql name: postgresql
state: stopped state: stopped
become: yes become: yes
become_user: root become_user: root
- name: Delete the repository data_directory
- name: Remove data_directory
ansible.builtin.file: ansible.builtin.file:
name: "{{ data_directory.query_result[0]['data_directory'] }}" path: "{{ data_directory.query_result[0]['data_directory'] }}"
state: absent state: absent
become: yes become: yes
become_user: root become_user: root
- name: Add repository directory
- name: Recreate data_directory
ansible.builtin.file: ansible.builtin.file:
name: "{{ data_directory.query_result[0]['data_directory'] }}" path: "{{ data_directory.query_result[0]['data_directory'] }}"
state: directory state: directory
owner: postgres
group: postgres group: postgres
mode: "0700" mode: "0700"
become: yes become: yes
become_user: root become_user: root
- name: Exec pg_basebackup
tags: pg_basebackup - name: Execute pg_basebackup
ansible.builtin.command: pg_basebackup -h "{{ postgresql_primary_ip }}" -U replicator -p 5432 -D /var/lib/postgresql/15/main -X stream ansible.builtin.command: >
vars: pg_basebackup -R -h "{{ postgresql_primary_ip }}" -U replicator -p 5432 -D {{ data_directory.query_result[0]['data_directory'] }} -X stream
environment:
PGPASSFILE: "/tmp/.pgpass" PGPASSFILE: "/tmp/.pgpass"
become: yes become: yes
become_user: postgres become_user: postgres
- name: Delete the file /tmp/.pgpass
- name: Remove .pgpass file
ansible.builtin.file: ansible.builtin.file:
path: /tmp/.pgpass path: /tmp/.pgpass
state: absent state: absent
group: postgres
mode: "0600"
become: yes become: yes
become_user: root become_user: root
- name: Start the postgresql service
ansible.builtin.service: - name: Start PostgreSQL
ansible.builtin.systemd:
name: postgresql name: postgresql
state: started state: started
become: yes become: yes
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment