| title | CR operations |
|---|---|
| weight | 30 |
| aliases | /trilio-cr/cr-operations/ |
# Hub — all phases
make dr-status
# Spoke — ConsistentSet and restore status (run on spoke context)
oc get configmap trilio-cr-status -n imperative -o yamlThe 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:
| Job | What it does | Skips when |
|---|---|---|
trilio-enable-cr |
Creates CR BackupPlan + ContinuousRestore Policy | CR BackupPlan already Available |
trilio-cr-backup |
Creates a backup against the CR BackupPlan | Available CR backup exists |
trilio-backup |
Creates a standard backup | Available backup exists |
trilio-restore-standard |
Restores to wordpress-restore on hub |
Completed restore exists |
trilio-e2e-status |
Writes status ConfigMap; fails until all phases pass | — (always runs) |
Spoke job sequence (per DR cluster):
| Job | What it does | Skips when |
|---|---|---|
trilio-cr-status |
Validates ConsistentSet available; writes status ConfigMap | — (always runs; fails until Available) |
trilio-cr-restore |
Restores from latest ConsistentSet to wordpress-restore |
Completed restore exists |
To trigger a backup outside the automated schedule:
ansible-navigator run ansible/playbooks/dr-backup.yamlStandard 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.
# 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># On the hub context
make offboard-hubSave your HashiCorp Vault root token and unseal keys before running
offboard-hub. They are stored in theimperativenamespace which is removed during offboard.
| Playbook | When to use | Key inputs |
|---|---|---|
dr-backup.yaml |
Trigger a manual backup on the hub | — |
dr-restore.yaml |
Manual restore (backup or ConsistentSet method) | restore_method, restore_namespace, source_backup (optional) |
validate-trilio.yaml |
Pre/post-change Trilio health validation | — |
offboard-spoke.yaml |
Remove spoke-side Trilio resources | cluster_name |
offboard-hub.yaml |
Full hub pattern teardown | — |
Playbooks are run by using ansible-navigator:
ansible-navigator run ansible/playbooks/<playbook>.yaml [-e key=value ...]