aminet-browser
Aminet search and browse: full-text search, category tree navigation, architecture filtering, package detail, and curated collections. Use when searching,…
OpenStack backup operations skill for protecting cloud infrastructure through systematic backup strategies and disaster recovery procedures. Covers database backups (MariaDB full and incremental with mariabackup), configuration backups (globals.yml, inventory, Fernet keys),
$ npx -y skills add Tibsfox/gsd-skill-creator --skill backup --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/backupContext preview
The summary Claude sees to decide when to auto-load this skill.
OpenStack backup operations skill for protecting cloud infrastructure through systematic backup strategies and disaster recovery procedures. Covers database backups (MariaDB full and incremental with mariabackup), configuration backups (globals.yml, inventory, Fernet keys),
name: openstack-backup
description: "OpenStack backup operations skill for protecting cloud infrastructure through systematic backup strategies and disaster recovery procedures. Covers database backups (MariaDB full and incremental with mariabackup), configuration backups (globals.yml, inventory, Fernet keys), volume snapshots (Cinder LVM snapshots), image exports (Glance), instance snapshots (Nova), backup encryption (GPG/OpenSSL), retention policies (daily/weekly/monthly rotation), restore procedures (database point-in-time recovery, service rebuild), RPO/RTO planning, and disaster recovery drills. Use when planning backup strategy, scheduling automated backups, testing restore procedures, or executing disaster recovery."
user-invocable: true
allowed-tools: Read Grep Glob
metadata:
extensions:
gsd-skill-creator:
version: 1
createdAt: "2026-02-22"
triggers:
intents:
- "backup"
- "disaster recovery"
- "snapshot"
- "restore"
- "recovery"
- "data protection"
- "backup schedule"
- "retention"
contexts:
- "backing up openstack"
- "disaster recovery planning"
- "restoring from backup"
- "snapshot management"A cloud without tested backups is a cloud waiting to lose data. Backup operations protect the entire stack -- from the databases that store state, to the configurations that define behavior, to the volumes that hold user data. The backup hierarchy ensures that any component can be recovered independently, from a single Keystone Fernet key to a complete cloud rebuild.
Backup planning starts with two numbers: **RPO (Recovery Point Objective)** -- how much data loss is acceptable (e.g., "no more than 1 hour of changes"), and **RTO (Recovery Time Objective)** -- how long recovery can take (e.g., "service restored within 4 hours"). These numbers drive every decision: backup frequency, storage location, retention depth, and automation investment.
In NASA SE terms, backup maps to **Phase E (Operations & Sustainment)** as a core sustainment activity, and **Phase F (Closeout)** for data archive procedures. The backup hierarchy follows the same defense-in-depth philosophy NASA applies to mission-critical data: multiple copies, multiple formats, verified recoverability.
**Backup scripts location:**
# Create backup directory structure
mkdir -p /opt/openstack-backups/{database,config,volumes,images,snapshots}
mkdir -p /opt/openstack-backups/scripts
mkdir -p /opt/openstack-backups/logs
# Set ownership and permissions
chown -R root:root /opt/openstack-backups
chmod 700 /opt/openstack-backups**Kolla-Ansible built-in database backup:**
# MariaDB backup (built into Kolla-Ansible) kolla-ansible -i inventory mariadb_backup # Backup location: /var/lib/docker/volumes/mariadb/_data/backups/ # File: mysqlbackup-<timestamp>.qp.xb.gz
**Cron scheduling for automated backups:**
# /etc/cron.d/openstack-backup # Daily database backup at 02:00 0 2 * * * root /opt/openstack-backups/scripts/backup-databases.sh >> /opt/openstack-backups/logs/db-backup.log 2>&1 # Daily config backup at 02:30 30 2 * * * root /opt/openstack-backups/scripts/backup-configs.sh >> /opt/openstack-backups/logs/config-backup.log 2>&1 # Weekly volume snapshots (Sunday 03:00) 0 3 * * 0 root /opt/openstack-backups/scripts/backup-volumes.sh >> /opt/openstack-backups/logs/volume-backup.log 2>&1
**Backup storage targets:**
| Target | Use Case | Configuration | |--------|----------|---------------| | Local disk | Fast restore, primary copy | `/opt/openstack-backups/` | | NFS mount | Off-host copy, disaster recovery | Mount at `/mnt/backup-nfs/` | | Swift (S3-compatible) | Object storage archive, long-term retention | Use `openstack object create` or s3cmd |
**Full backup (weekly):**
#!/bin/bash
# backup-databases.sh -- full MariaDB backup with mariabackup
BACKUP_DIR="/opt/openstack-backups/database"
TIMESTAMP=$(date +%Y%m%d_%H%M%S)
BACKUP_FILE="${BACKUP_DIR}/full_${TIMESTAMP}"
# Use Kolla-Ansible's built-in backup
kolla-ansible -i /etc/kolla/inventory mariadb_backup
# Or manual mariabackup via container
docker exec mariadb mariabackup --backup \
--target-dir=/backup/full_${TIMESTAMP} \
--user=root --password=${DB_ROOT_PASSWORD}
echo "Full backup completed: ${BACKUP_FILE}" >> /opt/openstack-backups/logs/db-backup.log**Incremental backup (daily, between full backups):**
# Incremental based on last full backup
LAST_FULL=$(ls -d ${BACKUP_DIR}/full_* | sort | tail -1)
docker exec mariadb mariabackup --backup \
--target-dir=/backup/inc_${TIMESTAMP} \
--incremental-basedir=${LAST_FULL} \
--user=root --password=${DB_ROOT_PASSWORD}**RabbitMQ definitions export:**
# Export queue definitions, exchanges, bindings docker exec rabbitmq rabbitmqctl export_definitions /tmp/rabbitmq_definitions.json docker cp rabbitmq:/tmp/rabbitmq_definitions.json \ /opt/openstack-backups/config/rabbitmq_definitions_$(date +%Y%m%d).json
**Keystone Fernet key backup:**
# Critical: Fernet keys are required to validate existing tokens docker cp keystone_api:/etc/kolla/keystone/fernet-keys/ \ /opt/openstack-backups/config/fernet-keys_$(date +%Y%m%d)/
**Cinder volume snapshot policies:**
# Create snapshot of all in-use volumes
for vol_id in $(openstack volume list --status in-use -f value -c ID); do
openstack volume snapshot create --volume ${vol_id} \
--description "Scheduled backup $(date +%Y%m%d)" \
backup_${vol_id}_$(date +%Y%m%d)
done**Glance image export:**
# Export critical images (base OS, golden images) for image_id in $(openstack image list --status active -f value -c ID); do openstack image save --file /opt/ope
An adaptive learning and coprocessor architecture for Claude Code, built as an extension to GSD (open-gsd)
Repo: Tibsfox/gsd-skill-creator
Aminet search and browse: full-text search, category tree navigation, architecture filtering, package detail, and curated collections. Use when searching,…
FS-UAE emulator configuration and launch: hardware profiles, ROM management, WHDLoad integration, config generation, and state snapshots. Use when configuring…
Manages Aminet INDEX infrastructure: fetch, parse, cache, and incremental update of ~84,000-entry package database. Use when managing INDEX data, checking…
Aminet package installation: LhA/LZX extraction, Amiga filesystem mapping, dependency detection, install tracking, and scan gate enforcement. Use when…
Selective Aminet package mirroring: single-package fetch, integrity verification, mirror state tracking, bulk download, and sync detection. Use when…
Multi-layer virus scanning for Aminet packages. Signature-based detection, heuristic hunk analysis, boot block scanning, quarantine management, and scan…