{ "slug": "docker-mysql-backup", "kind": "ansible", "metadata": { "name": "Docker MySQL Backup", "description": "Connects to a named MySQL container and creates compressed SQL dumps with configurable retention. Supports optional Discord notifications on success or failure.", "tags": [ "docker", "backup", "mysql", "database" ], "icon": { "provider": "simple-icons", "id": "mysql", "color": "emerald" }, "draft": true, "version": { "name": "1", "source_dep_name": "manual/docker-mysql-backup" } }, "variables": [ { "title": "Backup", "name": "backup", "items": [ { "name": "container_name", "type": "str", "title": "Container Name", "required": true }, { "name": "mysql_user", "type": "str", "title": "MySQL User", "required": false, "default": "root", "config": { "placeholder": "root" } }, { "name": "mysql_password", "type": "str", "title": "MySQL Password", "required": false, "default": "" }, { "name": "mysql_database", "type": "str", "title": "Database Name", "required": false, "default": "all", "description": "Database to dump, or 'all' for all databases", "config": { "placeholder": "all" } }, { "name": "backup_retention_days", "type": "int", "title": "Retention Days", "required": false, "default": 14, "description": "Delete backup archives older than this many days", "config": { "slider": true, "min": 1, "max": 365, "step": 1, "placeholder": "14", "unit": "days" } } ] }, { "title": "Notification", "name": "notification", "items": [ { "name": "send_discord_notification", "type": "bool", "title": "Send Discord Notification", "required": false, "default": false, "description": "Send success/failure status to Discord webhook" }, { "name": "discord_webhook", "type": "secret", "title": "Discord Webhook", "required": false, "default": "", "description": "Discord webhook URL for notifications" } ] }, { "title": "Internal", "name": "internal", "items": [ { "name": "backup_file_name", "type": "str", "title": "Backup File Name", "required": false, "default": "" }, { "name": "backup_root", "type": "str", "title": "Backup Root", "required": false, "default": "/backups/mysql", "config": { "placeholder": "/backups/mysql" } }, { "name": "ansible_failed_result", "type": "str", "title": "Failed Result", "required": false, "default": "" }, { "name": "backup_timestamp", "type": "str", "title": "Backup Timestamp", "required": false, "default": "" }, { "name": "old_backups", "type": "str", "title": "Old Backups", "required": false, "default": "" }, { "name": "backup_status", "type": "str", "title": "Backup Status", "required": false, "default": "" }, { "name": "inventory_hostname", "type": "str", "title": "Inventory Hostname", "required": false, "default": "" }, { "name": "backup_file_path", "type": "str", "title": "Backup File Path", "required": false, "default": "" }, { "name": "item", "type": "str", "title": "Loop Item", "required": false, "default": "" }, { "name": "backup_status_message", "type": "str", "title": "Backup Status Message", "required": false, "default": "", "config": { "textarea": true } } ] } ] }