New to Kestra?
Use blueprints to kickstart your first workflows.
Take a snapshot of an existing VM and register it as a typed VM.Snapshot asset in Kestra with retention and trigger metadata for a queryable backup inventory.
Backups you cannot enumerate are backups you cannot trust. This blueprint takes a snapshot of an existing virtual machine and registers it as a typed io.kestra.plugin.ee.assets.VM.Snapshot asset in the Kestra asset catalog, recording the retention policy, the trigger that caused the backup, and the machine it protects. The VM is declared as an input asset, so every snapshot is linked to its source machine in the lineage graph, and questions like "when was this box last backed up" become catalog queries.
target_vm input names an existing VM (default windows-web-01).gcp_snapshot task simulates the backup with io.kestra.plugin.core.log.Log, printing the conventional backup name backup-{{ inputs.target_vm }}-{{ execution.startDate }}. In production you replace it with a real task, for example io.kestra.plugin.gcp.cli.GCloudCLI running gcloud compute disks snapshot.assets.inputs entry using its slugified id, creating the lineage edge from machine to backup.assets.outputs entry of type io.kestra.plugin.ee.assets.VM.Snapshot, keyed by a slugified combination of VM name and execution id, with metadata for retention, trigger, and vm.VM.Snapshot asset per backup, with retention and provenance metadata.assets(type='io.kestra.plugin.ee.assets.VM.Snapshot') lists every registered snapshot, filterable by metadata.vm.retention metadata plus asset age drives purge decisions.Cloud snapshot APIs create backups but scatter the evidence across consoles and regions. Kestra registers the snapshot in a central catalog in the same task that creates it, so coverage reporting never depends on scraping provider APIs later. Schedules turn this into an automated backup policy, retries absorb transient API failures, and execution history documents every backup ever taken, including the ones that failed.
asset-create-vm blueprint, matching the slugified target_vm value.asset-create-vm so the target VM exists in the catalog.target_vm.VM.Snapshot asset with retention metadata and lineage.Schedule trigger to turn it into a nightly backup policy and set trigger metadata accordingly.Log stub with io.kestra.plugin.gcp.cli.GCloudCLI or io.kestra.plugin.aws.cli.AwsCLI to take a real disk snapshot.io.kestra.plugin.core.trigger.Schedule trigger for recurring backups and stamp trigger: scheduled-backup in metadata.retention window.