1
+ $HAProxyOVA = " /Volumes/Storage/Software/vmware-haproxy-v0.1.8.ova"
2
+
3
+ $Cluster = " Tanzu-Cluster"
4
+ $VMHost = " esxi-01.tanzu.local"
5
+ $Datastore = " local-vmfs"
6
+
7
+ $HAProxyDisplayName = " haproxy.tanzu.local"
8
+ $HAProxyHostname = " haproxy.tanzu.local"
9
+ $HAProxyDNS = " 192.168.30.2"
10
+ $HAProxyManagementNetwork = " Management"
11
+ $HAProxyManagementIPAddress = " 192.168.30.6/24" # Format is IP Address/CIDR Prefix
12
+ $HAProxyManagementGateway = " 192.168.30.1"
13
+ $HAProxyFrontendNetwork = " Frontend"
14
+ $HAProxyFrontendIPAddress = " 10.10.0.2/24" # Format is IP Address/CIDR Prefix
15
+ $HAProxyFrontendGateway = " 10.10.0.1"
16
+ $HAProxyWorkloadNetwork = " Workload"
17
+ $HAProxyWorkloadIPAddress = " 10.20.0.2/24" # Format is IP Address/CIDR Prefix
18
+ $HAProxyWorkloadGateway = " 10.20.0.1"
19
+ $HAProxyLoadBalanceIPRange = " 10.10.0.64/26" # Format is Network CIDR Notation
20
+ $HAProxyOSPassword = " VMware1!"
21
+ $HAProxyPort = " 5556"
22
+ $HAProxyUsername = " wcp"
23
+ $HAProxyPassword = " VMware1!"
24
+
25
+ # ## DO NOT EDIT BEYOND HERE ###
26
+
27
+ $ovfconfig = Get-OvfConfiguration $HAProxyOVA
28
+
29
+ $ovfconfig.DeploymentOption.value = " frontend"
30
+
31
+ $ovfconfig.network.hostname.value = $HAProxyHostname
32
+ $ovfconfig.network.nameservers.value = $HAProxyDNS
33
+
34
+ $ovfconfig.NetworkMapping.Management.value = $HAProxyManagementNetwork
35
+ $ovfconfig.NetworkMapping.Frontend.value = $HAProxyFrontendNetwork
36
+ $ovfconfig.NetworkMapping.Workload.value = $HAProxyWorkloadNetwork
37
+
38
+ # Management
39
+ $ovfconfig.network.management_ip.value = $HAProxyManagementIPAddress
40
+ $ovfconfig.network.management_gateway.value = $HAProxyManagementGateway
41
+
42
+ # Workload
43
+ $ovfconfig.network.workload_ip.value = $HAProxyWorkloadIPAddress
44
+ $ovfconfig.network.workload_gateway.value = $HAProxyWorkloadGateway
45
+
46
+ $ovfconfig.loadbalance.service_ip_range.value = $HAProxyLoadBalanceIPRange
47
+ $ovfconfig.appliance.root_pwd.value = $HAProxyOSPassword
48
+ $ovfconfig.loadbalance.dataplane_port.value = $HAProxyPort
49
+ $ovfconfig.loadbalance.haproxy_user.value = $HAProxyUsername
50
+ $ovfconfig.loadbalance.haproxy_pwd.value = $HAProxyPassword
51
+
52
+ Write-Host " Deploying HAProxy VM $HAProxyDisplayName ..."
53
+ $vm = Import-VApp - Source $HAProxyOVA - OvfConfiguration $ovfconfig - Name $HAProxyDisplayName - Location $Cluster - VMHost $VMHost - Datastore $Datastore - DiskStorageFormat thin
54
+
55
+ $vappProperties = $vm.ExtensionData.Config.VAppConfig.Property
56
+ $spec = New-Object VMware.Vim.VirtualMachineConfigSpec
57
+ $spec.vAppConfig = New-Object VMware.Vim.VmConfigSpec
58
+
59
+ $ovfChanges = @ {
60
+ " frontend_ip" = $HAProxyFrontendIPAddress
61
+ " frontend_gateway" = $HAProxyFrontendGateway
62
+ }
63
+
64
+ # Retrieve existing OVF properties from VM
65
+ $vappProperties = $VM.ExtensionData.Config.VAppConfig.Property
66
+
67
+ # Create a new Update spec based on the # of OVF properties to update
68
+ $spec = New-Object VMware.Vim.VirtualMachineConfigSpec
69
+ $spec.vAppConfig = New-Object VMware.Vim.VmConfigSpec
70
+ $propertySpec = New-Object VMware.Vim.VAppPropertySpec[]($ovfChanges.count )
71
+
72
+ # Find OVF property Id and update the Update Spec
73
+ foreach ($vappProperty in $vappProperties ) {
74
+ if ($ovfChanges.ContainsKey ($vappProperty.Id )) {
75
+ $tmp = New-Object VMware.Vim.VAppPropertySpec
76
+ $tmp.Operation = " edit"
77
+ $tmp.Info = New-Object VMware.Vim.VAppPropertyInfo
78
+ $tmp.Info.Key = $vappProperty.Key
79
+ $tmp.Info.value = $ovfChanges [$vappProperty.Id ]
80
+ $propertySpec += ($tmp )
81
+ }
82
+ }
83
+ $spec.VAppConfig.Property = $propertySpec
84
+
85
+ Write-Host " Updating HAProxy Frontend Properties"
86
+ $task = $vm.ExtensionData.ReconfigVM_Task ($spec )
87
+ $task1 = Get-Task - Id (" Task-$ ( $task.value ) " )
88
+ $task1 | Wait-Task
89
+
90
+ Write-Host " Powering On $HAProxyDisplayName ..."
91
+ $vm | Start-Vm - RunAsync | Out-Null
0 commit comments