From 86aef332ca95ccf2c84cad9c6832875b04dc0c28 Mon Sep 17 00:00:00 2001 From: phil Date: Wed, 25 Oct 2023 17:44:18 +0200 Subject: [PATCH] Enable PostgreSQL database support --- README.md | 4 +++- defaults/main.yml | 1 + tasks/database.yml | 54 +++++++++++++++++++++++++++++++-------------- tasks/nextcloud.yml | 14 +++++++++++- 4 files changed, 55 insertions(+), 18 deletions(-) diff --git a/README.md b/README.md index 7f45ac2..e193e92 100644 --- a/README.md +++ b/README.md @@ -34,6 +34,7 @@ nextcloud_instances: - name: coop.systemausfall.org user: nextcloud database: nextcloud + database_type: PostgreSQL hiddenservice: true occ_config: apps: @@ -65,7 +66,8 @@ php_cli_config: | `name` | string | Domain-Name der Instanz | | `alias`| string | Array mit weiteren Domain-Alias-Namen für diese Instanz | | `user` | string | Name eines anzulegenden Systemnutzers, der den PHP-FPM-Prozess ausführt | - | `database` | string | Name der anzulegenden MariaDB-Datenbank | + | `database` | string | Name der anzulegenden Datenbank | + | `database_type` | string | `MariaDB` oder `PostgreSQL` | | `hiddenservice` | bol | Richtet für die Instanz einen Onion Service ein | - Starte anschließend das Playbook: ```Shell diff --git a/defaults/main.yml b/defaults/main.yml index b40045e..84bbb30 100644 --- a/defaults/main.yml +++ b/defaults/main.yml @@ -4,6 +4,7 @@ apache_custom_conf_path: /etc/apache2/conf-available nextcloud_admin_user: systemausfall.org nextcloud_admin_pw: "{{ lookup('password', '/tmp/{{ item.name }}_admin_pwd length=42 chars=ascii_letters,digits') }}" nextcloud_db_password: "{{ lookup('password', '/tmp/{{ item.name }}_db_pwd length=42 chars=ascii_letters,digits') }}" +nextcloud_db_type: MariaDB nextcloud_github_api_url: https://api.github.com/repos/nextcloud/server/releases/latest nextcloud_dl_url: "https://download.nextcloud.com/server/releases/nextcloud-{{ latest_version.stdout }}.tar.bz2" nextcloud_root: /data/nextcloud diff --git a/tasks/database.yml b/tasks/database.yml index eac0aeb..4b9b727 100644 --- a/tasks/database.yml +++ b/tasks/database.yml @@ -1,18 +1,40 @@ --- -- name: "Database | Erstelle Datenbank | {{ item.name }}" - community.mysql.mysql_db: - name: "{{ item.database }}" - state: present - login_unix_socket: "{{ mysql_socket }}" - login_user: root +- name: "Richte MariaDB-Datenbank ein" + when: item.database_type == "MariaDB" + block: + - name: "Database | Erstelle Datenbank | {{ item.name }}" + community.mysql.mysql_db: + name: "{{ item.database }}" + state: present + login_unix_socket: "{{ mysql_socket }}" + login_user: root -- name: "Database | Richte Datenbank-Benutzer ein | {{ item.name }}" - community.mysql.mysql_user: - name: "{{ item.database }}" - host: "{{ inventory_hostname }}" - password: "{{ nextcloud_db_password }}" - priv: "{{ item.database }}.*:ALL" - state: present - login_unix_socket: "{{ mysql_socket }}" - login_user: root - update_password: on_create + - name: "Database | Richte Datenbank-Benutzer ein | {{ item.name }}" + community.mysql.mysql_user: + name: "{{ item.database }}" + host: "{{ inventory_hostname }}" + password: "{{ nextcloud_db_password }}" + priv: "{{ item.database }}.*:ALL" + state: present + login_unix_socket: "{{ mysql_socket }}" + login_user: root + update_password: on_create + +- name: "Richte PostgreSQL-Datenbank ein" + when: item.database_type == "PostgreSQL" + block: + - name: "Database | Erstelle Datenbank | {{ item.name }}" + community.postgresql.postgresql_db: + name: "{{ item.database }}" + encoding: UTF8 + template: template0 + become: true + become_user: postgres + + - name: "Database | Richte Datenbank-Benutzer ein | {{ item.name }}" + community.postgresql.postgresql_user: + name: "{{ item.database }}" + password: "{{ nextcloud_db_password }}" + db: "{{ item.database }}" + become: true + become_user: postgres diff --git a/tasks/nextcloud.yml b/tasks/nextcloud.yml index 3cd15ea..a5de704 100644 --- a/tasks/nextcloud.yml +++ b/tasks/nextcloud.yml @@ -47,4 +47,16 @@ become: true become_user: "{{ item.user }}" changed_when: true - when: not nc_is_installed.stat.exists + when: not nc_is_installed.stat.exists and item.database_type == "MariaDB" + +- name: "Nextcloud | Führe Installation aus | {{ item.name }}" + ansible.builtin.command: + cmd: > + php occ maintenance:install --database "pgsql" + --database-name "{{ item.database }}" --database-user "{{ item.database }}" + --database-pass "{{ nextcloud_db_password }}" --database-host "{{ database_host }}" + --admin-user "{{ nextcloud_admin_user }}" --admin-pass "{{ nextcloud_admin_pw }}" + chdir: "{{ nextcloud_install_path }}" + become: true + become_user: "{{ item.user }}" + when: not nc_is_installed.stat.exists and item.database_type == "PostgreSQL"