Skip to content

Commit f3d9c1f

Browse files
Merge pull request #8328 from vr4manta/SPLAT-1599
SPLAT-1599: Added support for secure boot and storage policies to UPI pwsh.
2 parents e6b59d5 + 1b22f93 commit f3d9c1f

File tree

4 files changed

+50
-19
lines changed

4 files changed

+50
-19
lines changed

upi/vsphere/powercli/upi-destroy.ps1

Lines changed: 19 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,21 @@ foreach ($template in $templates) {
3636
Remove-Template -Template $($template.Entity) -DeletePermanently -confirm:$false
3737
}
3838

39-
# Clean up storage policy
39+
# Clean up all resource pools
40+
$rps = Get-TagAssignment -Tag $tag -Entity (Get-ResourcePool)
41+
foreach ($rp in $rps) {
42+
Write-Output "Removing resource pool $($rp.Entity)"
43+
Remove-ResourcePool -ResourcePool $($rp.Entity) -confirm:$false
44+
}
45+
46+
# Clean up all folders
47+
$folders = Get-TagAssignment -Tag $tag -Entity (Get-Folder)
48+
foreach ($folder in $folders) {
49+
Write-Output "Removing folder $($folder.Entity)"
50+
Remove-Folder -Folder $($folder.Entity) -DeletePermanently -confirm:$false
51+
}
52+
53+
# Clean up storage policy. Must be done after all other object cleanup except tag/tagCategory
4054
$storagePolicies = Get-SpbmStoragePolicy -Tag $tag
4155

4256
foreach ($policy in $storagePolicies) {
@@ -47,7 +61,7 @@ foreach ($policy in $storagePolicies) {
4761
if ($splitResults.Count -eq 2) {
4862
$clusterId = $splitResults[1]
4963
if ($clusterId -ne "") {
50-
Write-Host $clusterId
64+
Write-Host "Checking for storage policies for "$clusterId
5165
$clusterInventory = @(Get-Inventory -Name "$($clusterId)*" -ErrorAction Continue)
5266

5367
if ($clusterInventory.Count -eq 0) {
@@ -61,20 +75,8 @@ foreach ($policy in $storagePolicies) {
6175
}
6276
}
6377

64-
# Clean up all resource pools
65-
$rps = Get-TagAssignment -Tag $tag -Entity (Get-ResourcePool)
66-
foreach ($rp in $rps) {
67-
Write-Output "Removing resource pool $($rp.Entity)"
68-
Remove-ResourcePool -ResourcePool $($rp.Entity) -confirm:$false
69-
}
70-
71-
# Clean up all folders
72-
$folders = Get-TagAssignment -Tag $tag -Entity (Get-Folder)
73-
foreach ($folder in $folders) {
74-
Write-Output "Removing folder $($folder.Entity)"
75-
Remove-Folder -Folder $($folder.Entity) -DeletePermanently -confirm:$false
76-
}
77-
7878
# Clean up tags
7979
Remove-Tag -Tag $tag -confirm:$false
80-
Remove-TagCategory -Category $tagCategory -confirm:$false
80+
Remove-TagCategory -Category $tagCategory -confirm:$false
81+
82+
Disconnect-VIServer -Server $vcenter -Force:$true -Confirm:$false

upi/vsphere/powercli/upi-functions.ps1

Lines changed: 27 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,8 @@ function New-OpenShiftVM {
1717
$NumCpu,
1818
$ReferenceSnapshot,
1919
$ResourcePool,
20+
$SecureBoot,
21+
$StoragePolicy,
2022
[Parameter(Mandatory=$true)]
2123
$Tag,
2224
[Parameter(Mandatory=$true)]
@@ -35,6 +37,7 @@ function New-OpenShiftVM {
3537
$args.Remove('Network') > $null
3638
$args.Remove('MemoryMB') > $null
3739
$args.Remove('NumCpu') > $null
40+
$args.Remove('SecureBoot') > $null
3841
foreach ($key in $args.Keys){
3942
if ($NULL -eq $($args.Item($key)) -or $($args.Item($key)) -eq "") {
4043
$args.Remove($key) > $null
@@ -76,6 +79,12 @@ function New-OpenShiftVM {
7679
New-AdvancedSetting -Entity $vm -name "guestinfo.afterburn.initrd.network-kargs" -value $kargs -Confirm:$false -Force > $null
7780
}
7881

82+
# Enable secure boot if needed
83+
if ($true -eq $SecureBoot)
84+
{
85+
Set-SecureBoot -VM $vm
86+
}
87+
7988
return $vm
8089
}
8190

@@ -289,7 +298,7 @@ function New-OpenshiftVMs {
289298

290299
# Clone the virtual machine from the imported template
291300
#$vm = New-OpenShiftVM -Template $template -Name $name -ResourcePool $rp -Datastore $datastoreInfo -Location $folder -LinkedClone -ReferenceSnapshot $snapshot -IgnitionData $ignition -Tag $tag -Networking $network -NumCPU $numCPU -MemoryMB $memory
292-
$vm = New-OpenShiftVM -Template $template -Name $name -ResourcePool $rp -Datastore $datastoreInfo -Location $folder -IgnitionData $ignition -Tag $tag -Networking $network -Network $node.network -NumCPU $numCPU -MemoryMB $memory
301+
$vm = New-OpenShiftVM -Template $template -Name $name -ResourcePool $rp -Datastore $datastoreInfo -Location $folder -IgnitionData $ignition -Tag $tag -Networking $network -Network $node.network -SecureBoot $secureboot -StoragePolicy $storagepolicy -NumCPU $numCPU -MemoryMB $memory
293302

294303
# Assign tag so we can later clean up
295304
# New-TagAssignment -Entity $vm -Tag $tag
@@ -321,4 +330,21 @@ function New-OpenshiftVMs {
321330
foreach ($job in $jobs) {
322331
Receive-Job -Job $job
323332
}
333+
}
334+
335+
# This function is used to set secure boot.
336+
function Set-SecureBoot {
337+
param(
338+
$VM
339+
)
340+
341+
$spec = New-Object VMware.Vim.VirtualMachineConfigSpec
342+
$spec.Firmware = [VMware.Vim.GuestOsDescriptorFirmwareType]::efi
343+
344+
$boot = New-Object VMware.Vim.VirtualMachineBootOptions
345+
$boot.EfiSecureBootEnabled = $true
346+
347+
$spec.BootOptions = $boot
348+
349+
$VM.ExtensionData.ReconfigVM($spec)
324350
}

upi/vsphere/powercli/upi.ps1

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -240,7 +240,7 @@ $template = Get-VM -Name $vm_template -Location $fds[0].datacenter
240240
# Create LB for Cluster
241241
$ignition = [Convert]::ToBase64String([System.Text.Encoding]::UTF8.GetBytes((New-LoadBalancerIgnition $sshKey)))
242242
$network = New-VMNetworkConfig -Hostname "$($metadata.infraID)-lb" -IPAddress $lb_ip_address -Netmask $netmask -Gateway $gateway -DNS $dns -Network $failure_domains[0].network
243-
$vm = New-OpenShiftVM -IgnitionData $ignition -Name "$($metadata.infraID)-lb" -Template $template -ResourcePool $rp -Datastore $datastoreInfo -Location $folder -Tag $tag -Networking $network -Network $($fds[0].network) -MemoryMB 8192 -NumCpu 4
243+
$vm = New-OpenShiftVM -IgnitionData $ignition -Name "$($metadata.infraID)-lb" -Template $template -ResourcePool $rp -Datastore $datastoreInfo -Location $folder -Tag $tag -Networking $network -Network $($fds[0].network) -SecureBoot $secureboot -StoragePolicy $storagepolicy -MemoryMB 8192 -NumCpu 4
244244
$vm | Start-VM
245245

246246
# Take the $virtualmachines defined in upi-variables and convert to a powershell object
@@ -517,5 +517,6 @@ if ($waitForComplete)
517517

518518
Get-Job | Remove-Job
519519

520+
Disconnect-VIServer -Server $vcenter -Force:$true -Confirm:$false
520521

521522
Write-Output "Install Complete!"

upi/vsphere/variables.ps1.example

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,8 @@ $datastore = "workload_share_vcs8eworkload_lrFsW"
2929
$datacenter = "IBMCloud"
3030
$cluster = "vcs-8e-workload"
3131
$vcentercredpath = "secrets/vcenter-creds.xml"
32+
$storagepolicy = ""
33+
$secureboot = $false
3234

3335
$pullsecret = @"
3436
{"auths":{"fake":{"auth":"aWQ6cGFzcwo="}}}

0 commit comments

Comments
 (0)