Deploying vCenter Server (VCSA) using the CLI installer is fast, repeatable, and ideal for lab environments or scripted deployments. In this post, I’ll demonstrate how to deploy a brand new vCenter server using the CLI installer. While this post focuses on CLI deployment from macOS, the process for Linux and Windows is very similar.
This guide assumes you are comfortable using Terminal and already have your vCenter deployment details prepared. For this demonstration, I will be deploying vCenter directly to an ESXi host. Below are the minimum prerequisites you should have prepared before starting the deployment. DNS and time synchronisation are the most common causes of deployment failures, so it’s worth double-checking these before you begin.
Pre-requisites
- Hostname or IP address and credentials for the target ESXi host
- A reserved IP address for vCenter
- Forward and reverse DNS records for the vCenter FQDN
- The desired FQDN for the vCenter you are deploying
- DNS and NTP server details
Step 1: Mount the vCenter Server ISO and allow execution
By default, macOS blocks execution of the vCenter installer. Before continuing, you will need to mount the vCenter Server ISO and bypass Gatekeeper to allow the installer to run.
Both of these steps are covered in detail in a separate post: Bypass macOS Security Gatekeeper for vCenter Installer
Once completed, you can now mount the ISO and locate the necessary files to proceed with the CLI installation, which I’ll cover in the next steps.
Step 2: Locate the JSON deployment templates on the ISO
The vCenter Server ISO includes several JSON templates that can be used as starting points for CLI deployments.
At the time of writing this post, these templates are located at:
"/Volumes/VMware VCSA/vcsa-cli-installer/templates/install/"
For this demonstration, I’ll be using embedded_vCSA_on_ESXi.json.
Copy the template to a writable location on your Mac. The template itself is very straightforward, you simply fill in the required values for your environment. For reference, below is a copy of my deployment template with the minimum required information populated.
One thing to note in my template is that I have chosen time_tools_sync for time synchronisation. This configures vCenter to synchronise its time with the target ESXi host during deployment.
{
"__version": "2.13.0",
"__comments": "Sample template to deploy a vCenter Server Appliance with an embedded Platform Services Controller on an ESXi host.",
"new_vcsa": {
"esxi": {
"hostname": "myesx1.virtuallywired.io",
"username": "root",
"password": "VMware1!",
"deployment_network": "VM Network",
"datastore": "LocalDatastore"
},
"appliance": {
"__comments": [
"You must provide the 'deployment_option' key with a value, which will affect the vCenter Server Appliance's configuration parameters, such as the vCenter Server Appliance's number of vCPUs, the memory size, the storage size, and the maximum numbers of ESXi hosts and VMs which can be managed. For a list of acceptable values, run the supported deployment sizes help, i.e. vcsa-deploy --supported-deployment-sizes"
],
"thin_disk_mode": true,
"deployment_option": "tiny",
"name": "vcenter-virtuallywired-io"
},
"network": {
"ip_family": "ipv4",
"mode": "static",
"system_name": "vcenter.virtuallywired.io",
"ip": "192.168.1.210",
"prefix": "24",
"gateway": "192.168.1.1",
"dns_servers": [
"192.168.1.1",
"8.8.8.8"
]
},
"os": {
"password": "VMware1!",
"time_tools_sync": true,
"ssh_enable": true
},
"sso": {
"password": "VMware1!",
"domain_name": "vsphere.local"
}
},
"ceip": {
"description": {
"__comments": [
"++++VMware Customer Experience Improvement Program (CEIP)++++",
"VMware's Customer Experience Improvement Program (CEIP) ",
"provides VMware with information that enables VMware to ",
"improve its products and services, to fix problems, ",
"and to advise you on how best to deploy and use our ",
"products. As part of CEIP, VMware collects technical ",
"information about your organization's use of VMware ",
"products and services on a regular basis in association ",
"with your organization's VMware license key(s). This ",
"information does not personally identify any individual. ",
"",
"Additional information regarding the data collected ",
"through CEIP and the purposes for which it is used by ",
"VMware is set forth in the Trust & Assurance Center at ",
"http://www.vmware.com/trustvmware/ceip.html . If you ",
"prefer not to participate in VMware's CEIP for this ",
"product, you should disable CEIP by setting ",
"'ceip_enabled': false. You may join or leave VMware's ",
"CEIP for this product at any time. Please confirm your ",
"acknowledgement by passing in the parameter ",
"--acknowledge-ceip in the command line.",
"++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
]
},
"settings": {
"ceip_enabled": false
}
}
}
Step 3: Execute the CLI installer
With the ISO mounted and your deployment template prepared, the next step is to execute the vCenter CLI installer from macOS.
At the time of writing this post, the CLI installer is located at:
"/Volumes/VMware VCSA/vcsa-cli-installer/mac/"
From Terminal, change directory to the location where the installer resides. A handy tip, if you didn’t already know, is that you can drag and drop a folder from Finder directly into the Terminal window and it will automatically resolve the full path. See the screenshot below for an example.

Start the deployment using your customised JSON template. I have added the –verbose flag to enable additional logging during the deployment:
./vcsa-deploy install "<path to embedded_vCSA_on_ESXi.json>" --accept-eula --acknowledge-ceip --verbose

If the JSON file is complete and valid, the installer will automatically run both Stage 1 and Stage 2 of the vCenter deployment.
Deployment progress is displayed directly in Terminal. If the deployment fails, logs are written locally on your Mac, which makes troubleshooting significantly easier than using the GUI installer.
Conclusion
If the deployment completes successfully, your vCenter Server will be up and running and accessible via the FQDN specified in your JSON deployment template. At this point, you can log in to the vSphere Client, complete any post-deployment configuration, and begin adding hosts or clusters as required.

Using the CLI installer on macOS provides a fast, repeatable way to deploy vCenter Server without relying on the GUI, making it especially useful for lab environments and scripted builds.
I hope you found this helpful. Feel free to comment if you have any questions.
Follow @nmangraviti
You must be logged in to post a comment.