]>
Commit | Line | Data |
---|---|---|
f1a9ab46 P |
1 | --- |
2 | - set_fact: | |
3 | postgres_version: "{{ postgres_cluster.version }}" | |
4 | postgres_cluster_name: "{{ postgres_cluster.name }}" | |
5 | postgres_port: "{{ postgres_cluster.port }}" | |
6 | postgres_fsync_enabled: "{{ postgres_cluster.fsync_enabled }}" | |
7 | postgres_archive_enabled: "{{ postgres_cluster.archive_enabled }}" | |
8d168915 | 8 | postgres_wal_level: "{{ postgres_cluster.wal_level|default('logical') }}" |
f1a9ab46 P |
9 | postgres_max_replication_slots: "{{ postgres_cluster.max_replication_slots | default(10) }}" |
10 | postgres_extra_config: "{{ postgres_cluster.extra_config | default({}) }}" | |
11 | barman_directory: "{{ postgres_cluster.barman_directory | default(None) }}" | |
12 | postgres_primary: "{{ postgres_cluster.primary | default(None) }}" | |
13 | postgres_checksums: "{{ postgres_cluster.checksums | default(True) }}" | |
14 | ||
d0bc90e0 P |
15 | - name: Install postgresql version {{ postgres_version }} |
16 | apt: name=postgresql-{{ postgres_version }} | |
17 | when: ansible_distribution_release != 'NA' | |
18 | ||
19 | - name: Install pg_repack version {{ postgres_version }} | |
20 | apt: name=postgresql-{{ postgres_version }}-repack | |
21 | when: | |
22 | - ansible_distribution_release != 'NA' | |
8d168915 | 23 | - postgres_version in ['9.3', '9.4', '9.5', '9.6', '10', '11', '12'] |
d0bc90e0 P |
24 | |
25 | - name: Set initdb options | |
26 | set_fact: postgres_initdb_option="{% if postgres_checksums %}--data-checksums{% endif %}" | |
27 | ||
28 | - name: Create postgres cluster {{ postgres_version }}/{{ postgres_cluster_name }} if needed | |
29 | command: /usr/bin/pg_createcluster {{ postgres_version }} {{ postgres_cluster_name }} -- {{ postgres_initdb_option }} | |
30 | args: | |
31 | creates: /var/lib/postgresql/{{ postgres_version }}/{{ postgres_cluster_name }}/ | |
32 | ||
33 | - name: Check postgres server key | |
34 | stat: path=/var/lib/postgresql/{{ postgres_version }}/{{ postgres_cluster_name }}/server.key | |
35 | register: server_key | |
36 | ||
37 | - name: Copy snakeoil key in postgres dir | |
38 | copy: | |
39 | src=/etc/ssl/private/ssl-cert-snakeoil.key | |
40 | dest=/var/lib/postgresql/{{ postgres_version }}/{{ postgres_cluster_name }}/server.key | |
41 | remote_src=true | |
42 | owner=postgres | |
43 | group=postgres | |
44 | mode="0600" | |
45 | when: not server_key.stat.exists or server_key.stat.islnk | |
46 | ||
47 | - name: Check postgres server certificate | |
48 | stat: path=/var/lib/postgresql/{{ postgres_version }}/{{ postgres_cluster_name }}/server.crt | |
49 | register: server_crt | |
50 | ||
51 | - name: Copy snakeoil certificate in postgres dir | |
52 | copy: | |
53 | src=/etc/ssl/certs/ssl-cert-snakeoil.pem | |
54 | dest=/var/lib/postgresql/{{ postgres_version }}/{{ postgres_cluster_name }}/server.crt | |
55 | remote_src=true | |
56 | owner=postgres | |
57 | group=postgres | |
58 | mode="0644" | |
59 | when: not server_crt.stat.exists or server_crt.stat.islnk | |
60 | ||
61 | - name: Add standby clone from barman script | |
62 | include: postgres-standby-barman.yml | |
b722248e P |
63 | when: postgres_barman_server is defined and postgres_primary.restore_barman_directory is defined |
64 | ||
65 | - name: Add standby clone from pg_basebackup | |
66 | include: postgres-standby-basebackup.yml | |
67 | when: postgres_primary and postgres_primary.pg_basebackup is defined | |
d0bc90e0 P |
68 | |
69 | - name: Determine SSD or rotational disks | |
70 | raw: 'lsblk --noheadings --nodeps --raw --output=rota | grep -q 1' | |
71 | check_mode: no | |
72 | ignore_errors: yes | |
73 | register: rotational_disk | |
74 | ||
75 | - name: Set specific random page cost for SSDs | |
76 | set_fact: | |
77 | postgres_specific_random_page_cost: "1.0" | |
78 | when: | |
79 | - rotational_disk.failed is defined | |
80 | - rotational_disk.failed | |
81 | ||
82 | - name: Upload postgresql.conf | |
83 | template: src=postgresql.{{ postgres_version }}.conf.j2 dest=/etc/postgresql/{{ postgres_version }}/{{ postgres_cluster_name }}/postgresql.conf | |
84 | ||
85 | - name: Upload pg_hba.conf | |
86 | template: src=pg_hba.conf.j2 dest=/etc/postgresql/{{ postgres_version }}/{{ postgres_cluster_name }}/pg_hba.conf | |
87 | ||
88 | - name: Upload recovery.conf | |
89 | template: src=recovery.conf.j2 dest=/var/lib/postgresql/{{ postgres_version }}/{{ postgres_cluster_name }}/recovery.conf owner=postgres group=postgres mode=0600 | |
8d168915 | 90 | when: postgres_primary and postgres_version is version('12', '<') |
d0bc90e0 P |
91 | no_log: True |
92 | ||
8d168915 P |
93 | - name: Define secondary nodes as secondaries with corresponding signal files |
94 | file: | |
95 | path: "{{ item }}" | |
96 | state: touch | |
97 | when: postgres_primary and postgres_version is version('12', '>=') | |
98 | with_items: | |
99 | - /var/lib/postgresql/{{ postgres_version }}/{{ postgres_cluster_name }}/standby.signal | |
100 | ||
d0bc90e0 P |
101 | - name: Create log file |
102 | file: | |
103 | path={{ postgres_log_dir }}/postgresql-{{ postgres_version }}-{{ postgres_cluster_name }}.log | |
104 | state=touch | |
105 | owner=postgres | |
106 | group=adm | |
107 | when: postgres_log_dir is defined and postgres_log_dir | |
108 | ||
109 | - name: Create log symlink for pg_lsclusters | |
110 | file: dest=/etc/postgresql/{{ postgres_version }}/{{ postgres_cluster_name }}/log src={{ postgres_log_dir }}/postgresql-{{ postgres_version }}-{{ postgres_cluster_name }}.log state=link | |
111 | when: postgres_log_dir is defined and postgres_log_dir |