Skip to content

Instantly share code, notes, and snippets.

@ryanwalder
Created March 12, 2018 15:29
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save ryanwalder/311e9139d45f091a1d767276990b3cb8 to your computer and use it in GitHub Desktop.
Save ryanwalder/311e9139d45f091a1d767276990b3cb8 to your computer and use it in GitHub Desktop.
variable "consul_machine_name" { default = "mgtcfgconl" }
resource "vsphere_virtual_machine" "consul" {
count = "3"
name = "${format("%v%02d%v", var.consul_machine_name, count.index + 1, var.environment)}"
num_cpus = "2"
memory = "1024"
guest_id = "${var.guest_id}"
datastore_id = "${data.vsphere_datastore.datastore.id}"
resource_pool_id = "${data.vsphere_resource_pool.pool.id}"
folder = "${var.vm_folder}"
network_interface {
network_id = "${data.vsphere_network.cpt-mgt-cfg-con.id}"
adapter_type = "vmxnet3"
}
scsi_type = "${data.vsphere_virtual_machine.template.scsi_type}"
disk {
label = "disk0"
size = "8"
}
clone {
template_uuid = "${data.vsphere_virtual_machine.template.id}"
customize {
linux_options {
host_name = "${format("%v%02d%v", var.consul_machine_name, count.index + 1, var.environment)}"
domain = "${var.domain}"
time_zone = "${var.timezone}"
}
dns_server_list = "${var.dns_servers}"
dns_suffix_list = "${var.dns_search}"
network_interface {}
}
}
connection {
type = "ssh"
user = "${var.ssh_user}"
password = "${var.ssh_pass}"
}
provisioner "file" {
content = "${data.template_file.minion.rendered}"
destination = "/root/bootstrap.sh"
}
provisioner "remote-exec" {
inline = [
"chmod 744 /root/bootstrap.sh",
"/root/bootstrap.sh",
"rm -rf /root/bootstrap.sh"
]
}
depends_on = [
"vsphere_virtual_machine.saltmaster"
]
}
variable "jenkinsmaster_machine_name" { default = "infjenmasl" }
resource "vsphere_virtual_machine" "jenkinsmaster" {
count = "1"
name = "${format("%v%02d%v", var.jenkinsmaster_machine_name, count.index + 1, var.environment)}"
num_cpus = "2"
memory = "4096"
guest_id = "${var.guest_id}"
datastore_id = "${data.vsphere_datastore.datastore.id}"
resource_pool_id = "${data.vsphere_resource_pool.pool.id}"
folder = "${var.vm_folder}"
network_interface {
network_id = "${data.vsphere_network.cpt-inf-tst-rya.id}"
adapter_type = "vmxnet3"
}
scsi_type = "${data.vsphere_virtual_machine.template.scsi_type}"
disk {
label = "disk0"
size = "8"
}
clone {
template_uuid = "${data.vsphere_virtual_machine.template.id}"
customize {
linux_options {
host_name = "${format("%v%02d%v", var.consul_machine_name, count.index + 1, var.environment)}"
domain = "${var.domain}"
time_zone = "${var.timezone}"
}
dns_server_list = "${var.dns_servers}"
dns_suffix_list = "${var.dns_search}"
network_interface {}
}
}
connection {
type = "ssh"
user = "${var.ssh_user}"
password = "${var.ssh_pass}"
}
provisioner "file" {
content = "${data.template_file.minion.rendered}"
destination = "/root/bootstrap.sh"
}
provisioner "remote-exec" {
inline = [
"chmod 744 /root/bootstrap.sh",
"/root/bootstrap.sh",
"rm -rf /root/bootstrap.sh"
]
}
depends_on = [
"vsphere_virtual_machine.saltmaster",
"vsphere_virtual_machine.consul"
]
}
variable "jenkinsslave_machine_name" { default = "infjenslal" }
data "consul_keys" "jenkinsslave" {
key {
name = "count"
path = "terraform/jenkinsslave/count"
default = "2"
}
depends_on = [
"vsphere_virtual_machine.consul"
]
}
resource "vsphere_virtual_machine" "jenkinsslave" {
count = "${data.consul_keys.jenkinsslave.var.count}"
name = "${format("%v%02d%v", var.jenkinsslave_machine_name, count.index + 1, var.environment)}"
num_cpus = "4"
memory = "8192"
guest_id = "${var.guest_id}"
datastore_id = "${data.vsphere_datastore.datastore.id}"
resource_pool_id = "${data.vsphere_resource_pool.pool.id}"
folder = "${var.vm_folder}"
network_interface {
network_id = "${data.vsphere_network.cpt-inf-tst-rya.id}"
adapter_type = "vmxnet3"
}
scsi_type = "${data.vsphere_virtual_machine.template.scsi_type}"
disk {
label = "disk0"
size = "8"
}
clone {
template_uuid = "${data.vsphere_virtual_machine.template.id}"
customize {
linux_options {
host_name = "${format("%v%02d%v", var.consul_machine_name, count.index + 1, var.environment)}"
domain = "${var.domain}"
time_zone = "${var.timezone}"
}
dns_server_list = "${var.dns_servers}"
dns_suffix_list = "${var.dns_search}"
network_interface {}
}
}
connection {
type = "ssh"
user = "${var.ssh_user}"
password = "${var.ssh_pass}"
}
provisioner "file" {
content = "${data.template_file.minion.rendered}"
destination = "/root/bootstrap.sh"
}
provisioner "remote-exec" {
inline = [
"chmod 744 /root/bootstrap.sh",
"/root/bootstrap.sh",
"rm -rf /root/bootstrap.sh"
]
}
depends_on = [
"vsphere_virtual_machine.jenkinsmaster",
"data.consul_keys.jenkinsslave"
]
}
provider "consul" {
address = "10.120.0.12:8500"
datacenter = "dc1"
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment