Skip to content

Commit 03733f0

Browse files
committed
fix: lots of Travis fixes for replication test
1 parent a1d9ff7 commit 03733f0

File tree

7 files changed

+92
-12
lines changed

7 files changed

+92
-12
lines changed

.travis.yml

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -39,8 +39,7 @@ jobs:
3939
python: 2.7
4040
env: IMAGE_NAME="centos:7-builded"
4141
install:
42-
- pip install ansible=="2.4.4.0" docker-py
42+
- pip install ansible=="2.4.4.0" docker-py netaddr
4343
- ln -s ${PWD} tests/docker/ANXS.postgresql
4444
script:
45-
- find . -iname repmgr.yml
46-
- ansible-playbook -i tests/docker/hosts -e image_name=${IMAGE_NAME} tests/docker/replication.yml
45+
- ansible-playbook -v -i tests/docker/hosts -e image_name=${IMAGE_NAME} tests/docker/replication.yml

defaults/repmgr.yml

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,14 @@
1+
# Role default overrides to work with replication
2+
postgresql_wal_level: "replica"
3+
postgresql_max_wal_senders: 10
4+
postgresql_max_replication_slots: 10
5+
postgresql_wal_keep_segments: 256 # Needs to be big enough for pg_basebackup to complete before this starts rotating files, 16MB each
6+
postgresql_hot_standby: on
7+
postgresql_archive_mode: off
8+
postgresql_archive_command: "/bin/true"
9+
postgresql_shared_preload_libraries:
10+
- repmgr
11+
112
# Required configuration items
213
repmgr_target_group: ""
314
repmgr_user: "repmgr"

tasks/extensions/detect_repmgr_primary.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313

1414
- name: Repmgr | Declare as primary for new installation
1515
set_fact:
16-
repmgr_primary: "{{ True if ansible_hostname == ansible_play_hosts[0] else False }}"
16+
repmgr_primary: "{{ True if ansible_hostname == ansible_play_hosts[0] or inventory_hostname == ansible_play_hosts[0] else False }}"
1717
when: "repmgr_existing_installation_detected is skipped"
1818

1919
- debug:

tasks/schemas.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,4 +13,4 @@
1313
become: yes
1414
become_user: "{{ postgresql_admin_user }}"
1515
with_items: "{{ postgresql_database_schemas }}"
16-
when: postgresql_databases|length > 0
16+
when: postgresql_databases|length > 0 and repmgr_primary

templates/pgpass.j2

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
{% for server in repmgr_target_group_hosts %}
1+
{% for server in groups[repmgr_target_group] | sort %}
22
{{ server }}:{{postgresql_port}}:{{repmgr_database}}:{{repmgr_user}}:{% for user in postgresql_users if user['name'] == repmgr_user %}{{user['pass']}}{% endfor %}
33
{{ server }}:{{postgresql_port}}:replication:{{repmgr_replication_user}}:{% for user in postgresql_users if user['name'] == repmgr_user %}{{user['pass']}}{% endfor %}
44
{% endfor %}

tests/docker/group_vars/postgresql.yml

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,10 @@ postgresql_databases:
77
- name: foobar
88
owner: baz
99

10+
- name: repmgr
11+
owner: "repmgr"
12+
encoding: "UTF-8"
13+
1014
# NOTE: postgresql >= 10 does not accept unencrypted passwords
1115
postgresql_users:
1216
- name: baz
@@ -19,6 +23,10 @@ postgresql_users:
1923

2024
- name: zabaz
2125

26+
- name: "repmgr"
27+
pass: "repmgr"
28+
encrypted: true # required with postgres >= 10 and ansible <= 2.6
29+
2230
postgresql_database_schemas:
2331
- database: foobar
2432
state: present
@@ -29,6 +37,11 @@ postgresql_user_privileges:
2937
- name: baz
3038
db: foobar
3139

40+
- name: "repmgr"
41+
db: repmgr
42+
priv: "ALL"
43+
role_attr_flags: "SUPERUSER,REPLICATION"
44+
3245
postgresql_ext_install_contrib: true
3346

3447
# These do not work everywhere, but should be included ASAP

tests/docker/replication.yml

Lines changed: 63 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
1-
# site.yml
1+
# replication.yml
22
---
3+
# vim: set syntax=yaml expandtab shiftwidth=2 tabstop=2 softtabstop=2 autoindent:
34

45
- hosts: localhost
56
become: false
@@ -13,21 +14,31 @@
1314
path: "{{ 'images' if 'builded' in image_name else '' }}"
1415
force: "{{ force_build_image | default(false) }}"
1516

17+
- name: Create docker network
18+
docker_network:
19+
name: replication
20+
1621
- name: Run docker machines for testing PostgreSQL role
1722
docker_container:
1823
name: "postgresql-10-1"
24+
hostname: "postgresql-10-1"
1925
image: "{{ image_name }}"
2026
command: "/sbin/init"
2127
state: started
2228
privileged: true
29+
networks:
30+
- name: replication
2331

2432
- name: Run docker machines for testing PostgreSQL role 2
2533
docker_container:
2634
name: "postgresql-10-2"
35+
hostname: "postgresql-10-2"
2736
image: "{{ image_name }}"
2837
command: "/sbin/init"
2938
state: started
3039
privileged: true
40+
networks:
41+
- name: replication
3142

3243
- name: Add new machines into postgresql inventory group
3344
add_host:
@@ -48,8 +59,54 @@
4859
vars_files:
4960
# are these paths relative to the playbook path?
5061
- ../../defaults/repmgr.yml
51-
vars:
52-
postgresql_version: 10
53-
postgresql_ext_install_repmgr: yes
54-
roles:
55-
- ANXS.postgresql
62+
tasks:
63+
- name: install ssh
64+
package:
65+
name: openssh
66+
state: present
67+
- name: install ssh-client
68+
package:
69+
name: openssh-clients
70+
state: present
71+
- name: install ssh-server
72+
package:
73+
name: openssh-server
74+
state: present
75+
- name: install cron
76+
package:
77+
name: cronie
78+
state: present
79+
- name: ensure sshd is running
80+
systemd:
81+
name: sshd
82+
state: started
83+
- name: ensure cron is running
84+
systemd:
85+
name: crond
86+
state: started
87+
88+
- import_role:
89+
name: ANXS.postgresql
90+
vars:
91+
# see tests/docker/group_vars/postgresql.yml for more configuration
92+
repmgr_target_group: "postgresql"
93+
postgresql_version: 10
94+
postgresql_ext_install_repmgr: yes
95+
postgresql_listen_addresses:
96+
- "*"
97+
#- "localhost"
98+
#- "{{ ansible_default_ipv4.address }}"
99+
postgresql_pg_hba_custom:
100+
- type: host
101+
database: repmgr
102+
user: "repmgr"
103+
address: "0.0.0.0/0"
104+
#address: "{{ ansible_default_ipv4['network'] }}/{{ [ansible_default_ipv4['network'], ansible_default_ipv4['netmask']] | join('/') | ipaddr('prefix') }}"
105+
method: "md5"
106+
comment: ""
107+
- type: host
108+
database: replication
109+
user: "repmgr"
110+
address: "0.0.0.0/0"
111+
method: "md5"
112+
comment: ""

0 commit comments

Comments
 (0)