Skip to content

Instantly share code, notes, and snippets.

@ryancbutler
Created July 5, 2022 16:10
Show Gist options
  • Save ryancbutler/94706fd6867858cd44c37a4b9381c7a3 to your computer and use it in GitHub Desktop.
Save ryancbutler/94706fd6867858cd44c37a4b9381c7a3 to your computer and use it in GitHub Desktop.
ADC with Terraform
terraform {
required_version = ">= 1.0.0"
required_providers {
vsphere = {
source = "hashicorp/vsphere"
version = "~> 2.0.2"
}
random = {
source = "hashicorp/random"
version = ">= 3.1.0"
}
template = {
source = "hashicorp/template"
version = ">= 2.2.0"
}
}
}
provider "vsphere" {
user = var.vsphere_user
password = var.vsphere_password
vsphere_server = var.vsphere_server
# If you have a self-signed cert
allow_unverified_ssl = true
}
data "vsphere_datacenter" "dc" {
name = var.vsphere_datacenter
}
data "vsphere_datastore" "datastore" {
name = var.vsphere_datastore
datacenter_id = data.vsphere_datacenter.dc.id
}
data "vsphere_host" "host" {
name = "192.168.1.247"
datacenter_id = data.vsphere_datacenter.dc.id
}
data "vsphere_resource_pool" "pool" {
name = var.vsphere_rp
datacenter_id = data.vsphere_datacenter.dc.id
}
data "vsphere_network" "network" {
name = var.vm_network
datacenter_id = data.vsphere_datacenter.dc.id
}
data "vsphere_ovf_vm_template" "ovfLocal" {
name = "foo"
disk_provisioning = "thin"
resource_pool_id = data.vsphere_resource_pool.pool.id
datastore_id = data.vsphere_datastore.datastore.id
host_system_id = data.vsphere_host.host.id
local_ovf_path = "./NSVPX-ESX-13.1-24.38_nc_64.ovf"
ovf_network_map = {
"VM Network" : data.vsphere_network.network.id
}
}
resource "vsphere_virtual_machine" "vm" {
name = var.vm_name
datacenter_id = data.vsphere_datacenter.dc.id
resource_pool_id = data.vsphere_resource_pool.pool.id
datastore_id = data.vsphere_datastore.datastore.id
host_system_id = data.vsphere_host.host.id
folder = var.vm_folder
num_cpus = data.vsphere_ovf_vm_template.ovfLocal.num_cpus
num_cores_per_socket = data.vsphere_ovf_vm_template.ovfLocal.num_cores_per_socket
memory = data.vsphere_ovf_vm_template.ovfLocal.memory
guest_id = data.vsphere_ovf_vm_template.ovfLocal.guest_id
scsi_type = data.vsphere_ovf_vm_template.ovfLocal.scsi_type
nested_hv_enabled = data.vsphere_ovf_vm_template.ovfLocal.nested_hv_enabled
dynamic "network_interface" {
for_each = data.vsphere_ovf_vm_template.ovfLocal.ovf_network_map
content {
network_id = network_interface.value
}
}
wait_for_guest_net_timeout = -1
wait_for_guest_ip_timeout = 5
ovf_deploy {
allow_unverified_ssl_cert = false
local_ovf_path = data.vsphere_ovf_vm_template.ovfLocal.local_ovf_path
disk_provisioning = data.vsphere_ovf_vm_template.ovfLocal.disk_provisioning
ovf_network_map = data.vsphere_ovf_vm_template.ovfLocal.ovf_network_map
}
extra_config = {
"machine.id" = "ip=192.168.2.66&netmask=255.255.255.0&gateway=192.168.2.254"
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment