This commit is contained in:
2026-07-08 05:59:11 -05:00
parent f848420d8f
commit 589462e6d0
27 changed files with 771 additions and 102 deletions
+53 -6
View File
@@ -1,9 +1,56 @@
---
# Stub — implement after company_site is dockerized.
# Interim: can rsync/systemd like company_site/scripts/deploy.sh
# Generic app deployment.
#
# CI passes: app=<name> app_env=<beta|prod> app_ref=<git sha>
# Manual run with none of those redeploys every app in this host's host_apps
# at branch master.
#
# host_apps (host_vars) lists what runs on THIS host; app_catalog (group_vars)
# describes how each app is built.
- name: App deploy not yet implemented
- name: Classify catalog by type
ansible.builtin.set_fact:
django_names: "{{ app_catalog | dict2items | selectattr('value.type', 'equalto', 'django') | map(attribute='key') | list }}"
node_names: "{{ app_catalog | dict2items | selectattr('value.type', 'equalto', 'node-static') | map(attribute='key') | list }}"
- name: Resolve deploy targets for {{ inventory_hostname }}
ansible.builtin.set_fact:
deploy_targets: >-
{{ (host_apps | default([]) | selectattr('name', 'equalto', app | default('')) | selectattr('env', 'equalto', app_env | default('')) | list)
if (app is defined and app_env is defined)
else (host_apps | default([])) }}
- name: Show deploy targets
ansible.builtin.debug:
msg: >-
app-deploy role is a stub. Set app_ref={{ app_ref | default('unset') }}.
Implement git pull / docker compose after dockerize ticket.
msg: "ref={{ app_ref | default('(per-app default branch)') }} targets={{ deploy_targets | map(attribute='name') | zip(deploy_targets | map(attribute='env')) | list }}"
- name: Deploy Django (docker compose) apps
ansible.builtin.include_tasks: django.yml
loop: "{{ deploy_targets | selectattr('name', 'in', django_names) | list }}"
loop_control:
loop_var: app_item
label: "{{ app_item.name }}/{{ app_item.env }}"
- name: Run Django migrations once (shared external DB)
ansible.builtin.command:
cmd: >-
docker compose -f {{ app_catalog[item.name].compose_file }} --env-file .env
exec -T {{ app_catalog[item.name].web_service }}
{{ app_catalog[item.name].migrate_cmd }}
chdir: "{{ apps_src_dir }}/{{ item.name }}_{{ item.env }}"
environment:
COMPOSE_PROJECT_NAME: "{{ item.name }}_{{ item.env }}"
loop: "{{ deploy_targets | selectattr('name', 'in', django_names) | list }}"
loop_control:
label: "{{ item.name }}/{{ item.env }}"
become: true
become_user: "{{ admin_user }}"
run_once: true
changed_when: true
- name: Deploy node static apps
ansible.builtin.include_tasks: node_static.yml
loop: "{{ deploy_targets | selectattr('name', 'in', node_names) | list }}"
loop_control:
loop_var: app_item
label: "{{ app_item.name }}/{{ app_item.env }}"