You can make silent deployment for the vCenter appliance in an ESXi host using the command line. The deployment will include:

vCenter media file download

Preparing  JSON file with the deployment configuration parameters

Run the deployment command.

In this LAB, we copied the downloaded installation media files to a folder named “vCenter.”

The location of JSON file is : “D:\vcenter\vcsa-cli-installer\templates\install \embedded_vCSA_on_ESXi.json”

The location of deployment command is : “D:\vcenter\vcsa-cli-installer\win32 \vcsa-deploy.exe”

To deploy the vCenter appliance in an ESXi server, we need first to edit the JSON file in which we will add all the required configuration parameters. It is preferred to do that with a code editor. We will copy the JSON file from the vCenter installation media to another folder and begin editing the file and insert the required configuration parameter.

Editing The JSON file :

We will edit the JSON file to add the deployment required configuration parameters. The JSON file consists of the following sections each contains part of the required deployment information:

# ESXi configuration parameters:


Username: root

Password: P@ssw0rd

Deployment network: VM network

Datastore: data

# vCenter Appliance deployment Configuration Parameters:

Thin disk mode: true

Deployment option: tiny

Name: vcenter-server

# vCenter appliance Network Configuration:

IP family: “ipv4”

Mode: static,

System name”:

 IP: “”

 Prefix: 24


DNS servers:

# vCenter operating system (OS) configuration parameter:

Password: P@ssw0rd

NTP servers”: “” or “”

SSH enable: false

# vCenter System Domain (SSO) Configuration parameter:

Password: P@ssw0

Domain name: vsphere.local

The following is the JSON file after editing with the required configuration parameters:

“__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”: “”,
“username”: “root”,
“password”: “P@ssw0rd”,
“deployment_network”: “VM Network”,
“datastore”: “data”
“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-server”
“network”: {
“ip_family”: “ipv4”,
“mode”: “static”,
“system_name”: “”,
“ip”: “”,
“prefix”: “24”,
“gateway”: “”,
“dns_servers”: [
“os”: {
“password”: “P@ssw0rd”,
“ntp_servers”: “”,
“ssh_enable”: false
“sso”: {
“password”: “P@ssw0rd”,
“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 “,
“ . 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”: true

We will save the JSON file, and then we will run the deployment command.

The Deployment Command:

Before running the deployment command, create a vCenter DNS record with PTR; otherwise, the deployment will fail. If you do not need to configure the DNS, you must supply the IP instead of a hostname (FQDN name).

The Deployment Command:

$jsonFile= “D:\vcenter\vcsa-cli-installer\templates\install\embedded_vCSA_on_ESXi.json”
cd $DeploymentCommandFolder
.\vcsa-deploy.exe install –accept-eula –acknowledge-ceip –no-ssl-certificate-verification $jsonFile

We write these commands in PowerShell ISE and save them as vCenterDeployment.ps1, which we can later run as PowerShell script.

vCenter Installation Automation :

In this case, we will use the PowerShell command to convert the JSON file parameters into PowerShell objects that can be edited in the PowerShell:

$json = (Get-Content -Raw $jsonFile) | ConvertFrom-Json

This allows us to directly update the JSON file parameters in the PowerShell Script every time we need to make a custom installation; after we add all the required deployment information, we will convert the edited JSON parameters back to the original JSON file or other JSON file saved in a new location – to keep installation media with the default values. In this LAB, we updated values to a new JSON file named d:\configuration.JSON

$updatedjson = “D:\configuration.json”

$json = (Get-Content -Raw $jsonFile) | ConvertFrom-Json

The entire automation script will be as the following:

# Deployment command folder:


# JSON file location:
$jsonFile= “D:\vcenter\vcsa-cli-installer\templates\install\embedded_vCSA_on_ESXi.json”

#Updated JSON File Location:

$updatedjson = “D:\configuration.json”
Convert JSON file to PowerShell:
$json = (Get-Content -Raw $jsonFile) | ConvertFrom-Json

# ESXi Configuration information:

$json.new_vcsa.esxi.deployment_network=”VM Network”
$json.new_vcsa.esxi.datastore= “data”

# Appliance configuration Parameters:


# Appliance Network configuration Parameter:


# Appliance OS Configuration Paramter:

$json.new_vcsa.os.ntp_servers=”” or “”
$json.new_vcsa.os.ssh_enable= false

# Appliance system Domain Paramter:


# CEIP Configuration:

$json.ceip.settings.ceip_enabled= false

# Convert PowerShell Parameter to JSON (Updated JSON file location):

$json | ConvertTo-Json | Set-Content -Path $updatedjson

# Deployment Command:

cd $DeploymentCommandFolder
.\vcsa-deploy.exe install –accept-eula –acknowledge-ceip –no-ssl-certificate-verification $updatedjson

Leave a Reply