New to Kestra?
Use blueprints to kickstart your first workflows.
Restore a Proxmox VE backup to a throwaway VMID, verify it, and delete the test VM, proving backups are recoverable.
A backup you have never restored is a hope, not a recovery plan. This blueprint runs an automated Proxmox VE disaster-recovery drill that proves your vzdump backups are actually recoverable, without ever touching production. It lists the backup archives on a storage, restores a chosen archive to a throwaway VMID, probes the restored virtual machine to confirm it boots and responds, then deletes the test VM so each drill leaves no residue. An error handler tears down the test VM even when verification fails, so repeated drills never accumulate orphaned machines on your Proxmox cluster.
list_backups (io.kestra.plugin.proxmox.backup.List) enumerates the vzdump archives available on the source storage.restore_backup (io.kestra.plugin.proxmox.backup.Restore) restores the chosen archive volid to the target_storage under the throwaway test_vm_id, with resourceType: VM.verify_restore (io.kestra.plugin.core.http.Request) issues a GET against verify_url to confirm the restored VM is healthy and reachable.cleanup_test_vm (io.kestra.plugin.proxmox.vm.Delete) removes the test VM so the drill is non-destructive and self-cleaning.cleanup_on_failure error handler (io.kestra.plugin.proxmox.vm.Delete) deletes the test VM anyway, preventing orphaned machines.Proxmox can schedule backups, but it does not orchestrate restore validation, cross-check the result with an HTTP probe, or guarantee cleanup when a step fails. Kestra adds a Schedule trigger for recurring drills, retries on transient API errors, full execution history and lineage across the list, restore, verify, and delete steps, and a declarative YAML definition you can review and version. The error handler closes the gap Proxmox's own scheduler cannot: deterministic teardown of the test VM regardless of outcome.
PROXMOX_HOST: Proxmox VE host or IP (no scheme, no port).PROXMOX_NODE: Cluster node name that scopes the API calls (for example, pve).PROXMOX_USERNAME: PAM or PVE user in the form user@realm (for example, root@pam).PROXMOX_PASSWORD: Password for ticket-based authentication.archive volid, target_storage, test_vm_id, and verify_url.weekly_dr_drill Schedule trigger to run the drill on a cadence.