From 3cb4aaaa53b32a0a0df113db19777d4a72afcd83 Mon Sep 17 00:00:00 2001 From: Jeff Geerling Date: Thu, 29 Sep 2016 22:58:27 -0500 Subject: [PATCH] Issue #2: More large fixes for later PostgreSQL versions. --- defaults/main.yml | 8 +++++--- tasks/configure.yml | 15 +++++++++++++++ tasks/databases.yml | 2 +- tasks/initialize.yml | 15 --------------- tasks/main.yml | 1 + tasks/users.yml | 4 ++-- tasks/variables.yml | 2 +- vars/RedHat-6.yml | 11 +++++++++++ vars/{RedHat.yml => RedHat-7.yml} | 0 9 files changed, 36 insertions(+), 22 deletions(-) create mode 100644 tasks/configure.yml create mode 100644 vars/RedHat-6.yml rename vars/{RedHat.yml => RedHat-7.yml} (100%) diff --git a/defaults/main.yml b/defaults/main.yml index 020cc50..8ad5c52 100644 --- a/defaults/main.yml +++ b/defaults/main.yml @@ -5,11 +5,13 @@ postgresql_enablerepo: "" postgresql_user: postgres postgresql_group: postgres -postgresql_unix_socket_dir: /var/run/postgresql +postgresql_unix_socket_directories: + - /var/run/postgresql +# Global configuration options that will be set in postgresql.conf. postgresql_global_config_options: - - option: unix_socket_directory - value: '{{ postgresql_unix_socket_dir }}' + - option: unix_socket_directories + value: '{{ postgresql_unix_socket_directories | join(",") }}' # Debian only. Used to generate the locales used by PostgreSQL databases. postgresql_locales: diff --git a/tasks/configure.yml b/tasks/configure.yml new file mode 100644 index 0000000..46d0821 --- /dev/null +++ b/tasks/configure.yml @@ -0,0 +1,15 @@ +--- +- name: Configure global settings. + lineinfile: + dest: "{{ postgresql_config_path }}/postgresql.conf" + regexp: "^#?{{ item.option }}.+$" + line: "{{ item.option }} = '{{ item.value }}'" + state: "{{ item.state | default('present') }}" + with_items: "{{ postgresql_global_config_options }}" + notify: restart postgresql + +- name: Ensure PostgreSQL unix socket dirs exist. + file: + path: "{{ postgresql_unix_socket_directories }}" + state: directory + mode: 0777 diff --git a/tasks/databases.yml b/tasks/databases.yml index fcde4e7..772ee1b 100644 --- a/tasks/databases.yml +++ b/tasks/databases.yml @@ -9,7 +9,7 @@ login_host: "{{ item.login_host | default('localhost') }}" login_password: "{{ item.login_password | default(omit) }}" login_user: "{{ item.login_user | default(postgresql_user) }}" - login_unix_socket: "{{ item.login_unix_socket | default(postgresql_unix_socket_dir) }}" + login_unix_socket: "{{ item.login_unix_socket | default(postgresql_unix_socket_directories[0]) }}" port: "{{ item.port | default(omit) }}" state: "{{ item.state | default('present') }}" with_items: "{{ postgresql_databases }}" diff --git a/tasks/initialize.yml b/tasks/initialize.yml index 3196ba6..44ffd9b 100644 --- a/tasks/initialize.yml +++ b/tasks/initialize.yml @@ -6,21 +6,6 @@ mode: 0644 notify: restart postgresql -- name: Configure global settings. - lineinfile: - dest: "{{ postgresql_config_path }}/postgresql.conf" - regexp: "^#?{{ item.option }}.+$" - line: "{{ item.option }} = '{{ item.value }}'" - state: "{{ item.state | default('present') }}" - with_items: "{{ postgresql_global_config_options }}" - notify: restart postgresql - -- name: Ensure PostgreSQL unix socket dir exists. - file: - path: "{{ postgresql_unix_socket_dir }}" - state: directory - mode: 0777 - - name: Ensure PostgreSQL data directory exists. file: path: "{{ postgresql_data_dir }}" diff --git a/tasks/main.yml b/tasks/main.yml index a7ed83a..0a7bef1 100644 --- a/tasks/main.yml +++ b/tasks/main.yml @@ -10,6 +10,7 @@ when: ansible_os_family == 'Debian' - include: initialize.yml +- include: configure.yml - name: Ensure PostgreSQL is started and enabled on boot. service: diff --git a/tasks/users.yml b/tasks/users.yml index fb0d3a8..941c3c7 100644 --- a/tasks/users.yml +++ b/tasks/users.yml @@ -8,11 +8,11 @@ login_host: "{{ item.login_host | default('localhost') }}" login_password: "{{ item.login_password | default(omit) }}" login_user: "{{ item.login_user | default(postgresql_user) }}" - login_unix_socket: "{{ item.login_unix_socket | default(postgresql_unix_socket_dir) }}" + login_unix_socket: "{{ item.login_unix_socket | default(postgresql_unix_socket_directories[0]) }}" port: "{{ item.port | default(omit) }}" state: "{{ item.state | default('present') }}" with_items: "{{ postgresql_users }}" - # no_log: true + no_log: true become: yes become_user: "{{ postgresql_user }}" # See: https://github.com/ansible/ansible/issues/16048#issuecomment-229012509 diff --git a/tasks/variables.yml b/tasks/variables.yml index a0b622d..530990d 100644 --- a/tasks/variables.yml +++ b/tasks/variables.yml @@ -5,7 +5,7 @@ when: ansible_os_family == 'Debian' - name: Include OS-specific variables (RedHat). - include_vars: "{{ ansible_os_family }}.yml" + include_vars: "{{ ansible_os_family }}-{{ ansible_distribution_version.split('.')[0] }}.yml" when: ansible_os_family == 'RedHat' - name: Define postgresql_packages. diff --git a/vars/RedHat-6.yml b/vars/RedHat-6.yml new file mode 100644 index 0000000..8923c50 --- /dev/null +++ b/vars/RedHat-6.yml @@ -0,0 +1,11 @@ +--- +__postgresql_version: "8.4" +__postgresql_data_dir: "/var/lib/pgsql/data" +__postgresql_bin_path: "/usr/bin" +__postgresql_config_path: "/var/lib/pgsql/data" +__postgresql_daemon: postgresql +__postgresql_packages: + - postgresql + - postgresql-server + - postgresql-contrib + - postgresql-libs diff --git a/vars/RedHat.yml b/vars/RedHat-7.yml similarity index 100% rename from vars/RedHat.yml rename to vars/RedHat-7.yml