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.
- Use the VMware-Telco-Cloud-Automation-<version>.ova.
- In the Appliance Role step, select TCA Bootstrapper as the appliance role.
- 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.
- 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 |
|
||||||
"ipFamilies": "<'IPv6' or 'IPv4'. Optional and defaults to 'IPv4' when not provided>", |
Optional |
|
||||||
"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 |
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 |
|
||||||
"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. |
|
||||||
"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. |
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:
|
||||||
"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.
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.