Skip to content

Commit e9d30df

Browse files
committed
test: add cleanup to all tests - parameterize path names
In order to make the tests more friendly to all of our test environments, add a cleanup section to all tests. The certificate test already had one. Improve the clean up by removing all files and paths created by the role and tests. Parameterize paths used by the role to make it easier to remove them in the tests. Fix a few spelling errors. Fix some ansible-lint issues.
1 parent 04cdc83 commit e9d30df

File tree

10 files changed

+149
-108
lines changed

10 files changed

+149
-108
lines changed

tasks/certificate.yml

Lines changed: 13 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,9 @@
11
---
22
- name: Generate certificate using PostgreSQL role
33
when: postgresql_certificates | length > 0
4+
vars:
5+
__pg_server_crt: "{{ __postgresql_data_dir }}/server.crt"
6+
__pg_server_key: "{{ __postgresql_data_dir }}/server.key"
47
block:
58
- name: Generate certificates
69
include_role:
@@ -13,37 +16,36 @@
1316
src: >-
1417
/etc/pki/tls/certs/{{ (postgresql_certificates |
1518
first)['name'] }}.crt
16-
dest: /var/lib/pgsql/data/server.crt
19+
dest: "{{ __pg_server_crt }}"
1720
state: link
1821
owner: postgres
19-
when: ( postgresql_certificates | first )['name'] is not abs
22+
when: (postgresql_certificates | first)['name'] is not abs
2023

2124
- name: Install certificate from the default path
2225
file:
2326
src: >-
2427
/etc/pki/tls/private/{{ (postgresql_certificates |
2528
first)['name'] }}.key
26-
dest: /var/lib/pgsql/data/server.key
29+
dest: "{{ __pg_server_key }}"
2730
state: link
2831
owner: postgres
29-
when: ( postgresql_certificates | first )['name'] is not abs
32+
when: (postgresql_certificates | first)['name'] is not abs
3033

3134
- name: Install certificate from custom path
3235
file:
3336
src: "{{ (postgresql_certificates | first)['name'] }}.crt"
34-
dest: /var/lib/pgsql/data/server.crt
37+
dest: "{{ __pg_server_crt }}"
3538
state: link
3639
owner: postgres
37-
when: ( postgresql_certificates | first )['name'] is abs
40+
when: (postgresql_certificates | first)['name'] is abs
3841

3942
- name: Install certificate from custom path
4043
file:
4144
src: "{{ (postgresql_certificates | first)['name'] }}.key"
42-
dest: /var/lib/pgsql/data/server.key
45+
dest: "{{ __pg_server_key }}"
4346
state: link
4447
owner: postgres
45-
when: ( postgresql_certificates | first )['name'] is abs
46-
48+
when: (postgresql_certificates | first)['name'] is abs
4749

4850
- name: Install user provided TLS certificates for postgresql
4951
when:
@@ -54,13 +56,13 @@
5456
- name: Install certificate file
5557
file:
5658
src: "{{ postgresql_cert_name }}.crt"
57-
dest: /var/lib/pgsql/data/server.crt
59+
dest: "{{ __pg_server_crt }}"
5860
state: link
5961
owner: postgres
6062

6163
- name: Install postgresql server private key
6264
file:
6365
src: "{{ postgresql_cert_name }}.key"
64-
dest: /var/lib/pgsql/data/server.key
66+
dest: "{{ __pg_server_key }}"
6567
state: link
6668
owner: postgres

tasks/main.yml

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@
4545
- name: Init DB
4646
command:
4747
cmd: postgresql-setup --initdb
48-
creates: /var/lib/pgsql/data/postgresql.conf
48+
creates: "{{ __postgresql_main_conf_file }}"
4949

5050
- name: Start Postgresql server
5151
service:
@@ -76,7 +76,7 @@
7676

7777
- name: Enable logging in by password
7878
replace:
79-
path: /var/lib/pgsql/data/pg_hba.conf
79+
path: "{{ __postgresql_hba_conf_file }}"
8080
regexp: '(peer|ident)$'
8181
replace: 'md5'
8282
backup: true
@@ -93,7 +93,7 @@
9393
become: true
9494
template:
9595
backup: true
96-
dest: "/var/lib/pgsql/data/pg_hba.conf"
96+
dest: "{{ __postgresql_hba_conf_file }}"
9797
src: pg_hba.conf.j2
9898
mode: 0600
9999
owner: postgres
@@ -109,16 +109,16 @@
109109

110110
- name: Link generated conf file with server one
111111
lineinfile:
112-
path: /var/lib/pgsql/data/postgresql.conf
113-
line: "include_if_exists = '/etc/postgresql/system-roles-internal.conf'"
112+
path: "{{ __postgresql_main_conf_file }}"
113+
line: "include_if_exists = '{{ __postgresql_internal_conf_file }}'"
114114
insertafter: "EOF"
115115
notify: Restart postgresql
116116

117117
- name: Generate postgresql system-roles-internal.conf
118118
become: true
119119
template:
120120
backup: true
121-
dest: "/etc/postgresql/system-roles-internal.conf"
121+
dest: "{{ __postgresql_internal_conf_file }}"
122122
src: postgresql-internal.conf.j2
123123
mode: 0600
124124
owner: postgres
@@ -131,14 +131,14 @@
131131
become: true
132132
template:
133133
backup: true
134-
dest: "/etc/postgresql/system-roles.conf"
134+
dest: "{{ __postgresql_conf_file }}"
135135
src: postgresql.conf.j2
136136
mode: 0600
137137
owner: postgres
138138
group: postgres
139139

140140
- name: Link generated conf file with server one
141141
lineinfile:
142-
path: /var/lib/pgsql/data/postgresql.conf
143-
line: "include_if_exists = '/etc/postgresql/system-roles.conf'"
142+
path: "{{ __postgresql_main_conf_file }}"
143+
line: "include_if_exists = '{{ __postgresql_conf_file }}'"
144144
notify: Restart postgresql

tasks/set_vars.yml

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

2525
- name: Check postgresql.conf
2626
stat:
27-
path: /var/lib/pgsql/data/postgresql.conf
27+
path: "{{ __postgresql_main_conf_file }}"
2828
register: __postgresql_conf
2929

3030
- name: Check TLS crt file

tests/clean_instance.yml

Lines changed: 0 additions & 19 deletions
This file was deleted.

tests/tasks/clean_instance.yml

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
# SPDX-License-Identifier: MIT
2+
---
3+
- name: Run handlers
4+
meta: flush_handlers
5+
6+
- name: Uninstall postgresql
7+
package:
8+
name: "{{ __postgresql_packages }}"
9+
state: absent
10+
11+
- name: Remove data directory
12+
file:
13+
path: "{{ __postgresql_data_dir }}"
14+
state: absent
15+
16+
- name: Remove config files
17+
file:
18+
path: "{{ item }}"
19+
state: absent
20+
loop:
21+
- "{{ __postgresql_main_conf_file }}"
22+
- "{{ __postgresql_hba_conf_file }}"
23+
- "{{ __postgresql_conf_file }}"
24+
- "{{ __postgresql_internal_conf_file }}"
25+
26+
- name: Dump logs
27+
command: journalctl -u postgresql
28+
changed_when: false

tests/tests_certificate.yml

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
- name: Deploy postgresql
1010
include_role:
1111
name: linux-system-roles.postgresql
12+
public: true
1213
vars:
1314
postgresql_certificates:
1415
- name: test_crt
@@ -44,4 +45,5 @@
4445
changed_when: false
4546

4647
- name: Clean up
47-
include_tasks: clean_instance.yml
48+
include_tasks: tasks/clean_instance.yml
49+
tags: tests::cleanup

tests/tests_config_files.yml

Lines changed: 49 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -1,48 +1,56 @@
11
---
22
- name: Test PostgreSQL config file logic, handling
33
hosts: all
4-
vars:
5-
__main_conf_file: /var/lib/pgsql/data/postgresql.conf
6-
__generated_conf_files:
7-
- /var/lib/pgsql/data/pg_hba.conf
8-
- /etc/postgresql/system-roles.conf
9-
- /etc/postgresql/system-roles-internal.conf
104
tasks:
11-
- name: Run role with given config
12-
include_role:
13-
name: linux-system-roles.postgresql
14-
vars:
15-
postgresql_pg_hba_conf:
16-
- type: local
17-
database: all
18-
user: all
19-
auth_method: peer
20-
- type: host
21-
database: all
22-
user: all
23-
address: '127.0.0.1/32'
24-
auth_method: ident
25-
postgresql_server_conf:
26-
shared_buffers: 128MB
27-
huge_pages: try
5+
- name: Run test and cleanup
6+
block:
7+
- name: Run role with given config
8+
include_role:
9+
name: linux-system-roles.postgresql
10+
public: true
11+
vars:
12+
postgresql_pg_hba_conf:
13+
- type: local
14+
database: all
15+
user: all
16+
auth_method: peer
17+
- type: host
18+
database: all
19+
user: all
20+
address: '127.0.0.1/32'
21+
auth_method: ident
22+
postgresql_server_conf:
23+
shared_buffers: 128MB
24+
huge_pages: try
2825

29-
- name: Verify existence of config files
30-
stat:
31-
path: "{{ item }}"
32-
register: __stat
33-
failed_when: not __stat.stat.exists
34-
loop: "{{ __generated_conf_files }}"
26+
- name: Verify existence of config files
27+
stat:
28+
path: "{{ item }}"
29+
register: __stat
30+
failed_when: not __stat.stat.exists
31+
loop:
32+
- "{{ __postgresql_hba_conf_file }}"
33+
- "{{ __postgresql_conf_file }}"
34+
- "{{ __postgresql_internal_conf_file }}"
3535

36-
- name: Verify main conf has link to system roles
37-
command: >-
38-
grep /etc/postgresql/system-roles-internal.conf
39-
{{ __main_conf_file }}
40-
changed_when: false
36+
- name: Verify main conf has link to system roles
37+
command: >-
38+
grep {{ __postgresql_internal_conf_file }}
39+
{{ __postgresql_main_conf_file }}
40+
changed_when: false
4141

42-
- name: Check headers for ansible_managed, fingerprint
43-
include_tasks: tasks/check_header.yml
44-
loop: "{{ __generated_conf_files }}"
45-
loop_control:
46-
loop_var: __file
47-
vars:
48-
__fingerprint: "system_role:postgresql"
42+
- name: Check headers for ansible_managed, fingerprint
43+
include_tasks: tasks/check_header.yml
44+
loop:
45+
- "{{ __postgresql_hba_conf_file }}"
46+
- "{{ __postgresql_conf_file }}"
47+
- "{{ __postgresql_internal_conf_file }}"
48+
loop_control:
49+
loop_var: __file
50+
vars:
51+
__fingerprint: "system_role:postgresql"
52+
53+
always:
54+
- name: Clean up
55+
include_tasks: tasks/clean_instance.yml
56+
tags: tests::cleanup

tests/tests_default.yml

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
- name: Run postgresql role
1111
include_role:
1212
name: linux-system-roles.postgresql
13+
public: true
1314

1415
- name: Flush handlers
1516
meta: flush_handlers
@@ -24,16 +25,16 @@
2425
command: systemctl is-enabled postgresql
2526
changed_when: false
2627

27-
- name: Test - database is accesible for super user usign Unix socket
28+
- name: Test - database is accessible for super user using Unix socket
2829
become: true
2930
become_user: postgres
3031
shell: |
3132
set -euo pipefail
3233
echo '\q' | psql
33-
async: 3 # in case of password promt we need to fail
34+
async: 3 # in case of password prompt we need to fail
3435
changed_when: false
3536

36-
- name: Check - server tunning is used - shared buffers
37+
- name: Check - server tuning is used - shared buffers
3738
become: true
3839
become_user: postgres
3940
shell: |
@@ -42,13 +43,13 @@
4243
register: result
4344
changed_when: false
4445

45-
- name: Test - server tunning is used - shared buffers
46+
- name: Test - server tuning is used - shared buffers
4647
assert:
4748
that: >
4849
(ansible_memory_mb.real.total/4) | int | abs | string
4950
in result.stdout
5051
51-
- name: Check - server tunning is used - effective cache size
52+
- name: Check - server tuning is used - effective cache size
5253
become: true
5354
become_user: postgres
5455
shell: |
@@ -57,8 +58,13 @@
5758
register: result
5859
changed_when: false
5960

60-
- name: Test - server tunning is used - effective cache size
61+
- name: Test - server tuning is used - effective cache size
6162
assert:
6263
that: >
6364
(ansible_memory_mb.real.total/2) | int | abs | string
6465
in result.stdout
66+
67+
always:
68+
- name: Clean up
69+
include_tasks: tasks/clean_instance.yml
70+
tags: tests::cleanup

0 commit comments

Comments
 (0)