From 479efa19547bf710e0113b08bc6165b66d1b7980 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Romain=20Gon=C3=A7alves?= Date: Tue, 13 Feb 2024 23:09:02 +0100 Subject: feat(roles/postgresql): simplify postgresql init --- roles/postgres/defaults/main.yml | 7 ----- roles/postgres/tasks/create_db.yml | 6 ---- roles/postgres/tasks/create_user.yml | 6 ---- roles/postgres/tasks/main.yml | 53 ---------------------------------- roles/postgresql/defaults/main.yml | 8 +++++ roles/postgresql/tasks/create_db.yml | 6 ++++ roles/postgresql/tasks/create_user.yml | 6 ++++ roles/postgresql/tasks/main.yml | 39 +++++++++++++++++++++++++ site.services.yml | 1 + 9 files changed, 60 insertions(+), 72 deletions(-) delete mode 100644 roles/postgres/defaults/main.yml delete mode 100644 roles/postgres/tasks/create_db.yml delete mode 100644 roles/postgres/tasks/create_user.yml delete mode 100644 roles/postgres/tasks/main.yml create mode 100644 roles/postgresql/defaults/main.yml create mode 100644 roles/postgresql/tasks/create_db.yml create mode 100644 roles/postgresql/tasks/create_user.yml create mode 100644 roles/postgresql/tasks/main.yml diff --git a/roles/postgres/defaults/main.yml b/roles/postgres/defaults/main.yml deleted file mode 100644 index 856ac50..0000000 --- a/roles/postgres/defaults/main.yml +++ /dev/null @@ -1,7 +0,0 @@ ---- - -postgres_dir: /data/postgresql -postgres_default_dir: /var/postgresql -postgres_user: _postgresql -postgres_group: _postgresql -postgres_db_user: postgres diff --git a/roles/postgres/tasks/create_db.yml b/roles/postgres/tasks/create_db.yml deleted file mode 100644 index d2f3676..0000000 --- a/roles/postgres/tasks/create_db.yml +++ /dev/null @@ -1,6 +0,0 @@ ---- - -- name: create database # noqa: no-changed-when - ansible.builtin.command: createdb -U postgres -O "{{ postgres_db_user }}" "{{ postgres_db_name }}" - register: result - failed_when: result.rc != 0 and "already exists" not in result.stderr diff --git a/roles/postgres/tasks/create_user.yml b/roles/postgres/tasks/create_user.yml deleted file mode 100644 index 793676e..0000000 --- a/roles/postgres/tasks/create_user.yml +++ /dev/null @@ -1,6 +0,0 @@ ---- - -- name: create database user # noqa: no-changed-when - ansible.builtin.command: createuser -U postgres "{{ postgres_db_user }}" - register: result - failed_when: result.rc != 0 and "already exists" not in result.stderr diff --git a/roles/postgres/tasks/main.yml b/roles/postgres/tasks/main.yml deleted file mode 100644 index f3d24da..0000000 --- a/roles/postgres/tasks/main.yml +++ /dev/null @@ -1,53 +0,0 @@ ---- - -- name: install postgres - ansible.builtin.package: - name: - - postgresql-server - - postgresql-contrib - state: present - -- name: create postgres directories - ansible.builtin.file: - path: "{{ postgres_dir }}/{{ item }}" - owner: "{{ postgres_user }}" - group: "{{ postgres_group }}" - mode: "0750" - state: directory - loop: - - "" - - "data" - -- name: delete default data dir if exists - ansible.builtin.file: - path: "{{ postgres_default_dir }}" - state: absent - when: postgres_dir != "/var/postgresql" - -- name: link postgres directory to default one - ansible.builtin.file: - src: "{{ postgres_dir }}" - dest: "{{ postgres_default_dir }}" - owner: "{{ postgres_user }}" - group: "{{ postgres_group }}" - state: link - mode: "0750" - follow: false - when: postgres_dir != "/var/postgresql" - -- name: init postgres database # noqa: no-changed-when - ansible.builtin.shell: - cmd: | - su "{{ postgres_user }}" \ - -c 'initdb -D "{{ postgres_dir }}/data/" -U "{{ postgres_db_user }}" --encoding=UTF-8 --locale=en_US.UTF-8' - chdir: "{{ postgres_dir }}" - register: result - failed_when: - - result.rc != 0 - - "'exists but is not empty' not in result.stderr" - -- name: enable and restart postgres service - ansible.builtin.service: - name: postgresql - state: restarted - enabled: true diff --git a/roles/postgresql/defaults/main.yml b/roles/postgresql/defaults/main.yml new file mode 100644 index 0000000..65f47df --- /dev/null +++ b/roles/postgresql/defaults/main.yml @@ -0,0 +1,8 @@ +--- + +postgresql__dir: /var/postgresql +postgresql__data_dir: "{{ postgresql__dir }}/data" +postgresql__user: _postgresql +postgresql__group: _postgresql +postgresql__db_user: postgres +postgresql__port: 5432 diff --git a/roles/postgresql/tasks/create_db.yml b/roles/postgresql/tasks/create_db.yml new file mode 100644 index 0000000..d2f3676 --- /dev/null +++ b/roles/postgresql/tasks/create_db.yml @@ -0,0 +1,6 @@ +--- + +- name: create database # noqa: no-changed-when + ansible.builtin.command: createdb -U postgres -O "{{ postgres_db_user }}" "{{ postgres_db_name }}" + register: result + failed_when: result.rc != 0 and "already exists" not in result.stderr diff --git a/roles/postgresql/tasks/create_user.yml b/roles/postgresql/tasks/create_user.yml new file mode 100644 index 0000000..793676e --- /dev/null +++ b/roles/postgresql/tasks/create_user.yml @@ -0,0 +1,6 @@ +--- + +- name: create database user # noqa: no-changed-when + ansible.builtin.command: createuser -U postgres "{{ postgres_db_user }}" + register: result + failed_when: result.rc != 0 and "already exists" not in result.stderr diff --git a/roles/postgresql/tasks/main.yml b/roles/postgresql/tasks/main.yml new file mode 100644 index 0000000..a59faa2 --- /dev/null +++ b/roles/postgresql/tasks/main.yml @@ -0,0 +1,39 @@ +--- + +- name: install postgresql + ansible.builtin.package: + name: + - postgresql-server + - postgresql-contrib + state: present + +- name: install python libraries for ansible + ansible.builtin.package: + name: py3-psycopg2 + state: present + +- name: create postgresql data directory + ansible.builtin.file: + path: "{{ postgresql__data_dir }}" + owner: "{{ postgresql__user }}" + group: "{{ postgresql__group }}" + mode: "0700" + state: directory + +- name: init postgresql database # noqa: no-changed-when + ansible.builtin.command: + argv: + - initdb + - "--pgdata={{ postgresql__data_dir }}" + - "--username={{ postgresql__db_user }}" + - --encoding=UTF-8 + - --locale=en_US.UTF-8 + creates: "{{ postgresql__data_dir }}/PG_VERSION" + become: true + become_user: "{{ postgresql__user }}" + +- name: enable and restart postgresql service + ansible.builtin.service: + name: postgresql + state: restarted + enabled: true diff --git a/site.services.yml b/site.services.yml index c32a202..fbdc31f 100644 --- a/site.services.yml +++ b/site.services.yml @@ -2,6 +2,7 @@ - hosts: ams-dcontroller-01 roles: + - role: postgresql - role: nextcloud - role: httpd - role: relayd -- cgit v1.2.3