Skip to content

Commit b91e299

Browse files
committed
Convert tasks to YAML-style module args and lint
1 parent 9925f11 commit b91e299

File tree

4 files changed

+139
-36
lines changed

4 files changed

+139
-36
lines changed

tasks/backup.yml

Lines changed: 36 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,25 +1,56 @@
11
---
22

33
- name: Create backup directories
4-
file: owner=postgres group=postgres mode=0750 state=directory path={{ item }}
4+
file:
5+
owner: postgres
6+
group: postgres
7+
mode: 0750
8+
state: directory
9+
path: "{{ item }}"
510
with_items:
611
- "{{ postgresql_backup_local_dir }}"
712
- "{{ postgresql_backup_local_dir }}/bin"
813
- "{{ postgresql_backup_active_dir }}"
914

1015
- name: Install backup scripts
11-
template: src={{ item }}.j2 dest={{ postgresql_backup_local_dir }}/bin/{{ item }} owner=postgres group=postgres mode=0750
16+
template:
17+
src: "{{ item }}.j2"
18+
dest: "{{ postgresql_backup_local_dir }}/bin/{{ item }}"
19+
owner: postgres
20+
group: postgres
21+
mode: 0750
1222
with_items:
1323
- backup_working_wal.sh
1424
- archive_wal.sh
1525
- scheduled_backup.sh
1626

1727
- name: Set WAL archive config options
18-
template: src=20ansible_backup.conf.j2 dest={{ postgresql_conf_dir }}/conf.d/20ansible_backup.conf owner=postgres group=postgres backup=yes
28+
template:
29+
src: 20ansible_backup.conf.j2
30+
dest: "{{ postgresql_conf_dir }}/conf.d/20ansible_backup.conf"
31+
owner: postgres
32+
group: postgres
33+
backup: yes
1934
notify: Reload PostgreSQL
2035

2136
- name: Schedule backups
22-
cron: name="PostgreSQL Backup" cron_file=ansible_postgresql_backup user=postgres hour={{ postgresql_backup_hour | default(1) }} minute={{ postgresql_backup_minute | default(0) }} day={{ postgresql_backup_day | default(omit) }} month={{ postgresql_backup_month | default(omit) }} weekday={{ postgresql_backup_weekday | default(omit) }} job="{{ postgresql_backup_local_dir }}/bin/scheduled_backup.sh{{ ' && ' ~ postgresql_backup_post_command if postgresql_backup_post_command is defined else '' }}"
37+
cron:
38+
name: "PostgreSQL Backup"
39+
cron_file: ansible_postgresql_backup
40+
user: postgres
41+
hour: "{{ postgresql_backup_hour | default(1) }}"
42+
minute: "{{ postgresql_backup_minute | default(0) }}"
43+
day: "{{ postgresql_backup_day | default(omit) }}"
44+
month: "{{ postgresql_backup_month | default(omit) }}"
45+
weekday: "{{ postgresql_backup_weekday | default(omit) }}"
46+
job: >-
47+
{{ postgresql_backup_local_dir }}/bin/scheduled_backup.sh{{
48+
' && ' ~ postgresql_backup_post_command if postgresql_backup_post_command is defined else ''
49+
}}
2350
2451
- name: Schedule PostgreSQL working WAL backup
25-
cron: name="PostgreSQL WAL Backup" cron_file=ansible_postgresql_walbackup user=postgres job={{ postgresql_backup_local_dir }}/bin/backup_working_wal.sh
52+
cron:
53+
name: "PostgreSQL WAL Backup"
54+
cron_file: ansible_postgresql_walbackup
55+
user: postgres
56+
job: "{{ postgresql_backup_local_dir }}/bin/backup_working_wal.sh"

tasks/debian.yml

Lines changed: 20 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,36 @@
11
---
22

33
- name: Install pgdg package signing key (Debian/pgdg)
4-
apt_key: keyserver=pgp.mit.edu id=ACCC4CF8
4+
apt_key:
5+
keyserver: pgp.mit.edu
6+
id: ACCC4CF8
7+
register: __postgresql_apt_key_result
8+
until: __postgresql_apt_key_result is succeeded
9+
retries: 5
10+
delay: 5
511
when: postgresql_flavor is defined and postgresql_flavor == "pgdg"
6-
12+
713
- name: Install pgdg repository (Debian/pgdg)
8-
apt_repository: repo="deb http://apt.postgresql.org/pub/repos/apt/ {{ ansible_distribution_release }}-pgdg main" update_cache=yes
14+
apt_repository:
15+
repo: "deb http://apt.postgresql.org/pub/repos/apt/ {{ ansible_distribution_release }}-pgdg main"
16+
update_cache: yes
917
when: postgresql_flavor is defined and postgresql_flavor == "pgdg"
1018

1119
- name: Install PostgreSQL (Debian)
12-
apt: name=postgresql{{ '-' ~ postgresql_version if postgresql_version is defined else '' }}
20+
apt:
21+
name: postgresql{{ '-' ~ postgresql_version if postgresql_version is defined else '' }}
22+
register: __postgresql_apt_result
23+
until: __postgresql_apt_result is succeeded
24+
retries: 5
25+
delay: 5
1326

1427
- name: Get installed version
1528
command: dpkg-query -f ${Version;3} --show postgresql
1629
when: postgresql_version is not defined
17-
register: postgresql_version_query
30+
register: __postgresql_version_query_result
1831
changed_when: false
1932

2033
- name: Set version fact
21-
set_fact: postgresql_version={{ postgresql_version_query.stdout.stdout.split('+') | first }}
34+
set_fact:
35+
postgresql_version: "{{ __postgresql_version_query_result.stdout.split('+') | first }}"
2236
when: postgresql_version is not defined

tasks/main.yml

Lines changed: 38 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -7,48 +7,76 @@
77

88
# For RedHat we use the value from defaults/main.yml
99
- name: Set version fact
10-
set_fact: postgresql_version={{ postgresql_default_version }}
10+
set_fact:
11+
postgresql_version: "{{ postgresql_default_version }}"
1112
when: ansible_os_family == "RedHat" and postgresql_version is not defined
1213

1314
# Sets postgresql_pgdata_dir, postgresql_conf_dir
14-
- include_vars: "{{ ansible_os_family | lower }}.yml"
15+
- name: Set OS-specific variables
16+
include_vars: "{{ ansible_os_family | lower }}.yml"
1517

1618
- name: Set pgdata fact
17-
set_fact: postgresql_pgdata={{ postgresql_pgdata_default }}
19+
set_fact:
20+
postgresql_pgdata: "{{ postgresql_pgdata_default }}"
1821
when: postgresql_pgdata is not defined
1922

2023
- name: Set conf dir fact
21-
set_fact: postgresql_conf_dir={{ postgresql_conf_dir_default }}
24+
set_fact:
25+
postgresql_conf_dir: "{{ postgresql_conf_dir_default }}"
2226
when: postgresql_conf_dir is not defined
2327

2428
# Needs postgresql_pgdata_dir set
2529
- include_tasks: redhat.yml
2630
when: ansible_os_family == "RedHat"
2731

2832
- name: Create conf.d
29-
file: path={{ postgresql_conf_dir }}/conf.d state=directory owner={{ postgresql_user_name }} group={{ postgresql_user_name }}
33+
file:
34+
path: "{{ postgresql_conf_dir }}/conf.d"
35+
state: directory
36+
owner: "{{ postgresql_user_name }}"
37+
group: "{{ postgresql_user_name }}"
3038

3139
- name: Set conf.d include in postgresql.conf
32-
lineinfile: line="include_dir 'conf.d'" dest={{ postgresql_conf_dir }}/postgresql.conf backup=yes
40+
lineinfile:
41+
line: "include_dir 'conf.d'"
42+
dest: "{{ postgresql_conf_dir }}/postgresql.conf"
43+
backup: yes
3344
notify: Reload PostgreSQL
3445
when: "postgresql_version is version_compare('9.3', '>=')"
3546

3647

3748
- name: Include 25ansible_postgresql.conf in postgresql.conf
38-
lineinfile: line="include 'conf.d/25ansible_postgresql.conf'" dest={{ postgresql_conf_dir }}/postgresql.conf backup=yes
49+
lineinfile:
50+
line: "include 'conf.d/25ansible_postgresql.conf'"
51+
dest: "{{ postgresql_conf_dir }}/postgresql.conf"
52+
backup: yes
3953
notify: Reload PostgreSQL
4054
when: "postgresql_version is version_compare('9.3', '<')"
4155

4256
- name: Set config options
43-
template: src=25ansible_postgresql.conf.j2 dest={{ postgresql_conf_dir }}/conf.d/25ansible_postgresql.conf owner={{ postgresql_user_name }} group={{ postgresql_user_name }} backup=yes
57+
template:
58+
src: 25ansible_postgresql.conf.j2
59+
dest: "{{ postgresql_conf_dir }}/conf.d/25ansible_postgresql.conf"
60+
owner: "{{ postgresql_user_name }}"
61+
group: "{{ postgresql_user_name }}"
62+
backup: yes
4463
notify: Reload PostgreSQL
4564

4665
- name: Install pg_hba.conf
47-
template: src=pg_hba.conf.{{ ansible_os_family | lower }}.j2 dest={{ postgresql_conf_dir }}/pg_hba.conf owner={{ postgresql_user_name }} group={{ postgresql_user_name }} mode=0400 backup=yes
66+
template:
67+
src: pg_hba.conf.{{ ansible_os_family | lower }}.j2
68+
dest: "{{ postgresql_conf_dir }}/pg_hba.conf"
69+
owner: "{{ postgresql_user_name }}"
70+
group: "{{ postgresql_user_name }}"
71+
mode: 0400
72+
backup: yes
4873
notify: Reload PostgreSQL
4974

5075
- include_tasks: backup.yml
5176
when: postgresql_backup_dir is defined
5277

5378
- name: Ensure PostgreSQL is running
54-
service: name={{ postgresql_service_name }} enabled=yes state=started
79+
service:
80+
name: "{{ postgresql_service_name }}"
81+
enabled: yes
82+
state: started

tasks/redhat.yml

Lines changed: 45 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -3,38 +3,68 @@
33
# Using the rpm URL format of the yum module causes Ansible to download the rpm
44
# every time to check whether it's installed, so, don't do that.
55
- name: Check pgdg repository package (RedHat)
6-
yum: name=pgdg-{{ postgresql_pgdg_dists[ansible_distribution] }}{{ postgresql_version | replace('.', '') }}
7-
register: repo_pkg_installed
6+
yum:
7+
name: "pgdg-{{ postgresql_pgdg_dists[ansible_distribution] }}{{ postgresql_version | replace('.', '') }}"
8+
register: __postgresql_repo_pkg_installed_result
89
ignore_errors: yes
910

10-
# URLs for Fedora look like:
11-
# http://yum.postgresql.org/<pg_version>/fedora/fedora-<os_major_version>-<arch>/pgdg-fedora<pg_version_without_period>-<pg_version>-<rpm_release_version>.noarch.rpm
11+
# URLs for Fedora look like (line split for linting purposes):
12+
# http://yum.postgresql.org/<pg_version>/fedora/fedora-<os_major_version>-<arch>
13+
# /pgdg-fedora<pg_version_without_period>-<pg_version>-<rpm_release_version>.noarch.rpm
1214
# URLs for RedHat and all derivatives look like:
13-
# http://yum.postgresql.org/<pg_version>/redhat/rhel-<os_major_version>-<arch>/pgdg-<dist><pg_version_without_period>-<pg_version>-<rpm_release_version>.noarch.rpm
15+
# http://yum.postgresql.org/<pg_version>/redhat/rhel-<os_major_version>-<arch>
16+
# /pgdg-<dist><pg_version_without_period>-<pg_version>-<rpm_release_version>.noarch.rpm
1417

1518
# There's no direct way to determine the latest pacakge, so we have to use a
1619
# helper script to parse the directory list and figure it out.
1720
- name: Determine latest pgdg repository package (RedHat)
18-
script: get_repo_rpm_release.py http://yum.postgresql.org/{{ postgresql_version }}/{{ postgresql_pgdg_families[ansible_distribution] | default("redhat") }}/{{ postgresql_pgdg_shortfamilies[ansible_distribution] | default("rhel") }}-{{ ansible_distribution_major_version }}-{{ ansible_architecture }}/ {{ postgresql_pgdg_dists[ansible_distribution] }}
19-
register: pgdg_repo_pkg_name
20-
when: repo_pkg_installed.failed is defined and repo_pkg_installed.failed
21+
script: >-
22+
get_repo_rpm_release.py
23+
http://yum.postgresql.org/{{ postgresql_version }}/{{ postgresql_pgdg_families[ansible_distribution]
24+
| default("redhat") }}/{{ postgresql_pgdg_shortfamilies[ansible_distribution]
25+
| default("rhel") }}-{{ ansible_distribution_major_version }}-{{ ansible_architecture }}/ {{
26+
postgresql_pgdg_dists[ansible_distribution]
27+
}}
28+
register: __postgresql_pgdg_repo_pkg_name_result
29+
when: __postgresql_repo_pkg_installed_result is failed
2130

2231
- name: Install pgdg repository package (RedHat)
23-
yum: name=http://yum.postgresql.org/{{ postgresql_version }}/{{ postgresql_pgdg_families[ansible_distribution] | default("redhat") }}/{{ postgresql_pgdg_shortfamilies[ansible_distribution] | default("rhel") }}-{{ ansible_distribution_major_version }}-{{ ansible_architecture }}/{{ pgdg_repo_pkg_name.stdout.strip() }}
24-
when: repo_pkg_installed.failed is defined and repo_pkg_installed.failed
32+
yum:
33+
name: >-
34+
http://yum.postgresql.org/{{ postgresql_version }}/{{ postgresql_pgdg_families[ansible_distribution]
35+
| default("redhat") }}/{{ postgresql_pgdg_shortfamilies[ansible_distribution]
36+
| default("rhel") }}-{{ ansible_distribution_major_version }}-{{ ansible_architecture }}/{{
37+
__postgresql_pgdg_repo_pkg_name_result.stdout.strip()
38+
}}
39+
register: __postgresql_yum_result
40+
until: __postgresql_yum_result is succeeded
41+
retries: 5
42+
delay: 5
43+
when: __postgresql_repo_pkg_installed_result is failed
2544

2645
- name: Install PostgreSQL (RedHat)
27-
yum: name=postgresql{{ postgresql_version | replace('.', '') }}-server
46+
yum:
47+
name: postgresql{{ postgresql_version | replace('.', '') }}-server
2848

2949
- name: Check for pgdata directory
30-
stat: path={{ postgresql_pgdata }}/base
50+
stat:
51+
path: "{{ postgresql_pgdata }}/base"
3152
register: pgdata_stat
3253
failed_when: false
3354

3455
- name: Initialize database (RedHat < 7)
3556
command: /sbin/service postgresql-{{ postgresql_version }} initdb
36-
when: ansible_distribution_major_version | int < 7 and (pgdata_stat.stat.isdir is not defined or not pgdata_stat.stat.isdir)
57+
args:
58+
warn: false # Use of /sbin/service is valid here, ignore lint error
59+
when: >-
60+
ansible_distribution_major_version | int < 7
61+
and (pgdata_stat.stat.isdir is not defined or not pgdata_stat.stat.isdir)
3762
3863
- name: Initialize database (RedHat >= 7)
39-
command: /usr/pgsql-{{ postgresql_version }}/bin/postgresql{{ postgresql_version | replace('.', '') }}-setup initdb
40-
when: ansible_distribution_major_version | int >= 7 and (pgdata_stat.stat.isdir is not defined or not pgdata_stat.stat.isdir)
64+
command: >-
65+
/usr/pgsql-{{ postgresql_version }}/bin/postgresql{{
66+
'-' if postgresql_version is version_compare('10', '>=') else '' }}{{
67+
postgresql_version | replace('.', '') }}-setup initdb
68+
when: >-
69+
ansible_distribution_major_version | int >= 7
70+
and (pgdata_stat.stat.isdir is not defined or not pgdata_stat.stat.isdir)

0 commit comments

Comments
 (0)