Perform the prerequisite steps listed in this section.

Install the Bootstrapper virtual machine on a vCenter Server, optionally with vRealize Log Insight. For information about setting up VMware Telco Cloud Automation in an air-gapped environment, see VMware Telco Cloud Automation User Guide.
Note: If you are deploying VMware Telco Cloud Automation in an air-gapped environment, ensure that you select the Activation Mode as Standalone. For more information, see Activate VMware Telco Cloud Automation Manager.
  1. Use the VMware-Telco-Cloud-Automation-<version>.ova.
  2. In the Appliance Role step, select TCA Bootstrapper as the appliance role.
  3. Upload the latest Photon VM template on your vCenter Server. For example, photon-3-kube-v1.23.10-vmware.1 for VMware Tanzu Kubernetes Grid 1.6.1.
    Note: The preceding step ensures that the script creates management clusters.
  4. Using the bootstrapper_template.json file located at /opt/vmware/setup_ha/bootstrapper_template.json, create the bootstrapper.json file on the Bootstrapper virtual machine. The following table lists the required section in the bootstrapper.json file.
    Note:
    • Use Python version 3.6.9 or later.
    • All passwords are base64 encoded.
    • When deploying VMware Telco Cloud Automation in an air-gapped environment, ensure that the CA certificates are encoded in the base64 format.
    • If you have initiated the deployment using the user interface, if such case, you cannot use the script based deployment.
Section in bootstrapper.json Mandatory/Optional Comments
"bootstrapperVmContext": {
     "ip": "<IP/FQDN of Bootstrapper VM. Either IP or FQDN in case of IPv4. MUST be FQDN in case of IPv6>",
     "username": "<admin user>",
     "password": "<password encoded in base64 format>"
},
Mandatory
  • Bootstrapper virtual machine of appliance type tca-bootstrapper.
  • Enter the Bootstrapper virtual machine's IP address and credentials.
  • All passwords are base64 encoded.
"ipFamilies": "<'IPv6' or 'IPv4'. Optional and defaults to 'IPv4' when not provided>",
Optional
  • You can use IPv4 or IPv6.
  • Default value: Ipv4
"vsphereContext": {
     "ip": "<IP/FQDN of vCenter. Either IP or FQDN in case of IPv4. MUST be FQDN in case of IPv6>",
     "username": "<admin user>",
     "password": "<password encoded in base64 format>",
     "dataCenter": "/<dataCenter>",
     "dataStore": "/<dataCenter>/datastore/<dataStoreName>",
     "network": "<network>",
     "resourcePool": "/<dataCenter>/host/<clusterName>/Resources/<resourcePoolName>",
     "vmFolder": "/<dataCenter>/vm/<vmFolderName>",
     "vmTemplate": "<Example: photon-3-kube-v1.23.10-vmware.1 is the template for TKG 1.6.1",
     "version": "<Optional. Example: 7.0.2 Defaults to 7.0.2 when not provided.>"
},
Mandatory
  • For an IPv4 environment, enter the vCenter Server IP address and credentials.
  • For an IPv6 environment, enter the fully qualified domain name (FQDN).
  • The vCenter Server settings for creating VMware Telco Cloud Automation and the Bootstrapper cluster are:
    • dataCenter
    • network
    • resourcePool
    • vmFolder
  • username: A user belonging to the Administrator (system admin) group in the vCenter Server.
  • vmTemplate: The latest version of Photon VM template according to the VMware Tanzu Kubernetes Grid version. For example, photon-3-kube-v1.21.2+vmware.1 for VMware Tanzu Kubernetes Grid 1.4.0. For supported component versions, see: VMware Tanzu Kubernetes Grid 1.4 Release Notes at docs.vmware.com.
  • All passwords are base64 encoded.
  • version: Optional field for vSphere version. If provided, then enter the vSphere version. The default version is 7.0.2.
Note: Ensure that you provide full paths for the vsphereContext resources.
"managementCluster":{
    "controlPlaneEndpointIP": "<Management Cluster IP address in IPv4 or IPv6 format. This can not be FQDN.>",
    "clusterPassword": "<password encoded in base64 format>",
    "controlPlaneNode": {
        "_comment": "Defaults for all the fields of controlPlaneNode is set to minimum required when not provided.",
        "replicas": "<replica count of controlPlaneNode. Valid values are 3, 5 or 7.",
        "cpu": "<number of cores per controlPlaneNode. Minimum required is 2>",
        "memory": "<memory in MiB per node. Minimum required is 16384 if deploying both tcaMgr and tcaCp. Minimum required is 8192 in case of deploying only either tcaMgr or tcaCp. In all case needs to be multiple of 1024.>",
        "disk": "<disk space in GB. Minimum required is 50>"
    },
    "workerNode": {
        "_comment": "Defaults for all the fields of workerNode is set to minimum required when not provided.",
        "replicas": "<replica count of workerNode. Minimum required is 3 if deploying both tcaMgr and tcaCp. Minimum required is 4 if deploying only one - either tcaMgr or tcaCp.>",
        "cpu": "<number of cores per workerNode. Minimum required is 4 for single TCA and 8 for both TCAs.>",
        "memory": "<memory in MiB per node. Minimum required is 16384 if deploying both tcaMgr and tcaCp. Minimum required is 8192 incase of deploying only either tcaMgr or tcaCp. In all case needs to be multiple of 1024.>",
        "disk": "<disk space in GB. Minimum required is 50>"
    },
    "mhc": {
        "_comment": "mhc field is optional. If mhc field is provided,
                         All the fields of mhc are required.
                         Depending on enable value, machine health check (MHC) feature for all nodes of
                            controlPlane and workerNodes of MANAGEMENT cluster will be either enabled or disabled.
                         If mhc field in not provided, MHC feature will be enabled with default values of each field",
        "enable": "<true or false, Default is true. Must specify. If set to true, MHC will be enabled with the provided values. If set to false MHC will not be enabled at all>",
        "nodeStartupTimeout": "<After starting a node, how long to wait, in seconds, before remediating startup failures. Default is 1200>",
        "readinessStatusUnknownTimeout": "<How long, in seconds, to wait before remediating failures due to node ready status as 'Unknown'. Default is 900>",
        "readinessStatusFalseTimeout": "<How long, in seconds, to wait before remediating failures due to node ready status as 'False'. Default is 900>"
    }
},
Mandatory
  • Enter the external IP address of the management cluster.
  • Control Plane and Worker nodes are optional. However, if they are specified, you must provide the following information:
    • Replicas
    • CPU
    • Memory
    • Disk space
  • MHC is optional. However, if it is specified, you must provide the following information:
    • nodeStartupTimeout
    • readinessStatusUnknownTimeout,
    • eadinessStatusFalseTimeout
"tcaMgr" : {
       "ip": "<tcaMgr IP address in IPv4 or IPv6 format. This can not be FQDN.>",
       "platformManagerPscUrl": "https://<In case of IPv4, either IP or FQDN of VC; and in case of IPv6, either [IP] or [FQDN] of VC>",
       "platformManagerPscDomain": "<domain> example: vc.example.vsphere.local",
       "platformManagerPscUsergroup": "<Vcenter user group> example: administrators",

       "platformManagerLdapUrl": "<LDAP url including port. URL Can be either IP or FQDN of LDAP server>"
       "platformManagerLdapAdminDN": "<LDAP Admin User Distinguished Name> Example: cn=admin,cn=users,dc=telco,dc=net",
       "platformManagerLdapAdminPW": "<Password for the LDAP Admin User encoded in base64 format> Example: QzBtcDEzeFBhNTV3MHJk for C0mp13xPa55w0rd",
       "platformManagerLdapAdminGroupDN": "<LDAP Admin User Group Distinguished Name> Example: cn=group,ou=groups,dc=telco,dc=net",
       "platformManagerLdapBaseDNforUsers": "<Search Base for users in LDAP> Example: cn=users,dc=telco,dc=net",
       "platformManagerLdapBaseDNforGroups": "<Search Base for groups in LDAP> Example: ou=groups,dc=telco,dc=net"
},
Optional. If you include this section, then all the fields are mandatory.
  • Either provide all the PSC parameters or provide all LDAP parameters. Do not provide these details in mixed format.

    For example, you can provide either of the formats for platformManagerPscUrl
    • https://10.1.9.134
    • https://[2001:0db8:85a3::8a2e:0370:7333]
  • Provide inputs for tcaMgr or tcaCps, or both.
  • In non-HA mode, you can use the script to install both appliances on the same management cluster
Appliance Namespace
tca tca-mgr
tca-cp tca-cp-<namespaceSuffix>
"tcaCps" : [
    {
        "namespaceSuffix": "<Suffix for tca-cp namespace. MUST be lowercase alphanumeric characters with maximum length of 5> Example: sfo01. The final tca-cp namespace will be tca-cp-<namespaceSuffix>",
        "ip": "<tca-cp IP address in IPv4 or IPv6 format. This can not be FQDN.>",
        "platformManagerPscUrl": "https://<IP/FQDN of vCenter. Either IP or FQDN in case of IPv4. MUST be FQDN in case of IPv6>",
        "platformManagerPscDomain": "<domain> Example: vsphere.local",
        "platformManagerPscUsergroup": "<Vcenter user group> Example: administrators",
        "comment_ssh_key_pair": "please specify key pair: either by providing path to files or base64 encoded keys; but not both",
        "sshPrivateKeyFile": "<path to ssh private key file> Example /fullPath/.ssh/id_rsa",
        "sshPublicKeyFile": "<path to ssh public key file> Example /fullPath/.ssh/id_rsa.pub",
        "sshPrivateKey": "<ssh private key of bootstrapper VM>",
        "sshPublicKey":  "<ssh public key of bootstrapper VM>"
    },
    {...}
]
Optional. If you include this section, then all the fields are mandatory.
  • Provide inputs for tcaMgr or tcaCps, or both.
  • To access from bootstrapperVMContext, tcaCps requires a SSH public or SSH private key.
Note: Either provide the public key and private key in string format or as SSH files. Do not provide the keys in a mixed format.
Note:
  • In a Bootstrapper VM, you can find the private key and the public key under /root/.ssh/.
  • In non-HA mode, you can use the script to install both appliances on the same management cluster.
Appliance Namespace
tca tca-mgr
tca-cp tca-cp-<namespaceSuffix>
"overrideValues": {
     "comment": "each entry in this section is optional",
     "vrliAddress":"<IP/FQDN of VRLI. Either IP or FQDN in case of IPv4. MUST be FQDN in case of IPv6> : If VRLI Address is provided, fluent service pod will be installed in fluent-system namespace. Example: 10.1.9.10 or vrli-ipv6.example.vsphere.local",
     "repoLibraryPath":"<URI with IPv4/IPv6/FQDN, port and path for external repo like Airgap, Jfrog > Example: see below.",
     "dnsServers":[
        "<DNS Server IPv4 addresses 1> example 8.8.8.8",
        "<DNS Server IPv4 addresses 2> example 8.8.4.4",
        or
        "<DNS Server IPv6 addresses 1> example 2001:4860:4860::8888",
        "<DNS Server IPv6 addresses 2> example 2001:4860:4860::8844"
     ],
     "proxy": {
        "httpProxy":  "<URL and Port for httpProxy : Example http://[2001:0db8:85a3::8a2e:0370:1]:3128>",
        "httpsProxy": "<URL and Port for httpsProxy: Example http://[2001:0db8:85a3::8a2e:0370:1]:3128>",
        "noProxy": "<Comma separate list of FQDN, Domains, IP Addresses and subnetCIDRs for proxy exceptions>",
        "caCert": "<base64 encoded ca cert of proxy server>"
     },
    "airgapFQDN":"<FQDN address> fqdn of the airgap server> Example: airgap.example.com",
    "airgapCaCert": "<Optionally needed when airgap server is configured with self signed cert: base64 encoded>"
}
Optional Each key in this section is optional.
  • vrliAddress: If present, this key enables the installation of fluent service. Otherwise, the installation is skipped.
  • repoLibraryPath: This key is required in an air-gapped environment, or if you use an external repository for pulling images.
  • airgapFQDN: If you have set up VMware Telco Cloud Automation in the air-gapped environment.
  • airgapCert: Applicable only when you provide airgapFQDN.
  • proxy: This is an optional section. Default value is no proxy. However, if the proxy is provided, then all the parameters in the section is mandatory.
  • noProxy: This is a Comma separated list of FQDN, Domains, IP Addresses, and subnetCIDRs for proxy exceptions.
Note: You can either use proxy or airgap. You cannot use both together.
Note: You must prefix unused fields with comment_. For example, if the airgap FQDN is not used, you must provide the following prefix: "comment_airgapFQDN":"<FQDN address> fqdn of the airgap server> Example: airgap.example.com". Or, you can remove the unused optional fields.