You might be looking for a way to deploy the vCSA without going through the wizard. Or there’s a chance you came across this site and realized that running vcsa-deploy is asking for version 2.3.0 and copy pasting isn’t working.

First thing first, all the options for this JSON file is located here. This page wasn’t obvious for me to find, and this maybe will help you too. No joke I ended up searching Cannot set key 'site-name' in section 'new.vcsa' to find that page.

Well here’s a deprecation warning that might start this whole issue off:

Execution Details:
=================== [1] Verify Template started at 18:46:48 ===================
Performing basic template verification...
Deprecation warning: You are using an old version of the JSON template. A new
template (version 2.3.0) will be generated for you. If you have already manually
updated your template, check that you have the '__version' field set to '2.3.0'
or higher.

Yep, that’s annoying and you might have no idea what to do. Here as a template of everything that was required for me to get a small (a basic) instance of an Embedded Platform Services Controller and vCenter instance. Everything here is a STRING, so if you see <> be sure it’s surrounded by " ". Everything in CAPITAL LETTERS are things you should change.

{
    "__version": "2.3.0",
    "new.vcsa": {
        "esxi": {
            "hostname": <HOSTNAME or IP>,
            "username": "root",
            "password": <root PASSWORD>,
            "deployment.network": "VM Network",
            "datastore": <DATASTORE YOU ARE DEPLOYING TO>
        },
        "appliance": {
            "thin.disk.mode": true,
            "deployment.option": "small",
            "name": <NAME OF vCSA YOU WANT>
        },
        "network": {
            "ip.family": "ipv4",
            "mode": "dhcp",
            "dns.servers": [
                "8.8.8.8"
            ],
            "prefix": "24",
            "gateway": <IP OF GATEWAY>,
            "system.name": <FQDN OF MACHINE>
        },
        "os": {
            "password": <PASSWORD TO GET INTO :5480/SSH IN>,
            "ssh.enable": true
        },
        "sso": {
            "password": <PASSWORD FOR administrator@vsphere.local>,
            "domain-name": "vsphere.local",
            "site-name": <A STRING TO NAME THE SITE-NAME, check the official docs if you need more info>
        }
    },
    "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": true
        }
    }
}

This is the BARE minimum. After this, you need to run the first command:

.\vcsa-deploy.exe install --verify-only --acknowledge-ceip vcenter_config.json

This will make sure you have no errors or typos in the json.

And when you’re ready to deploy:

.\vcsa-deploy.exe install --accept-eula --no-esx-ssl-verify --acknowledge-ceip vcenter_config.json

Yep, it’s inconsistent, it’s ESX on the command line and ESXi in the json. :facepalm: I don’t have certs on my ESXi hosts either, that’s what the --no-esx-ssl-verify is for ;)