New to Kestra?
Use blueprints to kickstart your first workflows.
Provision a virtual machine and register it as a typed VM asset in the Kestra asset catalog with OS, region, and status metadata for lineage and governance.
Turn VM provisioning into a governed, catalog-aware operation. This blueprint provisions a virtual machine and registers it as a typed io.kestra.plugin.ee.assets.VM asset in the Kestra asset catalog, capturing OS, region, and runtime status as metadata. It is the foundation flow of an asset-driven infrastructure suite: every downstream operation, such as assigning an IP, installing software, taking a snapshot, or onboarding a user, can declare this VM as an input asset, which gives you an automatic dependency and lineage graph for your whole fleet.
vm_name input (default windows-web-01) names the machine to create.gcp_create_instance task simulates the provisioning call with io.kestra.plugin.core.log.Log. In production you replace it with your real provisioning task, for example io.kestra.plugin.gcp.cli.GCloudCLI running gcloud compute instances create, a Terraform apply, or an Ansible playbook.assets.outputs entry: the VM is registered under the slugified name ({{ inputs.vm_name | slugify }}) with type io.kestra.plugin.ee.assets.VM and metadata for os, region, status, and name.assets.inputs or query it with the assets() Pebble function.VM asset per provisioned machine, discoverable in the Kestra UI.os, region, status) that downstream flows can filter on with assets(metadata={...}).Cloud consoles and IaC tools create VMs, but they do not record which workflows depend on each machine or what was installed, attached, or snapshotted afterward. Kestra Assets turn every resource into a typed catalog entry with metadata and lineage. Combined with declarative YAML, triggers, retries, and full execution history, you get a living CMDB that updates itself as flows run instead of a spreadsheet that drifts out of date.
GCP_SERVICE_ACCOUNT, as secrets when you wire in a real provisioning task.vm_name of your choice.VM asset with its metadata.asset-assign-external-ip or asset-vm-snapshot against the same VM and watch the lineage graph grow.Log stub with io.kestra.plugin.gcp.cli.GCloudCLI, io.kestra.plugin.aws.cli.AwsCLI, or a Terraform task that actually creates the instance.assets() queries.