common/firewall/docker-tls/platform/lab-host/monitoring-agent/backup roles, orchestrated by site.yml with the ordering that matters (firewall/TLS land before the services that depend on them). Ansible Vault for secrets, no new tool introduced for this project's modest secret surface. Explicit dev/staging/production environment separation, no secrets committed (.gitignore covers vault plaintext, TLS keys, Terraform state, *.env). Validated: ansible-playbook --syntax-check clean.
18 lines
518 B
Django/Jinja
18 lines
518 B
Django/Jinja
[Unit]
|
|
Description=RootNode Academy Platform (docker compose)
|
|
Requires=docker.service
|
|
After=docker.service network-online.target
|
|
Wants=network-online.target
|
|
|
|
[Service]
|
|
Type=oneshot
|
|
RemainAfterExit=yes
|
|
WorkingDirectory=/opt/rootnode/platform
|
|
ExecStart=/usr/bin/docker compose -f docker-compose.yml up -d --remove-orphans
|
|
ExecStop=/usr/bin/docker compose -f docker-compose.yml down
|
|
ExecReload=/usr/bin/docker compose -f docker-compose.yml up -d --remove-orphans
|
|
TimeoutStartSec=300
|
|
|
|
[Install]
|
|
WantedBy=multi-user.target
|