7th May 2020

VMware Cloud Foundation – Can’t deploy vRealize as no AVN is available

VMware Cloud Foundation – Can’t deploy vRealize as no AVN is available

For reasons entirely of my own making when I deployed my current lab, I did not create the VCF AVN networks during deployment.  This wasn’t a problem at the time as I was focused on vSphere with kubernetes.  However, I did come to regret this just recently as in particular I wanted to deploy vROPs and explore the kubernetes integration that is available within that product.  So I suppose I best create networks I can use!

The process I’m going to follow is documented in this VMware KB and the accompanying PDF.  The process will use VMware APIs to edit the configuration of the management domain, I would recommend working with you VMware team before doing this against production environments.  I’m working in a lab, so will jump straight in.  This post is designed to show a bit on how the process works and to add some images to each of the steps, if this post contradicts the sequencing or instruction in the KB or PDF, follow the official documentation – it is almost certainly a mistake on my part!


As part of the process new edges and segments are going to be created, I would suggest getting ahead of the process and gathering the required vlan, subnet and gateway information ahead of time.

API interaction

Working with the APIs within VCF 4 is pretty straight forward, no need for postman – we can use the APIs from the VCF Developer Center.

The first API call that needs to be made is to get the unique ID for the management cluster.  Under the APIs for managing clusters, select ‘GET /v1/clusters’ and click ‘execute’.

Expand the results and the management cluster name and copy the ID of the Cluster into a separate text file, this is going to be referenced in the JSON to create the Edges and associated objects in NSX.   In the example below, my cluster ID is ‘lae5ed19-0068-4a72-84ff-d8501043d04d’

Create a JSON specification to deploy the Edge resources

There is a detailed example in the PDF linked to the KB for the JSON specification required.  If you have gathered all the prerequisite information then editing that specification will be pretty straight forward, the below image is a except from the JSON spec I used;

There are validation APIs that we can use at this point to detect any errors in the JSON, I find these a little clunky to work with – luckily there are plenty of JSON validators online that can be leveraged to clear up any syntax errors.  When we’re comfortable that the JSON is valid from a formatting perspective, Expand APIs for managing NSX-T Edge Clusters and select ‘POST /v1/edge-clusters/validations’.  Copy and paste your JSON specification into the value field and click execute.

Copy the Validation UUID and Expand APIs for managing NSX-T Edge Clusters and click ‘POST /v1/edge-clusters/ validations/{id}’, in the value box paste the validation UUID.  This allows the tracking of the validation to completion, when completed it’ll provide output to indicate if the task would be successful or not.  Nice awareness from VCF that whilst this is an exceptionally quick way of building out new capability, some guardrails and validation of activities is always welcomed!

With the validation successful, the JSON specification can be posted, Expand APIs for managing NSX-T Edge Clusters and select ‘POST /v1/edge-clusters’ . paste in the validated JSON specification and click execute.  The status of the various tasks is available from the SDDC manage tasks pane.

Finalisation,  after the tasks in SDDC manager have completed successfully the configuration of the various components can be validated from the NSXT management console.

There are still a few steps to complete from the PDF guide, adding VLAN backed network segments, adding interfaces and configuring static routes on the T1 gateway.  I’ll not walk through the process here and add screenshots as this is all pretty standard.

Enabling deployment in SDDC manager

With the network infrastructure in place, we need to add a flag to the VCF file and restart services.  SSH to the SDDC manager and ‘su’ to root.  then follow the steps below.  This sequence will end with restarting the services on the SDDC manager.

“cd /home/vcf
echo “feature.vcf.avn.greenfield=false” >>
chown vcf:vcf
chmod 644

The below screenshot show me walking through the process and the expected output.

When the SDDC manager services restart and the UI is available again, the deployment of LCM will be available from within SDDC manager;