diff --git a/IMPLEMENTATION.md b/IMPLEMENTATION.md index 59614f9..f8ff3a0 100644 --- a/IMPLEMENTATION.md +++ b/IMPLEMENTATION.md @@ -194,6 +194,7 @@ After Docker install, re-SSH so the `docker` group membership takes effect. | `dta_webapp` | node/vite static | adama + roslin (+ ai-server-4080) | beta + prod | active/active; built to `/var/www/.app.ditchtheagent/html`, served by web-static nginx | | `scha` | django (docker) | adama + roslin + ai-server-4080 | prod | active/active behind NPM; beta port reserved | | `chat_web_app` | node-static (CRA) | adama + roslin + ai-server-4080 | prod | active/active; built to `/var/www/.chat.aimloperations/html`, served by web-static nginx; beta port reserved | +| `chat_backend` | django (docker) | adama + roslin + ai-server-4080 | prod | active/active behind NPM; Ollama via `OLLAMA_BASE_URL=http://10.0.0.128:11434`; beta port reserved | Django apps use a **shared external Postgres** (via `DATABASE_URL` in each host's env file) so active/active replicas share one database. Beta and prod never share @@ -217,6 +218,7 @@ future beta replica. | company_site | 8010 (*not deployed*) | 8000 | adama, roslin, ai-server-4080 | | dta_service | 8011 | 8001 | adama, roslin, ai-server-4080 | | scha | 8012 (*not deployed*) | 8002 | adama, roslin, ai-server-4080 | +| chat_backend | 8013 (*not deployed*) | 8003 | adama, roslin, ai-server-4080 | | dta_webapp (nginx) | 8081 | 8080 | adama, roslin, ai-server-4080 | | chat_web_app (nginx) | 8083 (*not deployed*) | 8082 | adama, roslin, ai-server-4080 | @@ -259,6 +261,7 @@ point each domain at the backend(s): | dta_webapp | (see DTA NPM hosts) | `adama:8080` / `8081` + same on roslin | | scha | `schawheaton.aimloperations.com`, `schawheaton.com` (+ www) | `adama:8002` + `roslin:8002` (+ `ai-server-4080:8002`) | | chat_web_app | `chat.aimloperations.com` (+ www) | `adama:8082` + `roslin:8082` (+ `ai-server-4080:8082`) | +| chat_backend | `chatbackend.aimloperations.com` | `adama:8003` + `roslin:8003` + `ai-server-4080:8003` | ### Required changes IN each app repo (owned separately) @@ -273,6 +276,8 @@ point each domain at the backend(s): - [ ] `chat_web_app`: `npm run build:beta` / `build:prod` output to `/var/www/beta.chat.aimloperations/html` / `/var/www/prod.chat.aimloperations/html`. +Companion `chat_web_app` frontend is already registered in this infrastructure repo. + ### Shared Postgres (10.0.0.230, same box as NPM) One shared instance; each app+env gets its own database (beta and prod MUST NOT @@ -287,6 +292,8 @@ do not). | dta_service | beta | `dta_service_beta` | `postgres://westfarn:@10.0.0.230:5432/dta_service_beta` | | scha | prod | `scha` | `postgres://westfarn:@10.0.0.230:5432/scha` | | scha | beta | `scha_beta` | `postgres://westfarn:@10.0.0.230:5432/scha_beta` | +| chat_backend | prod | `chat_backend` | `postgres://westfarn:@10.0.0.230:5432/chat_backend` | +| chat_backend | beta | `chat_backend_beta` | `postgres://westfarn:@10.0.0.230:5432/chat_backend_beta` | Server prereqs on 10.0.0.230: create each DB + grant `westfarn`; `listen_addresses` covers LAN; `pg_hba.conf` allows `10.0.0.0/24`; firewall opens @@ -363,6 +370,7 @@ Store vault password for CI in a file readable only by the Act runner (e.g. `~/. | 10 | Dockerize `company_site` | Future (separate ticket) | | 10a | Register + deploy `scha` (all webservers, port 8002) | In progress ([scha#19](https://git.aimloperations.com/ai_ml_operations/scha/issues/19)) | | 10b | Register + deploy `chat_web_app` (node-static, port 8082) | In progress ([chat_web_app#13](https://git.aimloperations.com/ai_ml_operations/chat_web_app/issues/13)) | +| 10c | Register + deploy `chat_backend` (django, port 8003) | In progress ([chat_backend#6](https://git.aimloperations.com/ai_ml_operations/chat_backend/issues/6)) | | 11 | Gitea container registry (optional) | Future | ## Open Decisions diff --git a/inventory/group_vars/all.yml b/inventory/group_vars/all.yml index 027eda1..7a2ff04 100644 --- a/inventory/group_vars/all.yml +++ b/inventory/group_vars/all.yml @@ -96,6 +96,13 @@ app_catalog: # Document root served by nginx and written by `npm run build:`. # {env} is replaced with the entry's env (beta/prod). webroot_pattern: "/var/www/{env}.chat.aimloperations/html" + chat_backend: + type: django + repo: "{{ git_base_url }}/ai_ml_operations/chat_backend.git" + default_branch: master + compose_file: docker-compose.prod.yml + web_service: web + migrate_cmd: "uv run python manage.py migrate --noinput" # Deploy filter vars. CI passes these; manual runs may leave them undefined # to (re)deploy every app listed in the host's host_apps. diff --git a/inventory/host_vars/adama.yml b/inventory/host_vars/adama.yml index f3eb8ee..1a32184 100644 --- a/inventory/host_vars/adama.yml +++ b/inventory/host_vars/adama.yml @@ -14,3 +14,5 @@ host_apps: # optional: - { name: scha, env: beta, port: 8012 } - { name: chat_web_app, env: prod, port: 8082 } # optional: - { name: chat_web_app, env: beta, port: 8083 } + - { name: chat_backend, env: prod, port: 8003 } + # optional: - { name: chat_backend, env: beta, port: 8013 } diff --git a/inventory/host_vars/ai-server-4080.yml b/inventory/host_vars/ai-server-4080.yml index 22e649b..a6acfa4 100644 --- a/inventory/host_vars/ai-server-4080.yml +++ b/inventory/host_vars/ai-server-4080.yml @@ -26,4 +26,6 @@ host_apps: - { name: dta_service, env: beta, port: 8011 } - { name: scha, env: prod, port: 8002 } - { name: chat_web_app, env: prod, port: 8082 } - # optional: - { name: chat_web_app, env: beta, port: 8083 } \ No newline at end of file + # optional: - { name: chat_web_app, env: beta, port: 8083 } + - { name: chat_backend, env: prod, port: 8003 } + # optional: - { name: chat_backend, env: beta, port: 8013 } \ No newline at end of file diff --git a/inventory/host_vars/roslin.yml b/inventory/host_vars/roslin.yml index c7ecf2b..787438f 100644 --- a/inventory/host_vars/roslin.yml +++ b/inventory/host_vars/roslin.yml @@ -11,3 +11,5 @@ host_apps: # optional: - { name: scha, env: beta, port: 8012 } - { name: chat_web_app, env: prod, port: 8082 } # optional: - { name: chat_web_app, env: beta, port: 8083 } + - { name: chat_backend, env: prod, port: 8003 } + # optional: - { name: chat_backend, env: beta, port: 8013 } diff --git a/scripts/deploy.sh b/scripts/deploy.sh index 54e4420..b881ba1 100755 --- a/scripts/deploy.sh +++ b/scripts/deploy.sh @@ -17,7 +17,7 @@ Deploy applications with deploy-apps.yml. HOST Optional. Limit to one host: adama, roslin, or ai-server-4080. Options: - --app NAME App to deploy (company_site, dta_service, dta_webapp, scha, chat_web_app) + --app NAME App to deploy (company_site, dta_service, dta_webapp, scha, chat_web_app, chat_backend) --env ENV Environment: beta or prod --ref REF Git ref/sha to deploy (default: master) --check Dry run