You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

109 lines
2.9 KiB

  1. resource "vsphere_virtual_machine" "worker" {
  2. for_each = {
  3. for name, machine in var.machines :
  4. name => machine
  5. if machine.node_type == "worker"
  6. }
  7. name = each.key
  8. resource_pool_id = var.pool_id
  9. datastore_id = var.datastore_id
  10. num_cpus = var.worker_cores
  11. memory = var.worker_memory
  12. memory_reservation = var.worker_memory
  13. guest_id = var.guest_id
  14. enable_disk_uuid = "true"
  15. scsi_type = var.scsi_type
  16. folder = var.folder
  17. firmware = var.firmware
  18. hardware_version = var.hardware_version
  19. wait_for_guest_net_routable = false
  20. network_interface {
  21. network_id = var.network_id
  22. adapter_type = var.adapter_type
  23. }
  24. disk {
  25. label = "disk0"
  26. size = var.worker_disk_size
  27. thin_provisioned = var.disk_thin_provisioned
  28. }
  29. lifecycle {
  30. ignore_changes = [disk]
  31. }
  32. clone {
  33. template_uuid = var.template_id
  34. }
  35. cdrom {
  36. client_device = true
  37. }
  38. vapp {
  39. properties = {
  40. "user-data" = base64encode(templatefile("${path.module}/templates/cloud-init.tmpl", { ip = each.value.ip,
  41. gw = var.gateway,
  42. dns = var.dns_primary,
  43. ssh_public_keys = var.ssh_public_keys}))
  44. }
  45. }
  46. }
  47. resource "vsphere_virtual_machine" "master" {
  48. for_each = {
  49. for name, machine in var.machines :
  50. name => machine
  51. if machine.node_type == "master"
  52. }
  53. name = each.key
  54. resource_pool_id = var.pool_id
  55. datastore_id = var.datastore_id
  56. num_cpus = var.master_cores
  57. memory = var.master_memory
  58. memory_reservation = var.master_memory
  59. guest_id = var.guest_id
  60. enable_disk_uuid = "true"
  61. scsi_type = var.scsi_type
  62. folder = var.folder
  63. firmware = var.firmware
  64. hardware_version = var.hardware_version
  65. network_interface {
  66. network_id = var.network_id
  67. adapter_type = var.adapter_type
  68. }
  69. disk {
  70. label = "disk0"
  71. size = var.master_disk_size
  72. thin_provisioned = var.disk_thin_provisioned
  73. }
  74. lifecycle {
  75. ignore_changes = [disk]
  76. }
  77. clone {
  78. template_uuid = var.template_id
  79. }
  80. cdrom {
  81. client_device = true
  82. }
  83. vapp {
  84. properties = {
  85. "user-data" = base64encode(templatefile("${path.module}/templates/cloud-init.tmpl", { ip = each.value.ip,
  86. gw = var.gateway,
  87. dns = var.dns_primary,
  88. ssh_public_keys = var.ssh_public_keys}))
  89. }
  90. }
  91. }