Skip to content

Commit 90915ce

Browse files
Merge pull request #8433 from neisw/trt-1674-4.17-capi-revert-1
TRT-1674: 4.17 capi revert 1
2 parents 7c00760 + d567c78 commit 90915ce

File tree

22,934 files changed

+11951128
-22
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

22,934 files changed

+11951128
-22
lines changed

data/data/vsphere/OWNERS

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
# See the OWNERS docs: https://git.k8s.io/community/contributors/guide/owners.md
2+
# This file just uses aliases defined in OWNERS_ALIASES.
3+
4+
approvers:
5+
- vsphere-approvers
6+
reviewers:
7+
- vsphere-reviewers
Lines changed: 91 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,91 @@
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+
14+
data "vsphere_datacenter" "datacenter" {
15+
count = 1
16+
name = var.vsphere_control_planes[count.index].workspace.datacenter
17+
}
18+
19+
data "vsphere_resource_pool" "resource_pool" {
20+
count = 1
21+
name = var.vsphere_control_planes[count.index].workspace.resourcePool
22+
}
23+
24+
data "vsphere_datastore" "datastore" {
25+
count = 1
26+
name = var.vsphere_control_planes[count.index].workspace.datastore
27+
datacenter_id = data.vsphere_datacenter.datacenter[count.index].id
28+
}
29+
30+
data "vsphere_virtual_machine" "template" {
31+
count = 1
32+
name = var.vsphere_control_planes[count.index].template
33+
datacenter_id = data.vsphere_datacenter.datacenter[count.index].id
34+
}
35+
36+
resource "vsphere_virtual_machine" "vm_bootstrap" {
37+
count = 1
38+
39+
name = "${var.cluster_id}-bootstrap"
40+
resource_pool_id = data.vsphere_resource_pool.resource_pool[count.index].id
41+
datastore_id = data.vsphere_datastore.datastore[count.index].id
42+
num_cpus = var.vsphere_control_planes[0].numCPUs
43+
num_cores_per_socket = var.vsphere_control_planes[0].numCoresPerSocket
44+
memory = var.vsphere_control_planes[0].memoryMiB
45+
guest_id = data.vsphere_virtual_machine.template[count.index].guest_id
46+
folder = trimprefix(var.vsphere_control_planes[0].workspace.folder, "/${var.vsphere_control_planes[0].workspace.datacenter}/vm")
47+
enable_disk_uuid = "true"
48+
annotation = local.description
49+
wait_for_guest_net_timeout = "0"
50+
wait_for_guest_net_routable = "false"
51+
tags = var.tags
52+
firmware = "efi"
53+
54+
network_interface {
55+
network_id = var.vsphere_control_planes[0].network.devices[0].networkName
56+
}
57+
58+
disk {
59+
label = "disk0"
60+
size = var.vsphere_control_planes[0].diskGiB
61+
62+
eagerly_scrub = data.vsphere_virtual_machine.template[count.index].disks.0.eagerly_scrub
63+
thin_provisioned = data.vsphere_virtual_machine.template[count.index].disks.0.thin_provisioned
64+
}
65+
66+
clone {
67+
template_uuid = data.vsphere_virtual_machine.template[count.index].uuid
68+
}
69+
70+
extra_config = merge(
71+
{
72+
"guestinfo.ignition.config.data" = base64encode(var.ignition_bootstrap)
73+
"guestinfo.ignition.config.data.encoding" = "base64"
74+
"guestinfo.hostname" = "${var.cluster_id}-bootstrap"
75+
"guestinfo.domain" = "${var.cluster_domain}"
76+
"stealclock.enable" = "TRUE"
77+
},
78+
length(var.vsphere_bootstrap_network_kargs) > 0 ?
79+
{
80+
"guestinfo.afterburn.initrd.network-kargs" = "${var.vsphere_bootstrap_network_kargs}"
81+
} : {}
82+
)
83+
84+
// Potential issues on destroy if disk type changes
85+
// underneath terraform.
86+
lifecycle {
87+
ignore_changes = [
88+
disk[0],
89+
]
90+
}
91+
}
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
output "bootstrap_ip" {
2+
value = vsphere_virtual_machine.vm_bootstrap[0].default_ip_address
3+
}
4+
5+
output "bootstrap_moid" {
6+
value = vsphere_virtual_machine.vm_bootstrap[0].moid
7+
}
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
variable "bootstrap_moid" {
2+
type = string
3+
default = ""
4+
}
5+
6+
variable "control_plane_ips" {
7+
type = list(string)
8+
default = []
9+
}
10+
11+
variable "control_plane_moids" {
12+
type = list(string)
13+
default = []
14+
}
15+
16+
variable "tags" {
17+
type = list(any)
18+
}

data/data/vsphere/master/main.tf

Lines changed: 82 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,82 @@
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+
data "vsphere_datacenter" "datacenter" {
14+
count = var.master_count
15+
name = var.vsphere_control_planes[count.index].workspace.datacenter
16+
}
17+
18+
data "vsphere_resource_pool" "resource_pool" {
19+
count = var.master_count
20+
name = var.vsphere_control_planes[count.index].workspace.resourcePool
21+
}
22+
23+
data "vsphere_datastore" "datastore" {
24+
count = var.master_count
25+
name = var.vsphere_control_planes[count.index].workspace.datastore
26+
datacenter_id = data.vsphere_datacenter.datacenter[count.index].id
27+
}
28+
29+
data "vsphere_virtual_machine" "template" {
30+
count = var.master_count
31+
name = var.vsphere_control_planes[count.index].template
32+
datacenter_id = data.vsphere_datacenter.datacenter[count.index].id
33+
}
34+
35+
resource "vsphere_virtual_machine" "vm_master" {
36+
count = var.master_count
37+
38+
name = "${var.cluster_id}-master-${count.index}"
39+
resource_pool_id = data.vsphere_resource_pool.resource_pool[count.index].id
40+
datastore_id = data.vsphere_datastore.datastore[count.index].id
41+
num_cpus = var.vsphere_control_planes[0].numCPUs
42+
num_cores_per_socket = var.vsphere_control_planes[0].numCoresPerSocket
43+
memory = var.vsphere_control_planes[0].memoryMiB
44+
folder = trimprefix(var.vsphere_control_planes[count.index].workspace.folder, "/${var.vsphere_control_planes[count.index].workspace.datacenter}/vm")
45+
46+
guest_id = data.vsphere_virtual_machine.template[count.index].guest_id
47+
48+
enable_disk_uuid = "true"
49+
annotation = local.description
50+
wait_for_guest_net_timeout = "0"
51+
wait_for_guest_net_routable = "false"
52+
tags = var.tags
53+
firmware = "efi"
54+
55+
network_interface {
56+
network_id = var.vsphere_control_planes[count.index].network.devices[0].networkName
57+
}
58+
59+
disk {
60+
label = "disk0"
61+
size = var.vsphere_control_planes[0].diskGiB
62+
eagerly_scrub = data.vsphere_virtual_machine.template[count.index].disks.0.eagerly_scrub
63+
thin_provisioned = data.vsphere_virtual_machine.template[count.index].disks.0.thin_provisioned
64+
}
65+
66+
clone {
67+
template_uuid = data.vsphere_virtual_machine.template[count.index].uuid
68+
}
69+
70+
extra_config = merge(
71+
{
72+
"guestinfo.ignition.config.data" = base64encode(var.ignition_master)
73+
"guestinfo.ignition.config.data.encoding" = "base64"
74+
"guestinfo.hostname" = "${var.cluster_id}-master-${count.index}"
75+
"stealclock.enable" = "TRUE"
76+
},
77+
length(var.vsphere_control_plane_network_kargs) > 0 ?
78+
{
79+
"guestinfo.afterburn.initrd.network-kargs" = element(var.vsphere_control_plane_network_kargs, count.index)
80+
} : {}
81+
)
82+
}
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
output "control_plane_ips" {
2+
value = [for k, v in vsphere_virtual_machine.vm_master : v.default_ip_address]
3+
}
4+
5+
output "control_plane_moids" {
6+
value = [for k, v in vsphere_virtual_machine.vm_master : v.moid]
7+
}
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
variable "bootstrap_moid" {
2+
type = string
3+
default = ""
4+
}
5+
6+
variable "tags" {
7+
type = list(any)
8+
}
Lines changed: 104 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,104 @@
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+
}
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
output "cluster_domain" {
2+
value = var.cluster_domain
3+
}
4+
output "cluster_id" {
5+
value = var.cluster_id
6+
}
7+
output "tags" {
8+
value = [vsphere_tag.tag.id]
9+
}
Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
variable "vsphere_disk_type" {
2+
type = string
3+
}
4+
5+
variable "vsphere_vcenters" {
6+
type = map(any)
7+
default = {}
8+
}
9+
10+
variable "vsphere_networks" {
11+
type = map(any)
12+
default = {}
13+
}
14+
15+
variable "vsphere_folders" {
16+
type = map(any)
17+
default = {}
18+
}
19+
20+
variable "vsphere_control_planes" {
21+
type = list(any)
22+
default = []
23+
}
24+
25+
variable "vsphere_ova_filepath" {
26+
type = string
27+
description = "This is the filepath to the ova file that will be imported into vSphere."
28+
}
29+
variable "vsphere_import_ova_failure_domain_map" {
30+
type = map(any)
31+
default = {}
32+
}
33+
variable "vsphere_failure_domain_map" {
34+
type = map(any)
35+
default = {}
36+
}
37+
38+
variable "vsphere_control_plane_network_kargs" {
39+
type = list(string)
40+
default = []
41+
}
42+
43+
variable "vsphere_bootstrap_network_kargs" {
44+
type = string
45+
}

0 commit comments

Comments
 (0)