Skip to content

Instantly share code, notes, and snippets.

@vidkun
Created January 8, 2018 13:08
Show Gist options
  • Save vidkun/883e1e69c254ba04843379594de886b7 to your computer and use it in GitHub Desktop.
Save vidkun/883e1e69c254ba04843379594de886b7 to your computer and use it in GitHub Desktop.
# Configure the VMware vSphere Provider
provider "vsphere" {
user = "${var.vsphere_user}"
password = "${var.vsphere_password}"
vsphere_server = "${var.vsphere_server}"
allow_unverified_ssl = true
}
data "vsphere_datacenter" "dc" {
name = "MYDC"
}
data "vsphere_datastore" "datastore" {
name = "vsanDatastore"
datacenter_id = "${data.vsphere_datacenter.dc.id}"
}
data "vsphere_resource_pool" "pool" {
name = "Cluster/Resources"
datacenter_id = "${data.vsphere_datacenter.dc.id}"
}
data "vsphere_network" "network" {
name = "VM Network"
datacenter_id = "${data.vsphere_datacenter.dc.id}"
}
data "vsphere_virtual_machine" "template" {
name = "rhel74-template"
datacenter_id = "${data.vsphere_datacenter.dc.id}"
}
# Create a virtual machine within the folder
resource "vsphere_virtual_machine" "my-test-vm" {
count = 3
name = "${format("my-test-vm%02d", count.index + 1)}"
num_cpus = 24 # 16 / 48
memory = 131072 # (128GB) / 16384 (16GB) / 65536 (64GB)
resource_pool_id = "${data.vsphere_resource_pool.pool.id}"
datastore_id = "${data.vsphere_datastore.datastore.id}"
guest_id = "${data.vsphere_virtual_machine.template.guest_id}"
scsi_type = "${data.vsphere_virtual_machine.template.scsi_type}"
network_interface {
network_id = "${data.vsphere_network.network.id}"
adapter_type = "${data.vsphere_virtual_machine.template.network_interface_types[0]}"
}
disk {
name = "${format("my-test-vm%02d", count.index + 1)}.vmdk"
size = "${data.vsphere_virtual_machine.template.disks.0.size}"
eagerly_scrub = "${data.vsphere_virtual_machine.template.disks.0.eagerly_scrub}"
thin_provisioned = "${data.vsphere_virtual_machine.template.disks.0.thin_provisioned}"
datastore_id = "${data.vsphere_datastore.datastore.id}"
}
disk {
datastore_id = "${data.vsphere_datastore.datastore.id}"
size = "20"
name = "${format("my-test-vm%02d", count.index + 1)}-datavol01.vmdk"
thin_provisioned = "false"
io_reservation = "1000"
unit_number = 1
}
clone {
template_uuid = "${data.vsphere_virtual_machine.template.id}"
timeout = 360
customize {
timeout = 0
linux_options {
host_name = "${format("my-test-vm%02d", count.index + 1)}"
domain = "sub.mydomain.com"
time_zone = "America/Chicago"
}
network_interface {
ipv4_address = "10.2.0.${51 + count.index}"
ipv4_netmask = 24
}
ipv4_gateway = "10.2.0.1"
dns_server_list = "${var.my_nameservers}"
}
}
# connection {
# type = "ssh"
# user = "${var.vmuser}"
# password = "${var.vmpassword}"
# }
#
# provisioner "file" {
# source = "files/bootstrap.sh"
# destination = "/tmp/bootstrap.sh"
# }
#
# provisioner "remote-exec" {
# inline = [
# "chmod +x /tmp/bootstrap.sh",
# "/tmp/bootstrap.sh",
# ]
# }
}
# Create a virtual machine within the folder
resource "vsphere_virtual_machine" "my-vm" {
count = 3
name = "${format("my-vm%02d", count.index + 1)}"
num_cpus = 24 # 16 / 48
memory = 131072 # (128GB) / 16384 (16GB) / 65536 (64GB)
resource_pool_id = "${data.vsphere_resource_pool.pool.id}"
datastore_id = "${data.vsphere_datastore.datastore.id}"
guest_id = "${data.vsphere_virtual_machine.template.guest_id}"
scsi_type = "${data.vsphere_virtual_machine.template.scsi_type}"
network_interface {
network_id = "${data.vsphere_network.network.id}"
adapter_type = "${data.vsphere_virtual_machine.template.network_interface_types[0]}"
}
disk {
name = "${format("my-vm%02d", count.index + 1)}.vmdk"
size = "${data.vsphere_virtual_machine.template.disks.0.size}"
eagerly_scrub = "${data.vsphere_virtual_machine.template.disks.0.eagerly_scrub}"
thin_provisioned = "${data.vsphere_virtual_machine.template.disks.0.thin_provisioned}"
datastore_id = "${data.vsphere_datastore.datastore.id}"
}
disk {
datastore_id = "${data.vsphere_datastore.datastore.id}"
size = "200"
name = "${format("my-vm%02d", count.index + 1)}-datavol01.vmdk"
thin_provisioned = "false"
io_reservation = "1000"
unit_number = 1
}
clone {
template_uuid = "${data.vsphere_virtual_machine.template.id}"
timeout = 360
customize {
timeout = 0
linux_options {
host_name = "${format("my-vm%02d", count.index + 1)}"
domain = "sub.mydomain.com"
time_zone = "America/Chicago"
}
network_interface {
ipv4_address = "10.2.0.${31 + count.index}"
ipv4_netmask = 24
}
ipv4_gateway = "10.2.0.1"
dns_server_list = "${var.my_nameservers}"
}
}
# connection {
# type = "ssh"
# user = "${var.vmuser}"
# password = "${var.vmpassword}"
# }
#
# provisioner "file" {
# source = "files/bootstrap.sh"
# destination = "/tmp/bootstrap.sh"
# }
#
# provisioner "remote-exec" {
# inline = [
# "chmod +x /tmp/bootstrap.sh",
# "/tmp/bootstrap.sh",
# ]
# }
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment