From 58c17bf04388c2344285d8e03b93a6e8406685a9 Mon Sep 17 00:00:00 2001 From: Kevin Veen-Birkenbach Date: Thu, 28 Aug 2025 21:28:47 +0200 Subject: [PATCH] web-app-mediawiki: template-driven LocalSettings.php + admin automation; compose & config tweaks Config & features: - roles/web-app-mediawiki/config/main.yml: - Add sitename ('Wiki on {{ PRIMARY_DOMAIN | upper }}') and meta_namespace ('Meta') - Enable central_database feature and database service - Move volumes under docker.volumes (correct indentation) Tasks & automation: - roles/web-app-mediawiki/tasks/main.yml: - Avoid immediate compose handler flush (docker_compose_flush_handlers: false), then explicit meta: flush_handlers - Deploy templated LocalSettings.php to host path - Create admin via maintenance/createAndPromote.php (docker exec, idempotent changed_when/failed_when) Templates: - roles/web-app-mediawiki/templates/LocalSettings.php.j2: - Set $wgSitename, $wgMetaNamespace, $wgServer from MEDIAWIKI_* - DB settings (mysql, host:port, name, user, password) - Mail settings (EmergencyContact/PasswordSender) - Default skin: vector - Load basic extensions (ParserFunctions, Cite) - roles/web-app-mediawiki/templates/docker-compose.yml.j2: - Switch to MEDIAWIKI_* vars, mount LocalSettings.php (ro) - Use container_port, include curl healthcheck - Fix volumes name to MEDIAWIKI_VOLUME Vars: - roles/web-app-mediawiki/vars/main.yml: - Restructure with MEDIAWIKI_* (sitename, meta_namespace, URL, image/version/container/volume) - Define SETTINGS host/dock paths, container_port, default user (www-data) - Admin bootstrap vars (name/password/email) Misc: - Add empty schema/main.yml placeholder for future validation Refs: ChatGPT conversation (2025-08-28, Europe/Berlin). Link: https://chatgpt.com/share/68b0ace6-f8f4-800f-b7a7-a51a6c5260f1 --- roles/web-app-mediawiki/config/main.yml | 9 ++++-- roles/web-app-mediawiki/schema/main.yml | 0 roles/web-app-mediawiki/tasks/main.yml | 31 +++++++++++++++++-- .../templates/LocalSettings.php.j2 | 29 +++++++++++++++++ .../templates/docker-compose.yml.j2 | 19 +++++++----- roles/web-app-mediawiki/vars/main.yml | 29 +++++++++++++---- 6 files changed, 98 insertions(+), 19 deletions(-) create mode 100644 roles/web-app-mediawiki/schema/main.yml create mode 100644 roles/web-app-mediawiki/templates/LocalSettings.php.j2 diff --git a/roles/web-app-mediawiki/config/main.yml b/roles/web-app-mediawiki/config/main.yml index b92b1b38..fd640d16 100644 --- a/roles/web-app-mediawiki/config/main.yml +++ b/roles/web-app-mediawiki/config/main.yml @@ -1,16 +1,21 @@ +sitename: "Wiki on {{ PRIMARY_DOMAIN | upper }}" +meta_namespace: "Meta" server: domains: canonical: - "wiki.{{ PRIMARY_DOMAIN }}" docker: services: + database: + enabled: true mediawiki: image: mediawiki version: latest backup: no_stop_required: true name: mediawiki - volumes: - data: mediawiki_data + volumes: + data: mediawiki_data features: logout: true + central_database: true diff --git a/roles/web-app-mediawiki/schema/main.yml b/roles/web-app-mediawiki/schema/main.yml new file mode 100644 index 00000000..e69de29b diff --git a/roles/web-app-mediawiki/tasks/main.yml b/roles/web-app-mediawiki/tasks/main.yml index 672720cc..909beaf2 100644 --- a/roles/web-app-mediawiki/tasks/main.yml +++ b/roles/web-app-mediawiki/tasks/main.yml @@ -2,7 +2,32 @@ - name: "load docker, db and proxy for {{ application_id }}" include_role: name: cmp-db-docker-proxy + vars: + docker_compose_flush_handlers: false -- name: add docker-compose.yml - template: src=docker-compose.yml.j2 dest={{ docker_compose.directories.instance }}docker-compose.yml - notify: docker compose up +- name: "Deploy MediaWiki LocalSettings.php" + template: + src: "LocalSettings.php.j2" + dest: "{{ MEDIAWIKI_SETTINGS_HOST_PATH }}" + mode: '0644' + +- name: "Flush docker compose handlers" + meta: flush_handlers + +- name: "Create MediaWiki admin user" + command: > + docker exec + -u {{ MEDIAWIKI_USER }} + {{ MEDIAWIKI_CONTAINER }} + php /var/www/html/maintenance/createAndPromote.php + --bureaucrat --sysop + {{ MEDIAWIKI_ADMINISTRATOR_NAME }} + {{ MEDIAWIKI_ADMINISTRATOR_PASSWORD }} + {{ MEDIAWIKI_ADMINISTRATOR_EMAIL }} + register: create_admin + changed_when: > + 'created' in (create_admin.stdout | default('')) or + 'Created' in (create_admin.stdout | default('')) + failed_when: > + create_admin.rc != 0 and + ('already exists' not in (create_admin.stdout | default('') ~ create_admin.stderr | default(''))) diff --git a/roles/web-app-mediawiki/templates/LocalSettings.php.j2 b/roles/web-app-mediawiki/templates/LocalSettings.php.j2 new file mode 100644 index 00000000..8035aca0 --- /dev/null +++ b/roles/web-app-mediawiki/templates/LocalSettings.php.j2 @@ -0,0 +1,29 @@ +