feat(ansible): idempotent role-based host config for both production VMs
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.
This commit is contained in:
@@ -0,0 +1,6 @@
|
||||
PLATFORM_DB_URL=postgres://rootnode_platform:{{ vault_postgres_password }}@localhost:5432/rootnode_platform
|
||||
BACKUP_DIR={{ rootnode_data_root }}/backups
|
||||
BACKUP_ENCRYPTION_PASSPHRASE={{ vault_backup_encryption_passphrase }}
|
||||
BACKUP_RETENTION_DAYS={{ backup_retention_days }}
|
||||
BACKUP_OFFSITE_TARGET={{ backup_offsite_target }}
|
||||
METRICS_TEXTFILE_DIR=/var/lib/node-exporter/textfile
|
||||
@@ -0,0 +1,9 @@
|
||||
#!/usr/bin/env bash
|
||||
# Cron wrapper — sources the deployed env file and runs the real backup script, logging to
|
||||
# syslog (visible via journalctl and shipped to Loki by promtail like every other unit) in
|
||||
# addition to whatever cron itself captures.
|
||||
set -euo pipefail
|
||||
set -a
|
||||
source /etc/rootnode/backup.env
|
||||
set +a
|
||||
exec /opt/rootnode/backup/backup-postgres.sh 2>&1 | systemd-cat -t rootnode-backup
|
||||
Reference in New Issue
Block a user