188 lines
4.6 KiB
JSON
188 lines
4.6 KiB
JSON
{
|
|
"slug": "docker-postgres-backup",
|
|
"kind": "ansible",
|
|
"metadata": {
|
|
"name": "Docker Postgres Backup",
|
|
"description": "Connects to a named PostgreSQL container and creates compressed SQL dumps with configurable retention. Supports optional Discord notifications on success or failure.",
|
|
"tags": [
|
|
"docker",
|
|
"backup",
|
|
"postgres",
|
|
"database"
|
|
],
|
|
"icon": {
|
|
"provider": "simple-icons",
|
|
"id": "postgresql",
|
|
"color": "emerald"
|
|
},
|
|
"draft": true,
|
|
"version": {
|
|
"name": "1",
|
|
"source_dep_name": "manual/docker-postgres-backup"
|
|
}
|
|
},
|
|
"variables": [
|
|
{
|
|
"title": "Backup",
|
|
"name": "backup",
|
|
"items": [
|
|
{
|
|
"name": "container_name",
|
|
"type": "str",
|
|
"title": "Container Name",
|
|
"required": true
|
|
},
|
|
{
|
|
"name": "postgres_user",
|
|
"type": "str",
|
|
"title": "Postgres User",
|
|
"required": false,
|
|
"default": "postgres",
|
|
"description": "Database user for pg_dump/pg_dumpall",
|
|
"config": {
|
|
"placeholder": "postgres"
|
|
}
|
|
},
|
|
{
|
|
"name": "postgres_password",
|
|
"type": "str",
|
|
"title": "Postgres Password",
|
|
"required": false,
|
|
"default": ""
|
|
},
|
|
{
|
|
"name": "postgres_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_status",
|
|
"type": "str",
|
|
"title": "Backup Status",
|
|
"required": false,
|
|
"default": ""
|
|
},
|
|
{
|
|
"name": "inventory_hostname",
|
|
"type": "str",
|
|
"title": "Inventory Hostname",
|
|
"required": false,
|
|
"default": ""
|
|
},
|
|
{
|
|
"name": "backup_timestamp",
|
|
"type": "str",
|
|
"title": "Backup Timestamp",
|
|
"required": false,
|
|
"default": ""
|
|
},
|
|
{
|
|
"name": "item",
|
|
"type": "str",
|
|
"title": "Loop Item",
|
|
"required": false,
|
|
"default": ""
|
|
},
|
|
{
|
|
"name": "backup_file_path",
|
|
"type": "str",
|
|
"title": "Backup File Path",
|
|
"required": false,
|
|
"default": ""
|
|
},
|
|
{
|
|
"name": "old_backups",
|
|
"type": "str",
|
|
"title": "Old Backups",
|
|
"required": false,
|
|
"default": ""
|
|
},
|
|
{
|
|
"name": "backup_root",
|
|
"type": "str",
|
|
"title": "Backup Root",
|
|
"required": false,
|
|
"default": "/backups/postgres",
|
|
"config": {
|
|
"placeholder": "/backups/postgres"
|
|
}
|
|
},
|
|
{
|
|
"name": "backup_file_name",
|
|
"type": "str",
|
|
"title": "Backup File Name",
|
|
"required": false,
|
|
"default": ""
|
|
},
|
|
{
|
|
"name": "ansible_failed_result",
|
|
"type": "str",
|
|
"title": "Failed Result",
|
|
"required": false,
|
|
"default": ""
|
|
},
|
|
{
|
|
"name": "backup_status_message",
|
|
"type": "str",
|
|
"title": "Backup Status Message",
|
|
"required": false,
|
|
"default": "",
|
|
"config": {
|
|
"textarea": true
|
|
}
|
|
}
|
|
]
|
|
}
|
|
]
|
|
}
|