Automating VCF – Commission Hosts

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:

6 thoughts on “Automating VCF – Commission Hosts

  1. Pingback: Automating VCF – Create Network Pool – My Cloudy World

  2. Pingback: Automating VMware Cloud Foundation with APIs/PowerVCF/PowerShell – My Cloudy World

  3. Pingback: Automating VCF – Deploy Management Domain – My Cloudy World

  4. Pingback: Automating VCF – Deploy Workload Domain – My Cloudy World

  5. Pingback: Automating VCF – Deploy NSX-T Edge Cluster – My Cloudy World

  6. Pingback: Automating VCF – Deploy vRealize Suite Lifecycle Manager – My Cloudy World

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s