From dabc0e536501f1e3022c7168c61502bc7b7ea9d8 Mon Sep 17 00:00:00 2001 From: Robert Kaussow Date: Tue, 16 Oct 2018 00:07:17 +0200 Subject: [PATCH] finish install process --- defaults/main.yml | 3 +- handlers/main.yml | 10 ++++++ tasks/install.yml | 19 +++++++++-- tasks/main.yml | 1 + tasks/post_tasks.yml | 19 +++++++++++ tasks/prepare.yml | 32 ++++++++----------- .../etc/systemd/system/postgresql.service.j2 | 4 +++ vars/main.yml | 10 ++++++ 8 files changed, 76 insertions(+), 22 deletions(-) create mode 100644 handlers/main.yml create mode 100644 tasks/post_tasks.yml create mode 100644 templates/etc/systemd/system/postgresql.service.j2 create mode 100644 vars/main.yml diff --git a/defaults/main.yml b/defaults/main.yml index 4ed1055..444acf3 100644 --- a/defaults/main.yml +++ b/defaults/main.yml @@ -2,4 +2,5 @@ postgres_repository_enabled: False postgres_version: 10 postgres_repository_filename: "Postgresql-{{ postgres_version | regex_replace('\\.') }}" -postgres_packagename: postgresql +postgres_user: postgres +postgres_group: postgres diff --git a/handlers/main.yml b/handlers/main.yml new file mode 100644 index 0000000..fea1aa3 --- /dev/null +++ b/handlers/main.yml @@ -0,0 +1,10 @@ +--- +- name: Restart service + service: + name: "{{ __postgres_daemon }}" + state: restarted + enabled: yes + daemon_reload: yes + listen: __postgres_restart + become: True + become_user: root diff --git a/tasks/install.yml b/tasks/install.yml index a0f8507..91e342d 100644 --- a/tasks/install.yml +++ b/tasks/install.yml @@ -4,8 +4,21 @@ package: name: "{{ item }}" state: present - with_items: - - "{{ postgres_packagename }}" - - "{{ postgres_packagename }}-server" + with_items: "{{ __postgres_packages }}" + + - name: Ensure data directory exists + file: + path: "{{ __postgres_data_dir }}" + owner: "{{ postgres_user }}" + group: "{{ postgres_group }}" + state: directory + mode: 0700 + + - name: Setup custom systemd unit + template: + src: etc/systemd/system/postgresql.service.j2 + dest: "etc/systemd/system/{{ __postgres_daemon }}.service" + mode: 0644 + notify: __postgres_restart become: True become_user: root diff --git a/tasks/main.yml b/tasks/main.yml index cae897f..f02fa9a 100644 --- a/tasks/main.yml +++ b/tasks/main.yml @@ -1,3 +1,4 @@ --- - import_tasks: prepare.yml - import_tasks: install.yml +- import_tasks: post_tasks.yml diff --git a/tasks/post_tasks.yml b/tasks/post_tasks.yml new file mode 100644 index 0000000..fa957fc --- /dev/null +++ b/tasks/post_tasks.yml @@ -0,0 +1,19 @@ +--- +- name: Ensure PostgreSQL is up and running + service: + name: "{{ postgresql-10 }}" + state: started + enabled: yes + become: True + become_user: root + +- name: Check if database is initialized + stat: + path: "{{ postgresql_data_dir }}/PG_VERSION" + register: pgdata_dir_version + +- name: Ensure database is initialized + command: "/usr/pgsql-{{ __postgres_version }}/bin/postgresql-{{ __postgres_version }}-setup initdb" + when: not pgdata_dir_version.stat.exists + become: true + become_user: "{{ postgres_user }}" diff --git a/tasks/prepare.yml b/tasks/prepare.yml index 0456318..29e50b4 100644 --- a/tasks/prepare.yml +++ b/tasks/prepare.yml @@ -1,20 +1,16 @@ --- -- block: - - name: Add PostgreSQL repository - yum_repository: - name: postgresql - file: "{{ postgres_repository_filename }}" - description: PostgreSQL yum repository - baseurl: "https://download.postgresql.org/pub/repos/yum/{{ postgres_version }}/redhat/rhel-{{ ansible_distribution_major_version }}-{{ ansible_architecture }}" - gpgcheck: yes - enabled: yes - gpgkey: "https://download.postgresql.org/pub/repos/yum/RPM-GPG-KEY-PGDG-{{ postgres_version }}" +- name: Load helper variables + include_vars: "main.yml" - - set_fact: - postgres_packagename: "postgresql{{ postgres_version | regex_replace('\\.') }}" - - - debug: - msg: "Set PostgreSQL package name to '{{ postgres_packagename }}'" - become: True - become_user: root - when: postgres_repository_enabled +- name: Add PostgreSQL repository + yum_repository: + name: postgresql + file: "{{ postgres_repository_filename }}" + description: PostgreSQL yum repository + baseurl: "https://download.postgresql.org/pub/repos/yum/{{ __postgres_version }}/redhat/rhel-{{ ansible_distribution_major_version }}-{{ ansible_architecture }}" + gpgcheck: yes + enabled: yes + gpgkey: "https://download.postgresql.org/pub/repos/yum/RPM-GPG-KEY-PGDG-{{ __postgres_version }}" +become: True +become_user: root +when: postgres_repository_enabled diff --git a/templates/etc/systemd/system/postgresql.service.j2 b/templates/etc/systemd/system/postgresql.service.j2 new file mode 100644 index 0000000..a2f9b94 --- /dev/null +++ b/templates/etc/systemd/system/postgresql.service.j2 @@ -0,0 +1,4 @@ +## {{ ansible_managed }} +.include {{ __postgres_service_file }} +[Service] +Environment=PGDATA={{ __postgres_data_dir }} diff --git a/vars/main.yml b/vars/main.yml new file mode 100644 index 0000000..19db9ee --- /dev/null +++ b/vars/main.yml @@ -0,0 +1,10 @@ +--- +__postgres_version: "{{ postgres_version | regex_replace('\\.') }}" +__postgres_packagename: "postgresql{{ __postgres_version }}" +__postgres_daemon: "postgresql-{{ __postgres_version }}" +__postgres_service_file: "/usr/lib/systemd/system/{{ __postgres_daemon }}.service" +__postgres_packages: + - "{{ __postgres_packagename }}" + - "{{ __postgres_packagename }}-server" +__postgres_data_dir: "/var/lib/pgsql/{{ __postgres_version }}/data" +__postgres_config_path: "/var/lib/pgsql/data"