{"id":13820004,"url":"https://github.com/ilvpozzd/terraform-talos-vsphere-vm","last_synced_at":"2025-05-16T07:32:34.923Z","repository":{"id":39860405,"uuid":"494045089","full_name":"ilpozzd/terraform-talos-vsphere-vm","owner":"ilpozzd","description":"This module allows you to deploy a Talos OS-based vSphere virtual machine with a custom configuration.","archived":false,"fork":false,"pushed_at":"2022-06-08T22:36:18.000Z","size":63,"stargazers_count":3,"open_issues_count":0,"forks_count":3,"subscribers_count":1,"default_branch":"main","last_synced_at":"2024-08-04T08:03:20.769Z","etag":null,"topics":["iac","kubernetes","module","talos","terraform","virtual-machine","vmware","vsphere"],"latest_commit_sha":null,"homepage":"","language":"HCL","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ilpozzd.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2022-05-19T11:36:07.000Z","updated_at":"2024-05-24T14:25:45.000Z","dependencies_parsed_at":"2022-08-24T05:00:41.962Z","dependency_job_id":null,"html_url":"https://github.com/ilpozzd/terraform-talos-vsphere-vm","commit_stats":null,"previous_names":[],"tags_count":6,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ilpozzd%2Fterraform-talos-vsphere-vm","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ilpozzd%2Fterraform-talos-vsphere-vm/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ilpozzd%2Fterraform-talos-vsphere-vm/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ilpozzd%2Fterraform-talos-vsphere-vm/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ilpozzd","download_url":"https://codeload.github.com/ilpozzd/terraform-talos-vsphere-vm/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":225413744,"owners_count":17470617,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["iac","kubernetes","module","talos","terraform","virtual-machine","vmware","vsphere"],"created_at":"2024-08-04T08:00:56.723Z","updated_at":"2025-05-16T07:32:33.274Z","avatar_url":"https://github.com/ilpozzd.png","language":"HCL","funding_links":[],"categories":["Table of Contents"],"sub_categories":[],"readme":"# Talos OS vSphere Virtual Machine Terraform Module\n\nPage in [Terraform Registry](https://registry.terraform.io/modules/ilpozzd/vsphere-vm/talos/latest)\n\nThis module allows you to deploy a Talos OS-based vSphere virtual machine with a custom configuration.\nThe configuration of the virtual machine fully corresponds to the configuration of [Talos OS v1.0.x](https://www.talos.dev/v1.0/).\n\n## Usage\n\nIt is strongly not recommended to use this module separately, since creating groups of virtual machines does not make a full cycle of Terraform automation (you cannot continue working with the created cluster using Terraform). To create a cluster, use [ilpozzd/vsphere-cluster/talos](https://registry.terraform.io/modules/ilpozzd/vsphere-cluster/talos/latest). This module is useful in some cases when using Terragrunt. See [examples](#examples).\n\n## Examples\n\n* [Terragrunt Example](https://github.com/ilpozzd/talos-vsphere-cluster-terragrunt-example)\n\n## Requirements\n\n| Name | Version |\n|---|---|\n| terraform | \u003e= 1.1.9, \u003c 2.0.0 |\n| [hashicorp/vsphere](https://registry.terraform.io/providers/hashicorp/vspherehttps://registry.terraform.io/providers/hashicorp/vsphere/2.1.1) | 2.1.1 |\n\n### vSphere Version \u003e= `6.7u3`\n\n### Required `Terraform Role` permissions to user in **vSphere**\n\nDatastore:\n* Allocate space\n* Browse datastore\n* Low level file operations\n* Remove file\n* Update virtual machine files\n* Update virtual machine metadata\n\nFolder:\n* Create folder\n* Delete folder\n* Move folder\n* Rename folder\n\nNetwork:\n* Assign network\n\nResource:\n* Assign virtual machine to resource pool\n* Migrate powered off virtual machine\n* Migrate powered on virtual machine\n\nProfile-driven storage:\n* Profile-driven storage view\n\nvApp:\n* Import\n* View OVF environment\n* vApp application configuration\n* vApp instance configuration\n* vApp managedBy configuration\n* vApp resource configuration\n\nVirtual machine:\n* Change Configuration\n* Edit Inventory\n* Guest Operations\n* Interaction\n* Provisioning\n\n### Required objects to apply `roles`\n\n| Object | Role | Defined in |\n|---|---|---|\n| vCenter | `Terraform Role` | This object |\n| Datacenter | `Read-only Role` | This object |\n| Datastore Cluster | `Terraform Role` | This object and it's children |\n| Hosts Cluster | `Read-only Role` | This object |\n| Hosts | `Terraform Role` | This object |\n| DPG | `Terraform Role` | This object |\n| Folder | `Terraform Role` | This object and it's children |\n| Resource pool | `Terraform Role` | This object and it's children |\n\n## Providers\n\n| Name | Version |\n|---|---|\n| [hashicorp/vsphere](https://registry.terraform.io/providers/hashicorp/vsphere/2.1.1) | 2.1.1 |\n\n## Modules\n\n| Name | Version |\n|---|---|\n[ilpozzd/vm-userdata/talos](https://registry.terraform.io/modules/ilpozzd/vm-userdata/talos/1.0.0) | 1.0.0 |\n\n## Resources\n\n| Name | Type |\n|---|---|\n| [vsphere_virtual_machine.this](https://registry.terraform.io/providers/hashicorp/vsphere/2.1.1/docs/resources/virtual_machine) | resource |\n\n## Inputs\n\n| Name | Description | Type | Default | Required |\n|---|---|---|---|---|\n| datacenter | VMware datacenter name. | `string` | `-` | Yes |\n| datastores | VMWare datastore(s) where all data for the virtual machine will be placed in. | `list(string)` | `-` | Yes |\n| hosts | ESXi host(s) where the virtual machine will be created. | `list(string)` | `-` | Yes |\n| resource_pool | VMWare resource pool where the virtual machine will be created. | `string` | `-` | Yes |\n| folder | Folder to create the virtual machine in. | `string` | `-` | Yes |\n| remote_ovf_url | URL to the remote [Talos OS 1.0.x](https://github.com/siderolabs/talos/releases) ovf/ova file. | `string` | `-` | Yes |\n| \u003ca name=\"vm-count-cell\"\u003e\u003c/a\u003e vm_count | Number of virtual machines. | `number` | `1` | No |\n| num_cpus | The total number of virtual processor cores to assign to the virtual machine. | `number` | `2` | No |\n| memory | The amount of RAM for the virtual machine, in Mb. | `number` | `2048` | No |\n| disks |A specification list for a virtual disk devices on the virtual machine. Use only first disk to Talos installation in [machine_base_configuration](#machine-base-configuration-cell) block | [`list`](#disks-input) | `-` | Yes |\n| network_interfaces | A specification list for a virtual NIC on the virtual machine. | [`list`](#network-interfaces-input) | `-` | Yes |\n| \u003ca name=\"create-init-node-cell\"\u003e\u003c/a\u003e create_init_node | Whether to create an initialization node. If `true`, the `first` virtual machine will be the initialization node. | `bool` | `false` | Yes |\n| talos_base_configuration | Talos OS top-level configuration. | [`object`](#talos-base-configuration-input) | [`object`](#talos-base-configuration-input) | No |\n| machine_secrets | Secret data that is used to create trust relationships between virtual machines. | [`object`](#machine-secrets-input) | `-` | Yes |\n| talos_admin_pki | Base64 encoded certificate (signed by [machine_secrets.ca.crt](#machine-secrets-input) and key (in ED25519) to provide access to virtual machine trought `talosctl`. | [`object`](#talos-admin-pki-input) | `{}` | [Yes](#talos-admin-pki-input) |\n| \u003ca name=\"machine-base-configuration-cell\"\u003e\u003c/a\u003e machine_base_configuration | Basic configuration of the virtual machine. | [`object`](#machine-base-configuration-input) | `-` | Yes |\n| machine_extra_configuration | Extended configuration of the virtual machine. | [`object`](#machine-extra-configuration-input) | `{}` | No |\n| \u003ca name=\"machine-type-cell\"\u003e\u003c/a\u003e machine_type | The role of the virtual machine in the Kubernetes cluster (`controlplane` or `worker`). | `string` | `-` | Yes |\n| machine_cert_sans | A list of alternative names of for [vm_count](#vm-count-cell) virtual machines. | `list(list(string))` | `[]` | No |\n| machine_network | General network configuration of the virtual machine. | [`object`](#machine-network-input) | `{}` | No |\n| \u003ca name=\"machine-network-hostnames-cell\"\u003e\u003c/a\u003e machine_network_hostnames | A list of hostnames for [vm_count](#vm-count-cell) virtual machines (if not set will be generated automaticly). | `list(string)` | `[]` | No |\n| \u003ca name=\"machine-network-interfaces-cell\"\u003e\u003c/a\u003e machine_network_interfaces | A list of network interfaces for [vm_count](#vm-count-cell) virtual machines (if not set DHCP will be used). | [`list`](#machine-network-interfaces-input) | `[]` | [`Yes/No`](#machine-network-interfaces-input) |\n| cluster_secrets | Secret data that is used to establish trust relationships between Kubernetes cluster nodes. | [`object`](#cluster-secrets-input) | `-` | Yes |\n| control_plane_cluster_secrets | Secret data required to establish trust relationships between components used by Control Plane nodes in the Kubernetes cluster. Required if [machine_type](#machine-type-cell) = `controlplane`. | [`object`](#control-plane-cluster-secrets-input) | `{}` | [Yes](#control-plane-cluster-secrets-input) |\n| cluster_name | The name of the cluster. | `string` | `-` | Yes |\n| cluster_control_plane | Data to define the API endpoint address for joining a node to the Kubernetes cluster. | [`object`](#cluster-control-plane-input) | `-` | [Yes/No](#cluster-control-plane-input) |\n| cluster_discovery | Data that sets up the discovery of nodes in the Kubernetes cluster. | [`object`](#cluster-discovery-input) | [`object`](#cluster-discovery-input) | No |\n| control_plane_cluster_configuration | Data that configure the components of the Control Plane nodes in the Kubernetes cluster. | [`object`](#control-plane-cluster-configuration-input) | `{}` | No |\n| cluster_inline_manifests | A list of Kuberenetes manifests whose content is represented as a string. These will get automatically deployed as part of the bootstrap. | [`list`](#cluster-inline-manifests-input) | `[]` | No |\n| cluster_extra_manifests | A list of `URLs` that point to additional manifests. These will get automatically deployed as part of the bootstrap. | `list(string)` | `[]` | No |\n| cluster_extra_manifest_headers | A map of key value pairs that will be added while fetching the `cluster_extra_manifests`. | `map(string)` | `{}` | No |\n| vmtoolsd_extra_manifest | A link to talos-vmtoolsd Kubernetes manifest. | `string` | [`Link`](https://raw.githubusercontent.com/mologie/talos-vmtoolsd/release-0.3/deploy/0.3.yaml) | No |\n\n### Disks Input\n\n```hcl\nlist(object({\n  label            = string\n  size             = number\n  eagerly_scrub    = optional(bool)\n  thin_provisioned = optional(bool)\n}))\n```\n* `label` - Any name for disk (label for Terraform)\n* `size` - Capacity in **Gb**\n* `eagerly_scrub` and `thin_provisioned` - See [vSphere Provider Documentation](https://registry.terraform.io/providers/hashicorp/vsphere/latest/docs/resources/virtual_machine#disk-options)\n\n### Network Interfaces Input\n\n```hcl\nlist(object({\n  name = string\n}))\n```\n* `name` - Distributed Port Group (DPG) name\n\n### Talos Base Configuration Input\n\n```hcl\nobject({\n  version = string\n  persist = bool\n})\n```\n\nDefault:\n\n```hcl\n{\n  version = \"v1alpha1\"\n  persist = false\n}\n```\n\nSee [Config](https://www.talos.dev/v1.0/reference/configuration/#config) section in Talos Configuration Reference for detail description.\n\n### Machine Secrets Input\n\n```hcl\nobject({\n  token = string\n  ca = object({\n    crt = string\n    key = string\n  })\n})\n```\n\nSee [MachineConfig](https://www.talos.dev/v1.0/reference/configuration/#machineconfig) section in Talos Configuration Reference for detail description.\n\n### Talos Admin PKI Input\n\n```hcl\nobject({\n  crt = optional(string)\n  key = optional(string)\n})\n```\n* `crt` - Base64 encoded certificate in **PEM** format\n* `key` - Base64 encoded key in **PEM** format\n  \nRequired if [machine_type](#machine-type-cell) = `controlplane` and [create_init_node](#create-init-node-cell) = `true`\n\n### Machine Base Configuration \n\n```hcl\nobject({\n  install = object({\n    disk            = string\n    extraKernelArgs = optional(list(string))\n    image           = string\n    bootloader      = bool\n    wipe            = bool\n    diskSelector = optional(object({\n      size    = string\n      model   = string\n      busPath = string\n    }))\n    extensions = optional(list(string))\n  })\n  kubelet = optional(object({\n    image      = string\n    extraArgs  = optional(map(string))\n    clusterDNS = optional(list(string))\n    extraMounts = optional(list(object({\n      destination = string\n      type        = string\n      source      = string\n      options     = list(string)\n    })))\n    extraConfig = optional(map(string))\n    nodeIP = optional(object({\n      validSubnets = list(string)\n    }))\n  }))\n  time = optional(object({\n    disabled    = optional(bool)\n    servers     = optional(list(string))\n    bootTimeout = optional(string)\n  }))\n  features = optional(object({\n    rbac = optional(bool)\n  }))\n})\n```\n\nSee [MachineConfig](https://www.talos.dev/v1.0/reference/configuration/#machineconfig) section in Talos Configuration Reference for detail description.\n\n### Machine Extra Configuration Input\n\n```hcl\nobject({\n  controlPlane = optional(object({\n    controllerManager = optional(object({\n      disabled = bool\n    }))\n    scheduler = optional(object({\n      disabled = bool\n    }))\n  }))\n  pods = optional(list(map(any)))\n  disks = optional(list(object({\n    device = string\n    partitions = list(object({\n      mountpoint = string\n      size       = string\n    }))\n  })))\n  files = optional(list(object({\n    content     = string\n    permissions = string\n    path        = string\n    op          = string\n  })))\n  env = optional(object({\n    GRPC_GO_LOG_VERBOSITY_LEVEL = optional(string)\n    GRPC_GO_LOG_SEVERITY_LEVEL  = optional(string)\n    http_proxy                  = optional(string)\n    https_proxy                 = optional(string)\n    no_proxy                    = optional(bool)\n  }))\n  sysctls = optional(map(string))\n  sysfs   = optional(map(string))\n  registries = optional(object({\n    mirrors = optional(map(object({\n      endpoints = list(string)\n    })))\n    config = optional(map(object({\n      tls = object({\n        insecureSkipVerify = bool\n        clientIdentity = optional(object({\n          crt = string\n          key = string\n        }))\n        ca = optional(string)\n      })\n      auth = optional(object({\n        username      = optional(string)\n        password      = optional(string)\n        auth          = optional(string)\n        identityToken = optional(string)\n      }))\n    })))\n  }))\n  systemDiskEncryption = optional(map(object({\n    provider = string\n    keys = optional(list(object({\n      static = optional(object({\n        passphrase = string\n      }))\n      nodeID = optional(map(string))\n      slot   = optional(number)\n    })))\n    cipher    = optional(string)\n    keySize   = optional(number)\n    blockSize = optional(number)\n    options   = optional(list(string))\n  })))\n  udev = optional(object({\n    rules = list(string)\n  }))\n  logging = optional(object({\n    destinations = list(object({\n      endpoint = string\n      format   = string\n    }))\n  }))\n  kernel = optional(object({\n    modules = list(object({\n      name = string\n    }))\n  }))\n})\n```\n\nSee [MachineConfig](https://www.talos.dev/v1.0/reference/configuration/#machineconfig) section in Talos Configuration Reference for detail description.\n\n### Machine Network Input\n\n```hcl\nobject({\n  nameservers = optional(list(string))\n  extraHostEntries = optional(list(object({\n    ip      = string\n    aliases = list(string)\n  })))\n  kubespan = optional(object({\n    enabled = bool\n  }))\n})\n```\nSee [NetworkConfig](https://www.talos.dev/v1.0/reference/configuration/#networkconfig) section in Talos Configuration Reference for detail description. \n\n[hostname](#machine-network-hostnames-cell) and [interfaces](#machine-network-interfaces-cell) parameters are described in separate inputs.\n\n### Machine Network Interfaces Input\n\n```hcl\nlist(list(object({\n  interface = string\n  addresses = optional(list(string))\n  routes = optional(list(object({\n    network = string\n    gateway = optional(string)\n    source  = optional(string)\n    metric  = optional(number)\n  })))\n  vlans = optional(list(object({\n    addresses = list(string)\n    routes = optional(list(object({\n      network = string\n      gateway = optional(string)\n      source  = optional(string)\n      metric  = optional(number)\n    })))\n    dhcp   = optional(bool)\n    vlanId = number\n    mtu    = number\n    vip = optional(object({\n      ip = string\n      equinixMetal = optional(object({\n        apiToken = string\n      }))\n      hcloud = optional(object({\n        apiToken = string\n      }))\n    }))\n  })))\n  mtu = optional(number)\n  bond = optional(object({\n    interfaces = list(string)\n    mode       = string\n    lacpRate   = string\n  }))\n  dhcp   = optional(bool)\n  ignore = optional(bool)\n  dummy  = optional(bool)\n  dhcpOptions = optional(object({\n    routeMetric = number\n    ipv4        = optional(bool)\n    ipv6        = optional(bool)\n  }))\n  wireguard = optional(object({\n    privateKey   = string\n    listenPort   = number\n    firewallMark = number\n    peers = list(object({\n      publicKey                   = string\n      endpoint                    = string\n      persistentKeepaliveInterval = optional(string)\n      allowedIPs                  = list(string)\n    }))\n  }))\n  vip = optional(object({\n    ip = string\n    equinixMetal = optional(object({\n      apiToken = string\n    }))\n    hcloud = optional(object({\n      apiToken = string\n    }))\n  }))\n})))\n```\n\nSee [Device](https://www.talos.dev/v1.0/reference/configuration/#device) section in Talos Configuration Reference for detail description.\n\nIf [machine_type](#machine-type-cell) = `controlplane` and [create_init_node](#create-init-node-cell) = `true`, not less than one element with one static IP address required.\n\n### Cluster Secrets Input\n\n```hcl\nobject({\n  id     = string\n  secret = string\n  token  = string\n  ca = object({\n    crt = string\n    key = string\n  })\n})\n```\nSee [ClusterConfig](https://www.talos.dev/v1.0/reference/configuration/#clusterconfig) section in Talos Configuration Reference for detail description. \n\n### Control Plane Cluster Secrets Input\n\n```hcl\nobject({\n  aescbcEncryptionSecret = optional(string)\n  aggregatorCA = optional(object({\n    crt = optional(string)\n    key = optional(string)\n  }))\n  serviceAccount = optional(object({\n    key = optional(string)\n  }))\n  etcd = optional(object({\n    ca = object({\n      crt = optional(string)\n      key = optional(string)\n    })\n  }))\n})\n```\n\nSee [ClusterConfig](https://www.talos.dev/v1.0/reference/configuration/#clusterconfig) section in Talos Configuration Reference for detail description.\n\nRequired if [machine_type](#machine-type-cell) = `controlplane`.\n\n### Cluster Control Plane Input\n\n```hcl\nobject({\n  endpoint           = optional(string)\n  localAPIServerPort = optional(number)\n})\n```\n\nSee [ControlPlaneConfig](https://www.talos.dev/v1.0/reference/configuration/#controlplaneconfig) section in Talos Configuration Reference for detail description. \n\nRequired if ([create_init_node](#create-init-node-cell) = `false` or ([create_init_node](#create-init-node-cell) = `true` and [vm_count](#vm-count-cell) \u003e `1`)).\n\n### Cluster Discovery Input\n\n```hcl\nobject({\n  enabled = bool\n  registries = optional(object({\n    kubernetes = optional(object({\n      disabled = bool\n    }))\n    service = optional(object({\n      disabled = bool\n      endpoint = string\n    }))\n  }))\n})\n```\n\nDefault:\n\n```hcl\n{\n  enabled = true\n}\n```\n\nSee [ClusterDiscoveryConfig](https://www.talos.dev/v1.0/reference/configuration/#clusterdiscoveryconfig) section in Talos Configuration Reference for detail description.\n\n### Control Plane Cluster Configuration Input\n\n```hcl\nobject({\n  network = optional(object({\n    cni = optional(object({\n      name = string\n      urls = optional(list(string))\n    }))\n    dnsDomain      = optional(string)\n    podSubnets     = optional(list(string))\n    serviceSubnets = optional(list(string))\n  }))\n  apiServer = optional(object({\n    image     = string\n    extraArgs = optional(map(string))\n    extraVolumes = optional(list(object({\n      hostPath  = string\n      mountPath = string\n      readonly  = bool\n    })))\n    env                      = optional(map(string))\n    certSANs                 = optional(list(string))\n    disablePodSecurityPolicy = optional(bool)\n    admissionControl = optional(list(object({\n      name          = string\n      configuration = map(any)\n    })))\n  }))\n  controllerManager = optional(object({\n    image     = string\n    extraArgs = optional(map(string))\n    extraVolumes = optional(list(object({\n      hostPath  = string\n      mountPath = string\n      readonly  = bool\n    })))\n    env = optional(map(string))\n  }))\n  proxy = optional(object({\n    disabled  = bool\n    image     = optional(string)\n    mode      = optional(string)\n    extraArgs = optional(map(string))\n  }))\n  scheduler = optional(object({\n    image     = string\n    extraArgs = optional(map(string))\n    extraVolumes = optional(list(object({\n      hostPath  = string\n      mountPath = string\n      readonly  = bool\n    })))\n    env = optional(map(string))\n  }))\n  etcd = optional(object({\n    image     = optional(string)\n    extraArgs = optional(map(string))\n    subnet    = optional(string)\n  }))\n  coreDNS = optional(object({\n    disabled = bool\n    image    = optional(string)\n  }))\n  externalCloudProvider = optional(object({\n    enabled   = bool\n    manifests = list(string)\n  }))\n  adminKubeconfig = optional(object({\n    certLifetime = string\n  }))\n  allowSchedulingOnMasters = optional(bool)\n})\n```\n\nSee [ClusterConfig](https://www.talos.dev/v1.0/reference/configuration/#clusterconfig) section in Talos Configuration Reference for detail description. \n\n### Cluster Inline Manifests Input\n\n```hcl\nlist(object({\n  name     = string\n  contents = string\n}))\n```\n\nSee [ClusterConfig](https://www.talos.dev/v1.0/reference/configuration/#clusterconfig) section in Talos Configuration Reference for detail description.\n\n## Outputs\n\n| Name | Description | Type | Sensitive |\n|---|---|---|---|\n| default_ip_addresses | List of nodes IP addresses from VMTools by default. | `list(string)` | `false` |\n\n## Authors\n\nModule is maintained by [Ilya Pozdnov](https://github.com/ilpozzd).\n\n## License\n\nApache 2 Licensed. See [LICENSE](LICENSE) for full details.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Filvpozzd%2Fterraform-talos-vsphere-vm","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Filvpozzd%2Fterraform-talos-vsphere-vm","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Filvpozzd%2Fterraform-talos-vsphere-vm/lists"}