deploy-templates/vsphere/main.tf (90 lines of code) (raw):
resource "vsphere_virtual_disk" "virtual_disk" {
size = var.vsphere_minio_volume_size
type = "thin"
vmdk_path = "${var.vsphere_folder}-platform-minio/${var.cluster_name}-platform-minio-volume.vmdk"
create_directories = true
datacenter = data.vsphere_datacenter.dc.name
datastore = data.vsphere_datastore.datastore.name
}
resource "vsphere_virtual_machine" "vm" {
name = "${var.cluster_name}-platform-minio"
resource_pool_id = data.vsphere_resource_pool.pool.id
datastore_id = data.vsphere_datastore.datastore.id
folder = "${var.vsphere_datacenter}/vm/${var.vsphere_folder}"
num_cpus = 4
memory = 8192
guest_id = data.vsphere_virtual_machine.template.guest_id
wait_for_guest_net_timeout = -1
scsi_type = data.vsphere_virtual_machine.template.scsi_type
network_interface {
network_id = data.vsphere_network.network.id
}
disk {
unit_number = 0
label = "disk0"
size = var.vsphere_minio_volume_os_size
thin_provisioned = true
}
disk {
attach = true
unit_number = 1
label = "disk1"
path = vsphere_virtual_disk.virtual_disk.vmdk_path
datastore_id = data.vsphere_datastore.datastore.id
}
clone {
template_uuid = data.vsphere_virtual_machine.template.id
customize {
linux_options {
host_name = "${var.cluster_name}-platform-minio"
domain = var.baseDomain
}
network_interface {
ipv4_address = var.vsphere_minio_instance_ip
ipv4_netmask = 24
}
ipv4_gateway = var.vsphere_network_gateway
}
}
}
resource "null_resource" "minio_userdata" {
triggers = {
always_run = "${timestamp()}"
}
connection {
type = "ssh"
user = "mdtuddm"
private_key = "${file("./packer/private.key")}"
host = var.vsphere_minio_instance_ip
}
provisioner "file" {
source = "./scripts/userdata.sh"
destination = "/tmp/userdata.sh"
}
provisioner "remote-exec" {
inline = [
"export minio_root_password=${random_password.password.result}",
"export minio_root_user=${var.minio_root_user}",
"export minio_url=${var.minio_url}",
"export minio_volume_path=${var.minio_volume_path}",
"export minio_local_mount_path=${var.minio_local_mount_path}",
"export bucket_name=${var.backup_bucket_name}",
"chmod +x /tmp/userdata.sh",
"sudo -E /tmp/userdata.sh"
]
}
depends_on = [vsphere_virtual_machine.vm]
}
resource "null_resource" "minio_init" {
triggers = {
always_run = "${timestamp()}"
}
provisioner "local-exec" {
command = var.wait_for_cluster_cmd
interpreter = var.wait_for_cluster_interpreter
environment = {
ENDPOINT = "http://${var.vsphere_minio_instance_ip}:9001"
}
}
depends_on = [null_resource.minio_userdata]
}