diff --git a/IMPLEMENTATION.md b/IMPLEMENTATION.md index 0f8b571..c071e93 100644 --- a/IMPLEMENTATION.md +++ b/IMPLEMENTATION.md @@ -190,7 +190,7 @@ After Docker install, re-SSH so the `docker` group membership takes effect. | App | Type | Hosts | Notes | |-----|------|-------|-------| | `company_site` | django (docker) | adama + roslin | active/active behind NPM | -| `dta_service` | django (docker) | adama + roslin | active/active behind NPM | +| `dta_service` | django (docker) | adama + roslin + ai-server-4080 | active/active behind NPM | | `dta_webapp` | node/vite static | adama + roslin | active/active; built to `/var/www/_dta_webapp`, served by web-static nginx | Both environments (`beta`, `prod`) are deployed. Django apps use a **shared external diff --git a/inventory/group_vars/all.yml b/inventory/group_vars/all.yml index e5a697b..193b5e8 100644 --- a/inventory/group_vars/all.yml +++ b/inventory/group_vars/all.yml @@ -54,6 +54,10 @@ app_catalog: compose_file: docker-compose.prod.yml web_service: web migrate_cmd: "uv run python manage.py migrate --noinput" + # Pre-docker deploy used venv + systemd on each host; stop before compose up. + legacy_systemd_units: + beta: beta_dta_wsgi + prod: prod_dta_wsgi dta_webapp: type: node-static repo: "{{ git_base_url }}/Ditch_The_Agent/dta_webapp.git" diff --git a/inventory/host_vars/ai-server-4080.yml b/inventory/host_vars/ai-server-4080.yml index a708be9..4c440f1 100644 --- a/inventory/host_vars/ai-server-4080.yml +++ b/inventory/host_vars/ai-server-4080.yml @@ -13,7 +13,8 @@ act_runner_enabled: true # passphrase-less deploy key here instead. gitea_key_path: "/home/{{ admin_user }}/.ssh/gitea_deploy" -# company_site prod runs here for side testing. +# company_site + dta_webapp + dta_service for side testing and active/active. +# Ports MUST match adama/roslin so NPM can balance all three upstreams. host_apps: - { name: company_site, env: prod, port: 8000 } - { name: dta_webapp, env: prod, port: 8080 } diff --git a/roles/app-deploy/tasks/django.yml b/roles/app-deploy/tasks/django.yml index a14dc53..91d3a84 100644 --- a/roles/app-deploy/tasks/django.yml +++ b/roles/app-deploy/tasks/django.yml @@ -76,6 +76,30 @@ become_user: "{{ admin_user }}" changed_when: true +- name: "django[{{ _project }}] legacy systemd unit" + ansible.builtin.set_fact: + _legacy_systemd: "{{ _spec.legacy_systemd_units[app_item.env] | default('') }}" + when: _spec.legacy_systemd_units is defined + +- name: "django[{{ _project }}] probe legacy systemd unit" + ansible.builtin.command: + cmd: systemctl list-unit-files {{ _legacy_systemd }}.service --no-legend + register: _legacy_systemd_probe + changed_when: false + failed_when: false + become: true + when: _legacy_systemd | default('') | length > 0 + +- name: "django[{{ _project }}] stop legacy systemd unit" + ansible.builtin.systemd: + name: "{{ _legacy_systemd }}" + state: stopped + enabled: false + become: true + when: + - _legacy_systemd | default('') | length > 0 + - _legacy_systemd_probe.stdout | default('') | length > 0 + - name: "django[{{ _project }}] start containers" ansible.builtin.command: cmd: "docker compose -f {{ _spec.compose_file }} --env-file .env up -d --remove-orphans"