New to Kestra?
Use blueprints to kickstart your first workflows.
Provision a VM whose license is selected from the Kestra asset catalog at runtime, registering both the VM asset and its license dependency for lineage.
License management is where infrastructure automation usually goes untracked: a VM gets built against a Windows or database license and nobody records the link. This blueprint provisions a virtual machine and binds it to an existing io.kestra.plugin.ee.assets.VM.License asset chosen at execution time. The license shows up as an input asset and the VM as an output asset, so the catalog knows exactly which machines consume which licenses, and cleanup flows can later find every VM that depends on a revoked license.
vm_name input names the machine to create.license input is a dynamic SELECT: its expression calls the assets() Pebble function with type = 'io.kestra.plugin.ee.assets.VM.License' and extracts the ids with jq('.[].id'). The operator picks a real license from the catalog, not a free-text string.gcp_create_instance task simulates provisioning with io.kestra.plugin.core.log.Log. It declares the chosen license as an assets.inputs entry and registers the new machine as an assets.outputs entry of type io.kestra.plugin.ee.assets.VM with os, region, status, and name metadata.VM asset whose lineage points back to the exact license it consumes.SELECT inputs driven by assets().Provisioning tools create machines; they do not maintain a queryable link between machines and the licenses, certificates, or IPs they consume. Kestra Assets record those relationships automatically as flows execute, and the assets() function makes the catalog available inside inputs and tasks. Add triggers, retries, RBAC, and full execution history, and license-aware provisioning becomes a governed workflow instead of tribal knowledge.
io.kestra.plugin.ee.assets.VM.License asset already registered, otherwise the license dropdown is empty. A simple flow with an assets.outputs entry of that type creates one.Log task with a real provisioning call.VM.License asset in your instance.asset-cleanup-license-vms to automatically purge VMs when a license is removed.Log stub with io.kestra.plugin.gcp.cli.GCloudCLI or io.kestra.plugin.aws.cli.AwsCLI to actually create the instance.licenseId) so metadata queries can find dependent VMs without walking lineage.