In this part of the series, we take a look at how to commission hosts in SDDC Manager, and consume the new network pool to support a workload domain deployment.
VMware Cloud Builder APIs Used
- POST /v1/hosts
- GET /v1/network-pools
- GET /v1/tasks/{id}
PowerVCF Cmdlets
- Commission-VCFHost
- Get-VCFNetworkPool
- Get-VCFTask
PowerShell Scripts
Procedure
Step 1 – Download and populate the Planning and Preparation Workbook for your target platform.
Step 2 – To generate the JSON spec using inputs from the Planning and Preparation Workbook run the following command:
.\createCommissionHostSpec.ps1 E:\MyLab\pnpWorkbook.xlsx E:\MyLab\sfo\sfo-workloadCommissionHosts.json
The createCommissionHostSpec.ps1 script will open the supplied Planning and Preparation Workbook, read the ‘Workload Domain’ tab into a variable and then proceed to generate the JSON spec required by the Public API.
Step 3 – Authenticate to the SDDC Manager appliance by running the following command:
Connect-VCFManager -fqdn sfo-vcf01.sfo.rainpole.io -username administrator@vsphere.local -password VMw@re1!
Step 4 – Obtain the details of the network pool by running the following command:
$networkPool = Get-VCFNetworkPool | Where {$_.name -eq $networkPoolName}
Using the Get-VCFNetworkPool cmdlet we want to retrieve the details of the new network pool from SDDC Manager and store them in a variable which is used in the next step. Here we are using the $networkPoolName variable which is created during the execution of the createCommissionHostsSpec.ps1 script to identify the name of the network pool as defined in the Planning and Preparation Workbook.
Step 5 – Update the POOL-ID value in the JSON spec with the unique ID of the network pool by running the following command:
(Get-Content E:\MyLab\sfo\sfo-workloadCommissionHosts.json) | Foreach-Object {$_ -replace 'POOL-ID', $($networkPool.id)} | Set-Content E:\MyLab\sfo\sfo-workloadCommissionHosts.json
In this procedure we are performing a search and replace in the sfo-workloadCommissionHosts.json where we replace POOL-ID with the unique id of the network pool contained in the $networkPool.id element of the variable from step 5.
Step 6 – Start the commissioning host workflow by running the following command:
$commissionHosts = Commission-VCFHost -json E:\MyLab\sfo\sfo-workloadCommissionHosts.json
Using the Commission-VCFHosts cmdlet, we trigger the commissioning hosts workflow, here I’m capturing the output of the command into a variable to be used in the next step.
Step 7 – Poll the status of the commission host workflow, by running the following command:
Do { $status = Get-VCFTask -id $commissionHosts.id } While ($status.status -eq "In Progress")
Here we are polling the status of the workflow, using the unique ID from the Commission-VCFHost cmdlet which we retrieve from the variable $commissionHosts.id and pass this time to the Get-VCFTask cmdlet. We perform a Do / While loop where we are looking for status of “In Progress”, once the state changes from “In Progress” we break from the loop.
That completes the process of generating a commission hosts JSON spec used by the public API and running the commission hosts workflow in SDDC Manager .
For other posts in this series see:
Pingback: Automating VCF – Create Network Pool – My Cloudy World
Pingback: Automating VMware Cloud Foundation with APIs/PowerVCF/PowerShell – My Cloudy World
Pingback: Automating VCF – Deploy Management Domain – My Cloudy World
Pingback: Automating VCF – Deploy Workload Domain – My Cloudy World
Pingback: Automating VCF – Deploy NSX-T Edge Cluster – My Cloudy World
Pingback: Automating VCF – Deploy vRealize Suite Lifecycle Manager – My Cloudy World