|
2 | 2 | # main file for remote DB task
|
3 | 3 | # based on https://fedoraproject.org/wiki/PostgreSQL
|
4 | 4 |
|
| 5 | +- name: Include postgres params |
| 6 | + include_vars: default.yml |
| 7 | + |
| 8 | +- name: Override postgres params for CentOs or Red Hat when ovirt >= 4.2 |
| 9 | + include_vars: postgres95.yml |
| 10 | + when: |
| 11 | + - ovirt_engine_version >= '4.2' |
| 12 | + - ansible_distribution in ('CentOS', 'Red Hat') |
| 13 | + |
5 | 14 | # install libselinux-python on machine - selinux policy
|
6 | 15 | - name: install SELinux requirements to run ansible modules managing SELinux.
|
7 | 16 | yum:
|
|
11 | 20 | - libselinux-python
|
12 | 21 | - policycoreutils-python
|
13 | 22 |
|
| 23 | +- name: install psycopg2 requirements to run ansible modules managing postgres. |
| 24 | + yum: |
| 25 | + name: "python-psycopg2" |
| 26 | + state: "present" |
| 27 | + |
14 | 28 | - name: check PostgreSQL service
|
15 | 29 | service:
|
16 |
| - name: postgresql |
| 30 | + name: "{{ postgres_service_name }}" |
17 | 31 | state: started
|
18 | 32 | register: postgresql_status
|
19 | 33 | ignore_errors: True
|
20 | 34 |
|
21 | 35 | - name: yum install PostgreSQL
|
22 | 36 | yum:
|
23 |
| - name: "postgresql-server" |
| 37 | + name: "{{ postgres_server }}" |
24 | 38 | state: installed
|
25 | 39 | update_cache: yes
|
26 | 40 | when: postgresql_status|failed
|
|
33 | 47 | line: 'Defaults !requiretty'
|
34 | 48 | when: postgresql_status|failed
|
35 | 49 |
|
36 |
| -- name: run PostgreSQL initdb |
| 50 | +- name: scl enable |
| 51 | + shell: 'scl enable rh-postgresql95 bash' |
| 52 | + when: |
| 53 | + - postgresql_status|failed |
| 54 | + - ovirt_engine_version >= '4.2' |
| 55 | + - ansible_distribution in ('CentOS', 'Red Hat') |
| 56 | + tags: |
| 57 | + - skip_ansible_lint |
| 58 | + |
| 59 | +- name: run PostgreSQL DB config |
37 | 60 | become_user: postgres
|
38 | 61 | become: yes
|
39 |
| - shell: '/usr/bin/initdb -D /var/lib/pgsql/data' |
| 62 | + shell: '{{ postgres_setup_cmd }}' |
40 | 63 | args:
|
41 |
| - creates: "/var/lib/pgsql/data/postgresql.conf" |
42 |
| - when: postgresql_status|failed |
| 64 | + creates: "{{ postgres_config_file }}" |
| 65 | + when: ovirt_engine_version < '4.2' |
| 66 | + tags: |
| 67 | + - skip_ansible_lint |
| 68 | + |
| 69 | +- name: run PostgreSQL DB config |
| 70 | + shell: '{{ postgres_setup_cmd }}' |
| 71 | + args: |
| 72 | + creates: "{{ postgres_config_file }}" |
| 73 | + when: ovirt_engine_version >= '4.2' |
43 | 74 | tags:
|
44 | 75 | - skip_ansible_lint
|
45 | 76 |
|
46 | 77 | - name: start PostgreSQL service
|
47 | 78 | service:
|
48 |
| - name: postgresql |
| 79 | + name: "{{ postgres_service_name }}" |
49 | 80 | state: started
|
50 | 81 | enabled: yes
|
51 | 82 |
|
52 | 83 | # allow access engine database access from outside
|
53 | 84 | - name: "update pg_hba.conf to allow connection for ovirt_engine_remote_db"
|
54 | 85 | lineinfile:
|
55 |
| - dest: '/var/lib/pgsql/data/pg_hba.conf' |
| 86 | + dest: '{{ postgres_data_dir }}/pg_hba.conf' |
56 | 87 | line: >
|
57 | 88 | {{ item.type }} {{ ovirt_engine_db_name }} {{ ovirt_engine_db_user }}
|
58 | 89 | {{ item.address | default(' ') }} {{ item.method }}
|
|
63 | 94 | # allow access engine dwh database access from outside
|
64 | 95 | - name: "update pg_hba.conf to allow connection for ovirt_engine_dwh_remote_db"
|
65 | 96 | lineinfile:
|
66 |
| - dest: '/var/lib/pgsql/data/pg_hba.conf' |
| 97 | + dest: '{{ postgres_data_dir }}/pg_hba.conf' |
67 | 98 | line: >
|
68 | 99 | {{ item.type }} {{ ovirt_engine_dwh_db_name }}
|
69 | 100 | {{ ovirt_engine_dwh_db_user }} {{ item.address | default(' ') }}
|
|
75 | 106 | # listen on specific address
|
76 | 107 | - name: update postgresql.conf -> listen_addresses='*'
|
77 | 108 | lineinfile:
|
78 |
| - dest: "{{ ovirt_engine_remote_db_config_file }}" |
| 109 | + dest: "{{ postgres_config_file }}" |
79 | 110 | regexp: "^listen_addresses *=.*$"
|
80 | 111 | line: "listen_addresses='{{ovirt_engine_remote_db_listen_address}}'"
|
81 | 112 | insertafter: EOF
|
|
84 | 115 | # listen on specific port
|
85 | 116 | - name: update postgresql.conf -> port number
|
86 | 117 | lineinfile:
|
87 |
| - dest: "{{ ovirt_engine_remote_db_config_file }}" |
| 118 | + dest: "{{ postgres_config_file }}" |
88 | 119 | regexp: "^port *=.*$"
|
89 | 120 | line: "port={{ ovirt_engine_remote_db_port }}"
|
90 | 121 | insertafter: EOF
|
|
97 | 128 | # - Environment=PGPORT=5432
|
98 | 129 | - name: update postgresql.conf -> port number in service file (Fedora & RHEL)
|
99 | 130 | lineinfile:
|
100 |
| - dest: '/usr/lib/systemd/system/postgresql.service' |
| 131 | + dest: '/usr/lib/systemd/system/{{ postgres_service_name }}.service' |
101 | 132 | backrefs: yes
|
102 | 133 | regexp: "^Environment=PGPORT *=.*$"
|
103 | 134 | line: "Environment=PGPORT={{ ovirt_engine_remote_db_port }}"
|
|
125 | 156 | # Required for vacuum feature
|
126 | 157 | - name: set vacuum configuration for postgresql
|
127 | 158 | ini_file:
|
128 |
| - path: "{{ ovirt_engine_remote_db_config_file }}" |
| 159 | + path: "{{ postgres_config_file }}" |
129 | 160 | option: "{{ item.key }}"
|
130 | 161 | value: "{{ item.value }}"
|
131 | 162 | section: null
|
|
145 | 176 | # first check of PostgreSQL - if fail, setup
|
146 | 177 | - name: PostgreSQL reload configuration
|
147 | 178 | service:
|
148 |
| - name: postgresql |
| 179 | + name: "{{ postgres_service_name }}" |
149 | 180 | state: restarted
|
150 | 181 |
|
151 | 182 | - name: check iptables service
|
|
189 | 220 | tags:
|
190 | 221 | - skip_ansible_lint
|
191 | 222 |
|
192 |
| -- name: creating directory for sql scripts in /tmp/ansible-sql |
193 |
| - file: |
194 |
| - path: /tmp/ansible-sql |
195 |
| - state: directory |
196 |
| - |
197 |
| -- name: copy SQL scripts |
198 |
| - template: |
199 |
| - src: "{{item}}.j2" |
200 |
| - dest: "/tmp/ansible-sql/{{item}}" |
201 |
| - mode: 0644 |
202 |
| - owner: postgres |
203 |
| - group: postgres |
204 |
| - with_items: |
205 |
| - - "ovirt-engine-db-create.sql" |
206 |
| - - "ovirt-engine-db-user-create.sql" |
207 |
| - - "ovirt-engine-dwh-db-create.sql" |
208 |
| - - "ovirt-engine-dwh-db-user-create.sql" |
209 |
| - |
210 |
| -- name: create engine DB and user |
| 223 | +- name: create DWH DB user |
| 224 | + become: true |
211 | 225 | become_user: postgres
|
212 |
| - become: yes |
213 |
| - command: psql -p {{ovirt_engine_remote_db_port}} -a -f /tmp/ansible-sql/'{{item}}' |
| 226 | + postgresql_user: |
| 227 | + name: "{{ item.user }}" |
| 228 | + password: "{{ item.password }}" |
214 | 229 | with_items:
|
215 |
| - - "ovirt-engine-db-user-create.sql" |
216 |
| - - "ovirt-engine-db-create.sql" |
217 |
| - when: ovirt_engine_remote_db == True |
| 230 | + - user: "{{ ovirt_engine_db_user }}" |
| 231 | + password: "{{ ovirt_engine_db_password }}" |
| 232 | + - user: "{{ ovirt_engine_dwh_db_user }}" |
| 233 | + password: "{{ ovirt_engine_dwh_db_password }}" |
| 234 | + when: ovirt_engine_dwh_remote_db == True |
218 | 235 |
|
219 |
| -- name: create engine DWH DB and user |
| 236 | +- name: create engine & DWH DBs |
| 237 | + become: true |
220 | 238 | become_user: postgres
|
221 |
| - become: yes |
222 |
| - command: psql -p {{ovirt_engine_remote_db_port}} -a -f /tmp/ansible-sql/'{{item}}' |
| 239 | + postgresql_db: |
| 240 | + name: "{{ item.db_name }}" |
| 241 | + owner: "{{ item.user }}" |
| 242 | + encoding: UTF-8 |
| 243 | + lc_collate: en_US.UTF-8 |
| 244 | + lc_ctype: en_US.UTF-8 |
| 245 | + template: template0 |
223 | 246 | with_items:
|
224 |
| - - "ovirt-engine-dwh-db-user-create.sql" |
225 |
| - - "ovirt-engine-dwh-db-create.sql" |
| 247 | + - db_name: "{{ ovirt_engine_db_name }}" |
| 248 | + user: "{{ ovirt_engine_db_user }}" |
| 249 | + - db_name: "{{ ovirt_engine_dwh_db_name }}" |
| 250 | + user: "{{ ovirt_engine_dwh_db_user }}" |
226 | 251 | when: ovirt_engine_dwh_remote_db == True
|
227 | 252 |
|
228 | 253 | - name: check PostgreSQL service
|
229 | 254 | service:
|
230 |
| - name: postgresql |
| 255 | + name: "{{ postgres_service_name }}" |
231 | 256 | state: started
|
232 | 257 | enabled: yes
|
233 | 258 |
|
|
0 commit comments