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