Files
computer-playbook/roles/web-app-wordpress/tasks/plugins/wp-discourse.yml
T
kevinveenbirkenbach a55c99ef62 refactor(compose): replace docker lookup with container and unify compose paths
- Rename lookup plugin from `docker` to `container`
- Switch all lookups from `lookup('docker', ...)` to `lookup('container', ...)`
- Normalize compose file keys:
  - docker_compose → compose
  - docker_compose_override → compose_override
  - docker_compose_ca_override → compose_ca_override
- Centralize compose path resolution via docker_paths_utils
- Update compose_file_args to always derive paths from DIR_COMPOSITIONS
- Align all roles, templates, and vars with container/compose naming
- Update and rename unit tests accordingly

This prepares the codebase for engine-agnostic container backends
(e.g. Docker ↔ Podman) and removes legacy docker-specific assumptions.

https://chatgpt.com/share/6987a7cc-d374-800f-99ad-bb4c8f92c59e
2026-02-07 21:59:39 +01:00

96 lines
3.0 KiB
YAML

---
- name: "Include web-app-discourse"
include_tasks: "utils/load_app.yml"
vars:
load_app_id: web-app-discourse
- name: Wait for Discourse API
wait_for:
host: "{{ lookup('domain','web-app-discourse') }}"
port: 80
delay: 5
timeout: 600
- name: Add /var/www/discourse to Git safe.directory
command: >
container exec {{ applications['web-app-discourse'].compose.services.discourse.name }} \
git config --global --add safe.directory /var/www/discourse
args:
chdir: "{{ lookup('container', application_id, 'directories.instance') }}"
changed_when: false
- name: Revoke old WP Discourse API keys via Rails
command: >
container exec {{ applications['web-app-discourse'].compose.services.discourse.name }} bash -lc "\
cd /var/www/discourse && \
script/rails runner \"\
ApiKey.where(\
user_id: User.find_by_username('system').id,\
description: 'WP Discourse Integration',\
revoked_at: nil\
).update_all(revoked_at: Time.current)\
\""
args:
chdir: "{{ lookup('container', application_id, 'directories.instance') }}"
changed_when: false
failed_when: false
- name: Generate new WP Discourse API key via Rake task
command: >
container exec {{ applications['web-app-discourse'].compose.services.discourse.name }} bash -lc "\
cd /var/www/discourse && \
bin/rake api_key:create_master['WP Discourse Integration']\
"
args:
chdir: "{{ lookup('container', application_id, 'directories.instance') }}"
register: discourse_generated_api_key
- name: Store the new WP Discourse API key in a fact
set_fact:
vault_discourse_api_key: "{{ discourse_generated_api_key.stdout | trim }}"
- name: "Load WP Discourse settings"
include_vars:
file: "{{ role_path }}/vars/discourse.yml"
- name: "Install WP Discourse plugin"
command: >
{{ BIN_COMPOSE }} exec -u www-data -T application
wp plugin install wp-discourse --activate
--path={{ WORDPRESS_DOCKER_HTML_PATH }}
args:
chdir: "{{ lookup('container', application_id, 'directories.instance') }}"
- name: "Configure WP Discourse settings"
loop: "{{ discourse_settings | map(attribute='name') | unique | list }}"
loop_control:
label: "{{ item }}"
vars:
option_name: "{{ item }}"
option_items: >-
{{ discourse_settings
| selectattr('name', 'equalto', option_name)
| list
}}
option_kv: >-
{{ dict(
option_items | map(attribute='key')
| zip(option_items | map(attribute='value'))
) }}
option_json_b64: "{{ option_kv | to_json | b64encode }}"
command: >
{{ BIN_COMPOSE }} exec -u www-data -T application bash -lc
"wp eval \"update_option(
'{{ option_name }}',
json_decode(
base64_decode('{{ option_json_b64 }}'),
true
)
);\" --path={{ WORDPRESS_DOCKER_HTML_PATH }}"
args:
chdir: "{{ lookup('container', application_id, 'directories.instance') }}"