Vm
@rjeschmi/vmv2026.03.13.1
01README
VM provisioning and management for libvirt/QEMU and OpenStack, plus k3s, Helm, Rancher, and cloud-init utilities.
02Models
@rjeschmi/cloud-init-isov2026.02.21.1cloud_init_iso.ts
fn generate(userData: string, metaData: string)
Generate a cloud-init NoCloud seed ISO from user-data and meta-data
| Argument | Type | Description |
|---|---|---|
| userData | string | cloud-config user-data content |
| metaData | string | cloud-init meta-data content |
Files
iso(application/octet-stream)— cloud-init NoCloud seed ISO (ISO 9660)
@rjeschmi/helm-chartv2026.03.03.1helm_chart.ts
Global Arguments
| Argument | Type | Description |
|---|---|---|
| kubeconfig | string | kubeconfig YAML content for the target cluster |
fn install(releaseName: string, chart: string, namespace: string, repoName?: string, repoUrl?: string, version?: string, values?: record, valuesYaml?: string, createNamespace?: boolean, reuseValues?: boolean, waitSeconds?: number)
Install or upgrade a Helm chart (helm upgrade --install)
| Argument | Type | Description |
|---|---|---|
| releaseName | string | Helm release name |
| chart | string | Chart name (e.g. ingress-nginx/ingress-nginx) or local path |
| namespace | string | Kubernetes namespace to install into |
| repoName? | string | Helm repo name to add (e.g. ingress-nginx) |
| repoUrl? | string | Helm repo URL (required if repoName is set) |
| version? | string | Chart version (default: latest) |
| values? | record | Values to set (equivalent to --set key=value) |
| valuesYaml? | string | Raw values YAML string (equivalent to -f values.yaml) |
| createNamespace? | boolean | Create the namespace if it does not exist (default: true) |
| reuseValues? | boolean | Reuse previously installed values on upgrade, only overriding what is explicitly set (default: false) |
| waitSeconds? | number | Seconds to wait for resources to be ready (default: 300, 0 to skip) |
fn applyManifest(manifest: string)
Apply a Kubernetes manifest using kubectl apply
| Argument | Type | Description |
|---|---|---|
| manifest | string | YAML manifest to apply |
fn uninstall(releaseName: string, namespace: string)
Uninstall a Helm release
| Argument | Type | Description |
|---|---|---|
| releaseName | string | Helm release name to uninstall |
| namespace | string | Kubernetes namespace of the release |
fn status(releaseName: string, namespace: string)
Get the status of an installed Helm release
| Argument | Type | Description |
|---|---|---|
| releaseName | string | Helm release name |
| namespace | string | Kubernetes namespace of the release |
Resources
release(infinite)— A Helm release installed in the cluster
@rjeschmi/k3sv2026.03.02.1k3s.ts
Global Arguments
| Argument | Type | Description |
|---|---|---|
| sshHost | string | Unraid SSH hostname or IP |
| sshUser | string | SSH username (root on Unraid) |
| sshPrivateKey? | string | SSH private key for Unraid (omit to rely on ssh-agent or ~/.ssh/ defaults) |
| vmSshUser | string | Username on the VM (created by cloud-init) |
| vmSshPrivateKey? | string | SSH private key for the VM user (omit to rely on ssh-agent or ~/.ssh/ defaults) |
fn install(vmName: string, vmHost?: string, timeoutSeconds?: number)
Install k3s on a provisioned VM via SSH and wait for the node to be ready
| Argument | Type | Description |
|---|---|---|
| vmName | string | VM name, used to discover IP via virsh |
| vmHost? | string | Override VM host (e.g. Tailscale hostname) — skips virsh IP discovery |
| timeoutSeconds? | number | Max seconds to wait (default: 600) |
fn uninstall(vmName: string)
Uninstall k3s (and therefore Rancher) from the VM
| Argument | Type | Description |
|---|---|---|
| vmName | string | VM name, used to discover IP via virsh |
Resources
cluster(infinite)— A provisioned k3s cluster
kubeconfig(infinite)— kubeconfig for the k3s cluster with server address rewritten to the VM IP
@rjeschmi/rancher-kubeconfigv2026.02.23.1rancher_kubeconfig.ts
Global Arguments
| Argument | Type | Description |
|---|---|---|
| sshHost | string | Unraid SSH hostname or IP |
| sshUser | string | SSH username (root on Unraid) |
| sshPrivateKey? | string | SSH private key for Unraid (omit to rely on ssh-agent or ~/.ssh/ defaults) |
| vmSshUser | string | Username on the VM (created by cloud-init) |
| vmSshPrivateKey? | string | SSH private key for the VM user (omit to rely on ssh-agent or ~/.ssh/ defaults) |
fn fetch(vmName: string, vmHost?: string)
Fetch k3s kubeconfig from /etc/rancher/k3s/k3s.yaml on the Rancher VM, rewriting the server address to the VM's real IP
| Argument | Type | Description |
|---|---|---|
| vmName | string | VM name used to discover its IP via virsh on Unraid |
| vmHost? | string | Override VM host (e.g. Tailscale hostname) — skips virsh IP discovery |
Resources
kubeconfig(infinite)— k3s kubeconfig fetched from /etc/rancher/k3s/k3s.yaml on the Rancher VM
@rjeschmi/rancher-openstackv2026.02.23.1rancher_openstack.ts
Global Arguments
| Argument | Type | Description |
|---|---|---|
| rancherUrl | string | Rancher server URL (e.g. https://rancher.example.com) |
| rancherToken | string | Rancher API bearer token (e.g. token-xxxxx:yyyyyyyyy) |
| insecure? | boolean | Skip TLS certificate verification (for self-signed certs) |
fn createCredential(name: string, authUrl: string, username: string, password: string, domainName?: string, tenantName: string, region?: string)
Create OpenStack cloud credentials in Rancher
| Argument | Type | Description |
|---|---|---|
| name | string | Credential name in Rancher |
| authUrl | string | OpenStack Keystone auth URL |
| username | string | OpenStack username |
| password | string | OpenStack password |
| domainName? | string | OpenStack domain name (default: Default) |
| tenantName | string | OpenStack project/tenant name |
| region? | string | OpenStack region |
fn createNodeTemplate(name: string, credentialId: string, authUrl: string, username: string, password: string, tenantName: string, domainName?: string, region?: string, flavorName: string, imageName?: string, imageId?: string, networkName: string, secGroups?: string, keypairName?: string, sshUser?: string, rootDiskSizeGb?: number)
Create an OpenStack node template in Rancher
| Argument | Type | Description |
|---|---|---|
| name | string | Node template name |
| credentialId | string | Cloud credential ID (from createCredential output) |
| authUrl | string | OpenStack Keystone auth URL |
| username | string | OpenStack username |
| password | string | OpenStack password |
| tenantName | string | OpenStack project/tenant name |
| domainName? | string | OpenStack domain name (default: Default) |
| region? | string | OpenStack region |
| flavorName | string | OpenStack flavor (e.g. m1.medium) |
| imageName? | string | OpenStack image name (mutually exclusive with imageId) |
| imageId? | string | OpenStack image UUID (mutually exclusive with imageName) |
| networkName | string | OpenStack network name |
| secGroups? | string | Comma-separated security group names (default: default) |
| keypairName? | string | OpenStack keypair name for SSH access |
| sshUser? | string | SSH username on provisioned nodes (default: ubuntu) |
| rootDiskSizeGb? | number | Root disk size in GB (default: 20) |
fn provisionCluster(name: string, nodeTemplateId: string, kubernetesVersion?: string, controlPlaneCount?: number, workerCount?: number, waitSeconds?: number)
Provision an RKE cluster on OpenStack via Rancher with control-plane and worker node pools
| Argument | Type | Description |
|---|---|---|
| name | string | Cluster name |
| nodeTemplateId | string | Node template ID (from createNodeTemplate output) |
| kubernetesVersion? | string | Kubernetes version (e.g. v1.28.x-rancher1-1; default: Rancher's default) |
| controlPlaneCount? | number | Number of control plane + etcd nodes (default: 1) |
| workerCount? | number | Number of worker nodes (default: 2) |
| waitSeconds? | number | Max seconds to wait for cluster to become active (default: 900; 0 = don't wait) |
fn provisionAll(clusterName: string, authUrl: string, username: string, password: string, tenantName: string, domainName?: string, region?: string, flavorName: string, imageName?: string, imageId?: string, networkName: string, secGroups?: string, keypairName?: string, sshUser?: string, rootDiskSizeGb?: number, controlPlaneCount?: number, workerCount?: number, kubernetesVersion?: string, waitSeconds?: number, tailscaleAuthKey?: string, tailscaleOperatorClientId?: string, tailscaleOperatorClientSecret?: string, deleteAfterHours?: number)
End-to-end: create OpenStack credential + node template in Rancher, then provision an RKE cluster
| Argument | Type | Description |
|---|---|---|
| clusterName | string | RKE cluster name |
| authUrl | string | OpenStack Keystone auth URL |
| username | string | OpenStack username |
| password | string | OpenStack password |
| tenantName | string | OpenStack project/tenant name |
| domainName? | string | OpenStack domain name (default: Default) |
| region? | string | OpenStack region |
| flavorName | string | OpenStack flavor (e.g. d2-2, m1.medium) |
| imageName? | string | OpenStack image name (mutually exclusive with imageId) |
| imageId? | string | OpenStack image UUID (mutually exclusive with imageName) |
| networkName | string | OpenStack network name |
| secGroups? | string | Comma-separated security group names (default: default) |
| keypairName? | string | OpenStack keypair name for SSH access |
| sshUser? | string | SSH user on provisioned nodes (default: ubuntu) |
| rootDiskSizeGb? | number | Root disk size in GB (default: 20) |
| controlPlaneCount? | number | Number of control plane + etcd nodes (default: 1) |
| workerCount? | number | Number of worker nodes (default: 2) |
| kubernetesVersion? | string | Kubernetes version (default: Rancher default) |
| waitSeconds? | number | Max seconds to wait for cluster active (default: 900) |
| tailscaleAuthKey? | string | Tailscale auth key — when provided, nodes will auto-join the tailnet via cloud-init |
| tailscaleOperatorClientId? | string | Tailscale OAuth client ID — when provided, tailscale-operator is installed on the cluster |
| tailscaleOperatorClientSecret? | string | Tailscale OAuth client secret — required when tailscaleOperatorClientId is set |
| deleteAfterHours? | number | Schedule cluster auto-deletion after this many hours (default: 12, set to 0 to disable) |
fn getKubeconfig(clusterId: string)
Generate and print the kubeconfig for a provisioned cluster
| Argument | Type | Description |
|---|---|---|
| clusterId | string | Management cluster ID (c-m-xxxxx from cluster resource) |
fn scheduleDelete(clusterName: string, delayHours?: number)
Deploy a CronJob in the Rancher local cluster that deletes a provisioned cluster after a TTL
| Argument | Type | Description |
|---|---|---|
| clusterName | string | Cluster name to delete |
| delayHours? | number | Hours before deletion (default: 12) |
fn deleteCluster(clusterName: string)
Delete an OpenStack cluster from Rancher
| Argument | Type | Description |
|---|---|---|
| clusterName | string | Cluster name to delete |
fn fetchSshKeys(clusterName: string)
Fetch SSH private keys for all machines in a cluster from Rancher's machine-state secrets
| Argument | Type | Description |
|---|---|---|
| clusterName | string | Cluster name to fetch SSH keys for |
Resources
credential(infinite)— OpenStack cloud credentials stored in Rancher
nodeTemplate(infinite)— OpenStack node template in Rancher
cluster(infinite)— RKE cluster provisioned on OpenStack via Rancher
@rjeschmi/unraid-vmv2026.02.21.1unraid_vm.ts
Global Arguments
| Argument | Type | Description |
|---|---|---|
| host | string | Unraid server URL, e.g. https://tower.local |
| apiKey | string | Unraid API key from Settings > API Keys |
fn list()
List all virtual machines on the Unraid server
fn start(vmUuid: string)
Start a virtual machine
| Argument | Type | Description |
|---|---|---|
| vmUuid | string | UUID of the VM to control |
fn stop(vmUuid: string)
Gracefully stop a VM via ACPI signal
| Argument | Type | Description |
|---|---|---|
| vmUuid | string | UUID of the VM to control |
fn forceStop(vmUuid: string)
Force power off a VM immediately
| Argument | Type | Description |
|---|---|---|
| vmUuid | string | UUID of the VM to control |
fn pause(vmUuid: string)
Pause a running VM
| Argument | Type | Description |
|---|---|---|
| vmUuid | string | UUID of the VM to control |
fn resume(vmUuid: string)
Resume a paused VM
| Argument | Type | Description |
|---|---|---|
| vmUuid | string | UUID of the VM to control |
Resources
vm(infinite)— An Unraid virtual machine (factory — one per VM)
result(infinite)— Result of the most recent VM control operation
@rjeschmi/unraid-vm-provisionv2026.03.02.1unraid_vm_provision.ts
Global Arguments
| Argument | Type | Description |
|---|---|---|
| sshHost | string | Unraid SSH hostname or IP |
| sshUser | string | SSH username (root on Unraid) |
| sshPrivateKey | string | SSH private key in PEM format |
| domainsDir | string | VM storage base directory |
fn provision(name?: string, cpus: number, memoryMiB: number, diskSizeGb: number, ubuntuVersion: enum, sshPublicKey?: string, username: string, mounts?: array, tailscaleAuthKey?: string)
Provision a new Ubuntu cloud-init VM on Unraid via SSH + libvirt
| Argument | Type | Description |
|---|---|---|
| name? | string | VM name / hostname (auto-generated as rancher-<6 chars> if omitted) |
| cpus | number | Number of vCPUs |
| memoryMiB | number | RAM in MiB |
| diskSizeGb | number | Disk size in GB |
| ubuntuVersion | enum | Ubuntu version |
| sshPublicKey? | string | SSH public key to inject (omit when using Tailscale SSH) |
| username | string | Unix username to create |
| mounts? | array | Host paths to expose inside the VM via virtio-9p |
| tailscaleAuthKey? | string | Tailscale auth key — when provided, the VM will auto-join the tailnet via cloud-init |
fn restart(name: string)
Reboot a provisioned VM
| Argument | Type | Description |
|---|---|---|
| name | string | VM name to restart |
fn dumpXml(name: string)
Dump the libvirt domain XML for an existing VM (for inspection)
| Argument | Type | Description |
|---|---|---|
| name | string | VM name to inspect |
fn verify(name: string, expectedHostname: string, expectedUsername: string, userSshPrivateKey: string, timeoutSeconds?: number)
Wait for a provisioned VM to boot and verify cloud-init completed successfully
| Argument | Type | Description |
|---|---|---|
| name | string | VM name to verify |
| expectedHostname | string | Expected hostname after cloud-init |
| expectedUsername | string | Expected Unix username created by cloud-init |
| userSshPrivateKey | string | Private SSH key corresponding to the public key injected during provisioning |
| timeoutSeconds? | number | Max seconds to wait for VM to boot (default 300) |
fn destroy(name: string, keepVm?: boolean)
Destroy a provisioned VM and remove its disk files
| Argument | Type | Description |
|---|---|---|
| name | string | VM name to destroy |
| keepVm? | boolean | If true, skip destruction and leave the VM running |
Resources
vm(infinite)— A provisioned cloud-init Ubuntu VM
verifyResult(7d)— Result of a cloud-init verification run
@rjeschmi/vm-provider-openstackv2026.03.03.1vm_provider_openstack.ts
Global Arguments
| Argument | Type | Description |
|---|---|---|
| username | string | OpenStack username |
| password | string | OpenStack password |
| projectName | string | OpenStack project / tenant name |
| region? | string | OpenStack region (e.g. BHS5) |
fn provision(name: string, imageId: string, flavorId: string, networkId: string, sshPublicKey: string, username: string)
Provision a new Ubuntu VM on OpenStack via Nova API with cloud-init
| Argument | Type | Description |
|---|---|---|
| name | string | VM name / hostname |
| imageId | string | OpenStack image UUID |
| flavorId | string | OpenStack flavor UUID or name |
| networkId | string | OpenStack network UUID for the primary NIC |
| sshPublicKey | string | SSH public key to inject via cloud-init |
| username | string | Unix username to create via cloud-init |
fn verify(name: string, expectedHostname: string, expectedUsername: string, userSshPrivateKey?: string)
Verify that a provisioned VM is reachable via SSH and cloud-init completed
| Argument | Type | Description |
|---|---|---|
| name | string | VM name to verify (used as instance key) |
| expectedHostname | string | Expected hostname after cloud-init |
| expectedUsername | string | Expected Unix username created by cloud-init |
| userSshPrivateKey? | string | Private SSH key for the provisioned user (omit to rely on ssh-agent or ~/.ssh/ defaults) |
fn destroy(name: string)
Destroy an OpenStack server and release its floating IP
| Argument | Type | Description |
|---|---|---|
| name | string | VM name to destroy |
fn start(name: string)
Start (unpause/unshelve) an OpenStack server
| Argument | Type | Description |
|---|---|---|
| name | string | VM name to start |
fn stop(name: string)
Stop (pause) an OpenStack server
| Argument | Type | Description |
|---|---|---|
| name | string | VM name to stop |
Resources
vm(infinite)— A provisioned Ubuntu VM on OpenStack
verifyResult(7d)— Result of a cloud-init verification run
result(infinite)— Result of the most recent VM control operation
@rjeschmi/vm-provider-ssh-virshv2026.03.13.1vm_provider_ssh_virsh.ts
Global Arguments
| Argument | Type | Description |
|---|---|---|
| sshHost | string | Hypervisor SSH hostname or IP |
| sshUser | string | SSH username (e.g. root) |
| sshPrivateKey? | string | SSH private key in PEM format (omit to rely on ssh-agent or ~/.ssh/ defaults) |
| domainsDir | string | VM storage base directory |
fn provision(name: string, cpus: number, memoryMiB: number, diskSizeGb: number, ubuntuVersion: enum, sshPublicKey: string, username: string, managementBridge?: string, managementNetwork: string, extraNics?: array, isolatedNetworks?: array, mounts?: array, tailscaleAuthKey?: string, writeFiles?: array, extraPackages?: array, extraRuncmd?: array)
Provision a new Ubuntu cloud-init VM via SSH + libvirt. Supports multiple NICs and isolated network creation.
| Argument | Type | Description |
|---|---|---|
| name | string | VM name / hostname |
| cpus | number | Number of vCPUs |
| memoryMiB | number | RAM in MiB |
| diskSizeGb | number | Disk size in GB |
| ubuntuVersion | enum | Ubuntu version |
| sshPublicKey | string | SSH public key to inject |
| username | string | Unix username to create |
| managementBridge? | string | Host bridge for the primary NIC (e.g. br0) — VM gets a real LAN IP. If omitted, managementNetwork is used instead. |
| managementNetwork | string | Libvirt network for the primary NIC when managementBridge is not set |
| extraNics? | array | Additional NICs to attach (e.g. an isolated Neutron external network) |
| isolatedNetworks? | array | Isolated libvirt networks to create if they do not exist (no DHCP, no NAT) |
| mounts? | array | Host paths to expose inside the VM via virtio-9p |
| tailscaleAuthKey? | string | Tailscale auth key — when provided, installs Tailscale and joins the tailnet via cloud-init |
| writeFiles? | array | Extra files to write via cloud-init write_files |
| extraPackages? | array | Additional apt packages to install via cloud-init |
| extraRuncmd? | array | Additional shell commands appended to cloud-init runcmd |
fn restart(name: string)
Reboot a provisioned VM
| Argument | Type | Description |
|---|---|---|
| name | string | VM name to restart |
fn dumpXml(name: string)
Dump the libvirt domain XML for an existing VM (for inspection)
| Argument | Type | Description |
|---|---|---|
| name | string | VM name to inspect |
fn verify(name: string, expectedHostname: string, expectedUsername: string, userSshPrivateKey?: string, timeoutSeconds?: number)
Wait for a provisioned VM to boot and verify cloud-init completed successfully
| Argument | Type | Description |
|---|---|---|
| name | string | VM name to verify |
| expectedHostname | string | Expected hostname after cloud-init |
| expectedUsername | string | Expected Unix username created by cloud-init |
| userSshPrivateKey? | string | Private SSH key for the provisioned user (omit to rely on ssh-agent or ~/.ssh/ defaults) |
| timeoutSeconds? | number | Max seconds to wait for VM to boot (default 300) |
fn list()
List all virtual machines defined in libvirt
fn start(name: string)
Start a VM via virsh
| Argument | Type | Description |
|---|---|---|
| name | string | VM name to restart |
fn stop(name: string)
Gracefully stop a VM via ACPI signal (virsh shutdown)
| Argument | Type | Description |
|---|---|---|
| name | string | VM name to stop |
fn forceStop(name: string)
Force power off a VM immediately (virsh destroy)
| Argument | Type | Description |
|---|---|---|
| name | string | VM name to force-stop |
fn pause(name: string)
Pause (suspend) a running VM
| Argument | Type | Description |
|---|---|---|
| name | string | VM name to pause |
fn resume(name: string)
Resume a paused VM
| Argument | Type | Description |
|---|---|---|
| name | string | VM name to resume |
fn destroy(name: string, keepVm?: boolean, removeNetworks?: array)
Destroy a VM, remove its disk files, and optionally remove libvirt networks
| Argument | Type | Description |
|---|---|---|
| name | string | VM name to destroy |
| keepVm? | boolean | If true, skip destruction and leave the VM running |
| removeNetworks? | array | Libvirt network names to remove after destroying the VM |
Resources
vm(infinite)— A provisioned cloud-init Ubuntu VM
verifyResult(7d)— Result of a cloud-init verification run
result(infinite)— Result of the most recent VM control operation
03Previous Versions
2026.03.03.1Mar 3, 2026
04Stats
Downloads
11
Archive size
58.5 KB
Not yet scored.
A score will be generated the next time this extension is published. The owner can also trigger scoring manually.
05Platforms