Automating VCF – Deploy NSX-T Edge Cluster

In this part of the series, we take a look at how to initiate the NSX-T edge cluster deployment in SDDC Manager.

VMware Cloud Builder APIs Used

  • GET /v1/clusters
  • POST /v1/edge-clusters
  • GET /v1/tasks/{id}

PowerVCF Cmdlets

  • Get-VCFCluster
  • New-VCFEdgeCluster
  • Get-VCFTask

PowerShell Scripts


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:

.\createWorkloadEdgeSpec.ps1 -Workbook E:\pnpWorkbook.xlsx -Json E:\MyLab\sfo\sfo-workloadEdge.json -nsxtPassword VMw@re1!VMw@re1!

The createWorkloadEdgeSpec.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.

You will notice that we are passing in an additional value relating to passwords for NSX-T, this is because the Planning and Preparation Workbook does not store any passwords.

Step 3 – Authenticate to the SDDC Manager appliance by running the following command:

Connect-VCFManager -fqdn -username administrator@vsphere.local -password VMw@re1!

Step 4 – Obtain details around the workload domain from the JSON spec created during the workload domain workflow by running the following command:

$workloadDomain = (Get-Content E:\MyLab\sfo\sfo-workloadDomain.json) | ConvertFrom-Json

In this step we are capturing all of the details from the JSON spec of the workload domain. We will use this in the next step to obtain the workload domain name.

Step 5 – Obtain the VCF Cluster details by running the following command:

$cluster = Get-VCFCluster | Where {$ -eq $($}

In this procedure we are using the Get-VCFCluster cmdlet to obtain the cluster information with a name that matches the value from $

Step 6 – Update the CLUSTER-ID value in the JSON spec with the unique ID of the workload domain cluster by running the following command:

(Get-Content E:\MyLab\sfo\sfo-workloadEdge.json) | Foreach-Object {$_ -replace ‘CLUSTER-ID', $($} | Set-Content E:\MyLab\sfo\sfo-workloadEdge.json

In this procedure we are performing a search and replace in the sfo-workloadEdge.json where we replace CLUSTER-ID with the unique id of the VCF Cluster contained in the $ element of the variable from step 5.

Step 7 – Start the edge cluster deployment workflow by running the following command:

$workloadEdge = New-VCFEdgeCluster -json E:\MyLab\sfo\sfo-workloadEdge.json

Using the New-VCFEdgeCluster cmdlet, we trigger the edge cluster deployment workflow, here I’m capturing the output of the command into a variable to be used in the next step.

As part of the New-VCFEdgeCluster cmdlet we also execute the validation API to check the JSON spec prior to actually triggering the workflow, if an error exists the process will abort allowing you fix things up before trying again.

Step 8 – Poll the status of the edge cluster deployment workflow, by running the following command:

Do { $status = Get-VCFTask -id $ } While ($status.status -eq "In Progress")

Here we are polling the status of the workflow, using the unique ID from the New-VCFEdgeCluster cmdlet which we retrieve from the variable $ and pass 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 edge cluster JSON spec used by the public API and running the edge cluster deployment workflow in SDDC Manager .

For other posts in this series see:

6 thoughts on “Automating VCF – Deploy NSX-T Edge Cluster

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

  2. Pingback: Automating VCF – Commission Hosts – My Cloudy World

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

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

  5. Pingback: Automating VMware Cloud Foundation with APIs/PowerVCF/PowerShell – 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: Logo

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

Facebook photo

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

Connecting to %s