diff options
Diffstat (limited to 'test')
-rw-r--r-- | test/hosts | 0 | ||||
-rw-r--r-- | test/main.yml | 154 | ||||
-rw-r--r-- | test/requirements.txt | 1 | ||||
-rw-r--r-- | test/requirements.yml | 3 | ||||
l--------- | test/roles/postgresql | 1 |
5 files changed, 159 insertions, 0 deletions
diff --git a/test/hosts b/test/hosts new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/hosts | |||
diff --git a/test/main.yml b/test/main.yml new file mode 100644 index 0000000..19ff526 --- /dev/null +++ b/test/main.yml | |||
@@ -0,0 +1,154 @@ | |||
1 | --- | ||
2 | - name: Bring up docker containers | ||
3 | hosts: localhost | ||
4 | vars: &common_vars | ||
5 | postgres_version: 10 | ||
6 | postgres_barman_directory: 'test-postgres-10' | ||
7 | postgres_barman_server: postgres_barman | ||
8 | barman_rsync_password: "secret_rsync" | ||
9 | barman_rsync_allowed_hosts: 172.17.0.0/24 | ||
10 | postgres_allowed_hosts: | ||
11 | - user: all | ||
12 | range: 172.17.0.0/24 | ||
13 | postgres_replication_hosts: | ||
14 | - user: replicator | ||
15 | range: 172.17.0.0/24 | ||
16 | inventory: | ||
17 | - name: "{{ postgres_barman_server }}" | ||
18 | image: "python:3.7-stretch" | ||
19 | - name: postgres_one | ||
20 | image: "python:3.7-stretch" | ||
21 | links: | ||
22 | - "{{ postgres_barman_server }}" | ||
23 | - name: postgres_two | ||
24 | image: "python:3.7-stretch" | ||
25 | links: | ||
26 | - "{{ postgres_barman_server }}" | ||
27 | - postgres_one | ||
28 | - name: postgres_three | ||
29 | image: "python:3.7-stretch" | ||
30 | links: | ||
31 | - "{{ postgres_barman_server }}" | ||
32 | - postgres_one | ||
33 | roles: | ||
34 | - role: provision_docker | ||
35 | provision_docker_inventory: "{{inventory}}" | ||
36 | provision_docker_use_docker_connection: true | ||
37 | tasks: | ||
38 | - name: Group primary | ||
39 | add_host: | ||
40 | hostname: "{{item}}" | ||
41 | groups: primary | ||
42 | <<: *common_vars | ||
43 | postgres_clusters: | ||
44 | - version: "{{ postgres_version }}" | ||
45 | name: 'main' | ||
46 | port: 5432 | ||
47 | fsync_enabled: True | ||
48 | checksums: False | ||
49 | archive_enabled: True | ||
50 | barman_directory: "{{ postgres_barman_directory }}" | ||
51 | users: | ||
52 | - username: barman | ||
53 | password: "secret_cocktail" | ||
54 | permissions: 'SUPERUSER' | ||
55 | - username: replicator | ||
56 | password: "secret_repli" | ||
57 | permissions: 'REPLICATION' | ||
58 | |||
59 | with_items: | ||
60 | - postgres_one | ||
61 | tags: provision_docker | ||
62 | |||
63 | - name: Group secondaries | ||
64 | add_host: | ||
65 | hostname: "{{item}}" | ||
66 | groups: secondary | ||
67 | <<: *common_vars | ||
68 | postgres_clusters: | ||
69 | - version: "{{ postgres_version }}" | ||
70 | name: 'main' | ||
71 | port: 5432 | ||
72 | fsync_enabled: True | ||
73 | checksums: False | ||
74 | archive_enabled: True | ||
75 | barman_directory: "{{ postgres_barman_directory }}" | ||
76 | primary: | ||
77 | host: postgres_one | ||
78 | port: 5432 | ||
79 | restore_directory: "{{ postgres_barman_directory }}" | ||
80 | replication_user: "replicator" | ||
81 | replication_password: "secret_repli" | ||
82 | |||
83 | with_items: | ||
84 | - postgres_two | ||
85 | - postgres_three | ||
86 | tags: provision_docker | ||
87 | |||
88 | - name: Group db-all | ||
89 | add_host: | ||
90 | hostname: "{{item}}" | ||
91 | groups: db-all | ||
92 | with_items: | ||
93 | - postgres_one | ||
94 | - postgres_two | ||
95 | - postgres_three | ||
96 | tags: provision_docker | ||
97 | |||
98 | - name: Group barman | ||
99 | add_host: | ||
100 | hostname: "{{item}}" | ||
101 | groups: barman | ||
102 | <<: *common_vars | ||
103 | barman_databases: | ||
104 | - name: "{{ postgres_barman_directory }}" | ||
105 | description: 'Main database' | ||
106 | primary_host: postgres_one | ||
107 | primary_barman_password: "secret_cocktail" | ||
108 | backup_method: rsync | ||
109 | ansible_group: db-all | ||
110 | retention_policy: 'RECOVERY WINDOW OF 7 DAYS' | ||
111 | with_items: | ||
112 | - postgres_barman | ||
113 | tags: provision_docker | ||
114 | |||
115 | - name: Test installing Barman role | ||
116 | hosts: barman | ||
117 | connection: docker | ||
118 | vars: {} | ||
119 | pre_tasks: &pre_tasks | ||
120 | - name: "Build hosts file" | ||
121 | shell: 'echo "{{ hostvars[inventory_hostname].ansible_default_ipv4.address }} {{inventory_hostname}}" >> /etc/hosts' | ||
122 | when: hostvars[inventory_hostname].ansible_default_ipv4.address is defined | ||
123 | |||
124 | - debug: msg="Running on host {{inventory_hostname}} ({{ hostvars[inventory_hostname].ansible_default_ipv4.address }})" | ||
125 | roles: | ||
126 | - { role: barman, tags: ['barman'] } | ||
127 | |||
128 | - name: Test installing Postgresql role | ||
129 | hosts: primary:secondary | ||
130 | connection: docker | ||
131 | vars: | ||
132 | postgres_listen_addresses: "{{ hostvars[inventory_hostname].ansible_default_ipv4.address }}" | ||
133 | pre_tasks: *pre_tasks | ||
134 | roles: | ||
135 | - { role: postgresql, tags: ['postgres'] } | ||
136 | tasks: | ||
137 | - name: Start postgres cluster | ||
138 | service: name=postgresql state=started | ||
139 | |||
140 | - name: Test connection to Postgres instances. | ||
141 | become: true | ||
142 | become_user: postgres | ||
143 | become_method: su | ||
144 | command: psql --port=5432 --command='select NOW()' | ||
145 | |||
146 | |||
147 | - name: Test running Postgresql role when database is started | ||
148 | connection: docker | ||
149 | hosts: primary:secondary | ||
150 | vars: | ||
151 | postgres_listen_addresses: "{{ hostvars[inventory_hostname].ansible_default_ipv4.address }}" | ||
152 | pre_tasks: *pre_tasks | ||
153 | roles: | ||
154 | - { role: postgresql, tags: ['postgres'] } | ||
diff --git a/test/requirements.txt b/test/requirements.txt new file mode 100644 index 0000000..d2cbb1a --- /dev/null +++ b/test/requirements.txt | |||
@@ -0,0 +1 @@ | |||
docker-py | |||
diff --git a/test/requirements.yml b/test/requirements.yml new file mode 100644 index 0000000..1b1155c --- /dev/null +++ b/test/requirements.yml | |||
@@ -0,0 +1,3 @@ | |||
1 | - src: chrismeyersfsu.provision_docker | ||
2 | name: provision_docker | ||
3 | version: 7a6243dfcf69f9d262877eca487bc14b62ba6960 | ||
diff --git a/test/roles/postgresql b/test/roles/postgresql new file mode 120000 index 0000000..f47fac4 --- /dev/null +++ b/test/roles/postgresql | |||
@@ -0,0 +1 @@ | |||
../../../postgresql \ No newline at end of file | |||