|
| 1 | +locals { |
| 2 | + description = "Created By OpenShift Installer" |
| 3 | + vcenter_key = keys(var.vsphere_vcenters)[0] |
| 4 | +} |
| 5 | + |
| 6 | +provider "vsphere" { |
| 7 | + user = var.vsphere_vcenters[local.vcenter_key].user |
| 8 | + password = var.vsphere_vcenters[local.vcenter_key].password |
| 9 | + vsphere_server = var.vsphere_vcenters[local.vcenter_key].server |
| 10 | + allow_unverified_ssl = false |
| 11 | +} |
| 12 | + |
| 13 | +provider "vsphereprivate" { |
| 14 | + user = var.vsphere_vcenters[local.vcenter_key].user |
| 15 | + password = var.vsphere_vcenters[local.vcenter_key].password |
| 16 | + vsphere_server = var.vsphere_vcenters[local.vcenter_key].server |
| 17 | + allow_unverified_ssl = false |
| 18 | +} |
| 19 | + |
| 20 | +data "vsphere_datacenter" "datacenter" { |
| 21 | + for_each = var.vsphere_failure_domain_map |
| 22 | + name = var.vsphere_failure_domain_map[each.key].topology.datacenter |
| 23 | +} |
| 24 | + |
| 25 | +data "vsphere_compute_cluster" "cluster" { |
| 26 | + for_each = var.vsphere_failure_domain_map |
| 27 | + name = var.vsphere_failure_domain_map[each.key].topology.computeCluster |
| 28 | + datacenter_id = data.vsphere_datacenter.datacenter[each.key].id |
| 29 | +} |
| 30 | + |
| 31 | +data "vsphere_resource_pool" "resource_pool" { |
| 32 | + for_each = var.vsphere_failure_domain_map |
| 33 | + name = var.vsphere_failure_domain_map[each.key].topology.resourcePool |
| 34 | +} |
| 35 | + |
| 36 | +data "vsphere_datastore" "datastore" { |
| 37 | + for_each = var.vsphere_failure_domain_map |
| 38 | + name = var.vsphere_failure_domain_map[each.key].topology.datastore |
| 39 | + datacenter_id = data.vsphere_datacenter.datacenter[each.key].id |
| 40 | +} |
| 41 | + |
| 42 | +// Why is there two datacenters? |
| 43 | +// The vm folder object is defined at the datacenter |
| 44 | +// level. Each failure domain has a datacenter folder pair/ |
| 45 | +// We need to get only the unique datacenter-folder pair |
| 46 | +// and create those folders. See vsphere.go |
| 47 | +// createDatacenterFolderMap |
| 48 | + |
| 49 | +data "vsphere_datacenter" "folder_datacenter" { |
| 50 | + for_each = var.vsphere_folders |
| 51 | + name = each.value.vsphere_datacenter |
| 52 | +} |
| 53 | + |
| 54 | +resource "vsphere_folder" "folder" { |
| 55 | + for_each = var.vsphere_folders |
| 56 | + |
| 57 | + path = each.value.name |
| 58 | + type = "vm" |
| 59 | + datacenter_id = data.vsphere_datacenter.folder_datacenter[each.key].id |
| 60 | + tags = [vsphere_tag.tag.id] |
| 61 | +} |
| 62 | + |
| 63 | +resource "vsphereprivate_import_ova" "import" { |
| 64 | + for_each = var.vsphere_import_ova_failure_domain_map |
| 65 | + |
| 66 | + name = format("%s-rhcos-%s-%s", var.cluster_id, var.vsphere_failure_domain_map[each.key].region, var.vsphere_failure_domain_map[each.key].zone) |
| 67 | + |
| 68 | + filename = var.vsphere_ova_filepath |
| 69 | + cluster = data.vsphere_compute_cluster.cluster[each.key].name |
| 70 | + resource_pool = data.vsphere_resource_pool.resource_pool[each.key].name |
| 71 | + datacenter = data.vsphere_datacenter.datacenter[each.key].name |
| 72 | + datastore = data.vsphere_datastore.datastore[each.key].name |
| 73 | + |
| 74 | + network = var.vsphere_networks[each.key] |
| 75 | + folder = var.vsphere_failure_domain_map[each.key].topology.folder |
| 76 | + tag = vsphere_tag.tag.id |
| 77 | + disk_type = var.vsphere_disk_type |
| 78 | + |
| 79 | + // Since the folder resource might not be ran because there could be |
| 80 | + // user defined folder per failure domain if a folder is created |
| 81 | + // the import resource is not waiting. Adding |
| 82 | + // this depends_on so the import happens after creating folder(s). |
| 83 | + depends_on = [vsphere_folder.folder] |
| 84 | +} |
| 85 | + |
| 86 | +resource "vsphere_tag_category" "category" { |
| 87 | + name = "openshift-${var.cluster_id}" |
| 88 | + description = "Added by openshift-install do not remove" |
| 89 | + cardinality = "SINGLE" |
| 90 | + |
| 91 | + associable_types = [ |
| 92 | + "VirtualMachine", |
| 93 | + "ResourcePool", |
| 94 | + "Folder", |
| 95 | + "Datastore", |
| 96 | + "StoragePod" |
| 97 | + ] |
| 98 | +} |
| 99 | + |
| 100 | +resource "vsphere_tag" "tag" { |
| 101 | + name = var.cluster_id |
| 102 | + category_id = vsphere_tag_category.category.id |
| 103 | + description = "Added by openshift-install do not remove" |
| 104 | +} |
0 commit comments