Skip to content

Commit 0f8363d

Browse files
author
William Lam
committed
Deploy HAProxy VM w/3-NIC Config
1 parent 9fc7c22 commit 0f8363d

File tree

1 file changed

+91
-0
lines changed

1 file changed

+91
-0
lines changed

powershell/deploy_3nic_haproxy.ps1

Lines changed: 91 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,91 @@
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

Comments
 (0)