Werkwijze Voor: ontwikkelaars

Terraform vSphere provider

De Terraform vSphere provider configureren voor de controller, de resources die tegen Kyvernon zijn geverifieerd en de bekende lacunes, tags inbegrepen.

De Terraform vSphere provider beheert Kyvernon via de SOAP-, REST- en storage policy-endpoints van de controller. De vastgelegde verificatie gebruikte Terraform 1.17.1 met de provider hashicorp/vsphere 2.17.1. De provider is gedocumenteerd op registry.terraform.io.

Voordat u begint

  • Schakel de compatibiliteitsendpoints in: Instellingen van de compatibiliteitsendpoints.
  • Bepaal of uw configuratie tags gebruikt (vsphere_tag_category, vsphere_tag en het argument tags). De provider schakelt tags alleen in wanneer het endpoint de productnaam van vCenter Server van de leverancier meldt. In Kyvernon vraagt dat de instelling product_name, die standaard niet is ingesteld. Al het andere werkt met de standaardnaam.
  • De controller gebruikt een certificaat dat de provider standaard niet kent: stel voor een test allow_unverified_ssl = true in, of vertrouw het certificaat op de machine waarop Terraform draait.

Met de CLI

Een configuratie zoals die voor vSphere wordt geschreven. De namen van de inventarisobjecten zijn die welke de console toont:

HCL
terraform {
  required_providers {
    vsphere = {
      source  = "hashicorp/vsphere"
      version = "2.17.1"
    }
  }
}

provider "vsphere" {
  vsphere_server       = "controller.example.com:8443"
  user                 = var.vsphere_user
  password             = var.vsphere_password
  allow_unverified_ssl = true
}

data "vsphere_datacenter" "dc" {
  name = "Datacenter"
}

data "vsphere_compute_cluster" "cluster" {
  name          = "Cluster-01"
  datacenter_id = data.vsphere_datacenter.dc.id
}

data "vsphere_datastore" "ds" {
  name          = "ds-local-01"
  datacenter_id = data.vsphere_datacenter.dc.id
}

data "vsphere_network" "net" {
  name          = "vm-net-01"
  datacenter_id = data.vsphere_datacenter.dc.id
}

resource "vsphere_virtual_machine" "web" {
  name                       = "prod-web-01"
  resource_pool_id           = data.vsphere_compute_cluster.cluster.resource_pool_id
  datastore_id               = data.vsphere_datastore.ds.id
  num_cpus                   = 2
  memory                     = 2048
  guest_id                   = "otherLinux64Guest"
  firmware                   = "efi"
  wait_for_guest_net_timeout = 0

  network_interface {
    network_id = data.vsphere_network.net.id
  }

  disk {
    label = "disk0"
    size  = 20
  }
}
Shell
terraform init
terraform plan
terraform apply

Stel wait_for_guest_net_timeout = 0 in wanneer er in de gast geen gastagent draait: de provider zou anders wachten op een adres dat de virtuele machine niet kan melden. Zonder gemeld adres plant de provider bij elk plan een wijziging van default_ip_address.

Geverifieerde resources

De vastgelegde reeks is init, plan, apply, plan (geen wijzigingen), apply van een wijziging, plan (geen wijzigingen) en destroy. De configuratie gebruikte de data sources voor datacenter, cluster, host, datastore, netwerk en resourcegroep, en de resources vsphere_folder, vsphere_virtual_machine (UEFI, een thin schijf, een netwerkadapter, een annotatie), vsphere_virtual_machine_snapshot, vsphere_tag_category en vsphere_tag. De wijziging voegde een vCPU, geheugen, een tweede schijf, een vergrote schijf, een tag en een snapshot toe. De details per stap staan in geverifieerde tools.

Met de standaardproductnaam slagen de stappen init, plan en destroy. apply stopt met de melding dat tags vCenter Server van de leverancier vereisen, omdat de configuratie tags gebruikte. Met product_name ingesteld slaagde de volledige reeks.

Bekende lacunes

  • Tags vragen product_name (zie hierboven).
  • De adaptertypen vmxnet3, e1000e en e1000 worden geaccepteerd en aan de gast aangeboden als virtio-netwerkadapters. Het type sriov wordt geweigerd.
  • De storage policy-resources en vApps van de provider worden niet aangeboden. De service voor storage policies antwoordt alleen met zijn service content.
  • Instellingen zonder betekenis in Kyvernon, bijvoorbeeld latency sensitivity of memory hot-add, worden opgeslagen en teruggelezen en hebben geen effect.
  • Een wijziging van CPU of geheugen van een draaiende virtuele machine schakelt de machine eerst uit.

Versie 0.1. Laatst gewijzigd: 2026-11-13