Validated Patterns

Operations

Monitoring DR status

# Hub — all phases
make dr-status

# Spoke — ConsistentSet and restore status (run on spoke context)
oc get configmap trilio-cr-status -n imperative -o yaml

Automated DR lifecycle

The imperative framework runs continuously on a 10-minute schedule with no manual intervention required. The full lifecycle from a standing start (hub up, spoke just joined) to a completed Continuous Restore typically completes within 30–45 minutes.

Hub job sequence:

JobWhat it doesSkips when
trilio-enable-crCreates CR BackupPlan + ContinuousRestore PolicyCR BackupPlan already Available
trilio-cr-backupCreates a backup against the CR BackupPlanAvailable CR backup exists
trilio-backupCreates a standard backupAvailable backup exists
trilio-restore-standardRestores to wordpress-restore on hubCompleted restore exists
trilio-e2e-statusWrites status ConfigMap; fails until all phases pass— (always runs)

Spoke job sequence (per DR cluster):

JobWhat it doesSkips when
trilio-cr-statusValidates ConsistentSet available; writes status ConfigMap— (always runs; fails until Available)
trilio-cr-restoreRestores from latest ConsistentSet to wordpress-restoreCompleted restore exists

Manual backup

To trigger a backup outside the automated schedule:

ansible-navigator run ansible/playbooks/dr-backup.yaml

Manual DR restore

Standard restore (from a named backup):

ansible-navigator run ansible/playbooks/dr-restore.yaml \
  -e restore_method=backup \
  -e restore_namespace=<target-namespace>

Continuous Restore (from a pre-staged ConsistentSet on the DR cluster — accelerated RTO):

ansible-navigator run ansible/playbooks/dr-restore.yaml \
  -e restore_method=consistentset \
  -e restore_namespace=<target-namespace>

Both commands discover the cluster ingress domain automatically and apply the Route hostname transform.

Offboarding a spoke

# Step 1 — on the hub context
make unlabel-spoke CLUSTER=<acm-cluster-name>

# Step 2 — on the spoke context
make offboard-spoke CLUSTER=<acm-cluster-name>

Uninstalling the pattern

# On the hub context
make offboard-hub

Save your HashiCorp Vault root token and unseal keys before running offboard-hub. They are stored in the imperative namespace which is removed during offboard.


Ansible playbook reference

PlaybookWhen to useKey inputs
dr-backup.yamlTrigger a manual backup on the hub
dr-restore.yamlManual restore (backup or ConsistentSet method)restore_method, restore_namespace, source_backup (optional)
validate-trilio.yamlPre/post-change Trilio health validation
offboard-spoke.yamlRemove spoke-side Trilio resourcescluster_name
offboard-hub.yamlFull hub pattern teardown

Playbooks are run by using ansible-navigator:

ansible-navigator run ansible/playbooks/<playbook>.yaml [-e key=value ...]