fcd29406a2
* Only search inside the role for files to include When a role is called as a dependency, both roles are searched. This can cause the incorrect file to be included if it is picked up from the parent role.
207 lines
6.1 KiB
YAML
207 lines
6.1 KiB
YAML
- name: python 2
|
||
set_fact:
|
||
python_suffix: ""
|
||
when: ansible_python_version is version('3', '<')
|
||
|
||
- name: python 3
|
||
set_fact:
|
||
python_suffix: "-py3"
|
||
when: ansible_python_version is version('3', '>=')
|
||
|
||
- name: Include distribution and Python version specific variables
|
||
include_vars: "{{ lookup('first_found', params) }}"
|
||
vars:
|
||
params:
|
||
files:
|
||
- '{{ ansible_distribution }}-{{ ansible_distribution_major_version }}{{ python_suffix }}.yml'
|
||
- '{{ ansible_distribution }}-{{ ansible_distribution_version }}{{ python_suffix }}.yml'
|
||
- '{{ ansible_os_family }}{{ python_suffix }}.yml'
|
||
- 'default{{ python_suffix }}.yml'
|
||
paths:
|
||
- "{{ role_path }}/vars"
|
||
|
||
- name: make sure the dbus service is started under systemd
|
||
systemd:
|
||
name: dbus
|
||
state: started
|
||
when: ansible_service_mgr == 'systemd' and ansible_distribution == 'Fedora'
|
||
|
||
# Make sure we start fresh
|
||
- name: stop postgresql service
|
||
service: name={{ postgresql_service }} state=stopped
|
||
ignore_errors: True
|
||
|
||
- name: remove old db (RedHat or Suse)
|
||
file:
|
||
path: "{{ pg_dir }}"
|
||
state: absent
|
||
ignore_errors: True
|
||
when: ansible_os_family == "RedHat" or ansible_os_family == "Suse"
|
||
|
||
- name: remove old db (FreeBSD)
|
||
file:
|
||
path: "{{ pg_dir }}"
|
||
state: absent
|
||
ignore_errors: True
|
||
when: ansible_os_family == "FreeBSD"
|
||
|
||
# Theoretically, pg_dropcluster should work but it doesn't so remove files
|
||
- name: remove old db config and files (debian)
|
||
file:
|
||
path: '{{ loop_item }}'
|
||
state: absent
|
||
ignore_errors: True
|
||
when: ansible_os_family == "Debian"
|
||
loop:
|
||
- /etc/postgresql
|
||
- /var/lib/postgresql
|
||
loop_control:
|
||
loop_var: loop_item
|
||
|
||
- name: install dependencies for postgresql test
|
||
package: name={{ postgresql_package_item }} state=present
|
||
with_items: "{{ postgresql_packages }}"
|
||
loop_control:
|
||
loop_var: postgresql_package_item
|
||
|
||
- name: initialize postgres (FreeBSD)
|
||
command: /usr/local/etc/rc.d/postgresql oneinitdb
|
||
when: ansible_os_family == "FreeBSD"
|
||
|
||
- name: Initialize postgres (RedHat systemd)
|
||
command: postgresql-setup initdb
|
||
when: ansible_os_family == "RedHat" and ansible_service_mgr == "systemd"
|
||
|
||
- name: Initialize postgres (RedHat sysv)
|
||
command: /sbin/service postgresql initdb
|
||
when: ansible_os_family == "RedHat" and ansible_service_mgr != "systemd"
|
||
|
||
- name: Initialize postgres (Debian)
|
||
shell: '. /usr/share/postgresql-common/maintscripts-functions && set_system_locale && /usr/bin/pg_createcluster -u postgres {{ pg_ver }} main'
|
||
args:
|
||
creates: "/etc/postgresql/{{ pg_ver }}/"
|
||
when: ansible_os_family == 'Debian'
|
||
|
||
- name: Initialize postgres (Suse)
|
||
service: name=postgresql state=restarted
|
||
when: ansible_os_family == 'Suse'
|
||
|
||
- name: Copy pg_hba into place
|
||
template:
|
||
src: files/pg_hba.conf
|
||
dest: "{{ pg_hba_location }}"
|
||
owner: "{{ pg_user }}"
|
||
group: "{{ pg_group }}"
|
||
mode: "0644"
|
||
|
||
- name: Generate locales (Debian)
|
||
locale_gen:
|
||
name: '{{ item }}'
|
||
state: present
|
||
with_items:
|
||
- pt_BR
|
||
- es_ES
|
||
when: ansible_os_family == 'Debian'
|
||
|
||
# Suse: locales are installed by default (glibc-locale package).
|
||
# Fedora 23: locales are installed by default (glibc-common package)
|
||
# CentOS: all locales are installed by default (glibc-common package) but some
|
||
# RPM macros could prevent their installation (for example when using anaconda
|
||
# instLangs parameter).
|
||
|
||
- block:
|
||
- name: Install langpacks (RHEL8)
|
||
yum:
|
||
name:
|
||
- glibc-langpack-es
|
||
- glibc-langpack-pt
|
||
- glibc-all-langpacks
|
||
state: present
|
||
when: ansible_distribution_major_version is version('8', '>=')
|
||
|
||
- name: Check if locales need to be generated (RedHat)
|
||
shell: "localedef --list-archive | grep -a -q '^{{ locale }}$'"
|
||
register: locale_present
|
||
ignore_errors: True
|
||
with_items:
|
||
- es_ES
|
||
- pt_BR
|
||
loop_control:
|
||
loop_var: locale
|
||
|
||
- name: Generate locale (RedHat)
|
||
command: 'localedef -f ISO-8859-1 -i {{ item.locale }} {{ item.locale }}'
|
||
when: item is failed
|
||
with_items: '{{ locale_present.results }}'
|
||
when: ansible_os_family == 'RedHat' and ansible_distribution != 'Fedora'
|
||
|
||
- name: Install glibc langpacks (Fedora >= 24)
|
||
package:
|
||
name: '{{ item }}'
|
||
state: 'latest'
|
||
with_items:
|
||
- glibc-langpack-es
|
||
- glibc-langpack-pt
|
||
when: ansible_distribution == 'Fedora' and ansible_distribution_major_version is version('24', '>=')
|
||
|
||
- name: enable postgresql service (FreeBSD)
|
||
lineinfile:
|
||
path: /etc/rc.conf
|
||
line: 'postgresql_enable="YES"'
|
||
when: ansible_os_family == "FreeBSD"
|
||
|
||
- name: start postgresql service
|
||
# work-around for issue on FreeBSD where service won't restart if currently stopped
|
||
service: name={{ postgresql_service }} state=started
|
||
|
||
- name: restart postgresql service
|
||
service: name={{ postgresql_service }} state=restarted
|
||
|
||
########################
|
||
# Setup dummy extension:
|
||
- name: copy control file for dummy ext
|
||
copy:
|
||
src: dummy.control
|
||
dest: "/usr/share/postgresql/{{ pg_ver }}/extension/dummy.control"
|
||
mode: 0444
|
||
when: ansible_os_family == 'Debian'
|
||
|
||
- name: copy version files for dummy ext
|
||
copy:
|
||
src: "{{ item }}"
|
||
dest: "/usr/share/postgresql/{{ pg_ver }}/extension/{{ item }}"
|
||
mode: 0444
|
||
with_items:
|
||
- dummy--1.0.sql
|
||
- dummy--2.0.sql
|
||
- dummy--3.0.sql
|
||
when: ansible_os_family == 'Debian'
|
||
|
||
- name: add update paths
|
||
file:
|
||
path: "/usr/share/postgresql/{{ pg_ver }}/extension/{{ item }}"
|
||
mode: 0444
|
||
state: touch
|
||
with_items:
|
||
- dummy--1.0--2.0.sql
|
||
- dummy--2.0--3.0.sql
|
||
when: ansible_os_family == 'Debian'
|
||
|
||
- name: Get PostgreSQL version
|
||
become_user: "{{ pg_user }}"
|
||
become: yes
|
||
shell: "echo 'SHOW SERVER_VERSION' | psql --tuples-only --no-align --dbname postgres"
|
||
register: postgres_version_resp
|
||
|
||
- name: Print PostgreSQL server version
|
||
debug:
|
||
msg: "{{ postgres_version_resp.stdout }}"
|
||
|
||
# SSL configuration.
|
||
# Restricted using Debian family because of there are errors on other distributions
|
||
# that not related with PostgreSQL or psycopg2 SSL support.
|
||
# The tests key point is to be sure that ssl options work in general
|
||
- import_tasks: ssl.yml
|
||
when:
|
||
- ansible_os_family == 'Debian'
|
||
- postgres_version_resp.stdout is version('9.4', '>=')
|