From 15335984a3091c5e2f98eacdc135af8aa9a884a1 Mon Sep 17 00:00:00 2001 From: marito Date: Mon, 16 Jun 2025 17:58:48 +0800 Subject: [PATCH] postgresql support --- roles/database/tasks/main.yml | 24 +++++++++++++++++++++--- roles/projects/tasks/configure_site.yml | 11 ++++++++++- 2 files changed, 31 insertions(+), 4 deletions(-) diff --git a/roles/database/tasks/main.yml b/roles/database/tasks/main.yml index 4eda25a..978ffb7 100644 --- a/roles/database/tasks/main.yml +++ b/roles/database/tasks/main.yml @@ -45,24 +45,42 @@ enabled: no when: db_engine != 'mysql' -# ------------------ PostgreSQL Specific Tasks (Placeholder) ------------------ +# ------------------ PostgreSQL Specific Tasks ------------------ -- name: "Install PostgreSQL server" +- name: "Install PostgreSQL server and dependencies" ansible.builtin.apt: name: - postgresql - postgresql-contrib + - python3-psycopg2 state: present update_cache: yes when: db_engine == 'postgres' -- name: "Ensure PostgreSQL service is running and enabled" +- name: "Ensure PostgreSQL service is running and enabled (when selected)" ansible.builtin.service: name: postgresql state: started enabled: yes when: db_engine == 'postgres' +- name: "Ensure PostgreSQL service is stopped and disabled (when NOT selected)" + ansible.builtin.service: + name: postgresql + state: stopped + enabled: no + when: db_engine != 'postgres' + +- name: "Create the global Lenvi PostgreSQL user" + community.postgresql.postgresql_user: + name: "{{ db_credentials.user }}" + password: "{{ db_credentials.password }}" + priv: "ALL" + state: present + become: yes + become_user: postgres + when: db_engine == 'postgres' and db_credentials is defined + # --- Common Tasks for MySQL/MariaDB --- - name: "Install Python dependencies for MySQL/MariaDB management" diff --git a/roles/projects/tasks/configure_site.yml b/roles/projects/tasks/configure_site.yml index e8d2e7e..08855c8 100644 --- a/roles/projects/tasks/configure_site.yml +++ b/roles/projects/tasks/configure_site.yml @@ -58,4 +58,13 @@ name: "{{ project.database }}" state: present login_unix_socket: /var/run/mysqld/mysqld.sock - when: project.database is defined and (db_engine == 'mariadb' or db_engine == 'mysql') \ No newline at end of file + when: project.database is defined and (db_engine == 'mariadb' or db_engine == 'mysql') + +- name: "Create project-specific PostgreSQL database '{{ project.database }}'" + community.postgresql.postgresql_db: + name: "{{ project.database }}" + owner: "{{ db_credentials.user }}" + state: present + become: yes + become_user: postgres + when: project.database is defined and db_engine == 'postgres' \ No newline at end of file