Crosswork Network Controller cluster deployment templates for VMware vCenter
This topic contains manifest template examples for various scenarios of Crosswork cluster deployment.
-
Example 1: To deploy a cluster (3 hybrid nodes, 2 worker nodes) on 2 hosts
-
Example 2: To deploy a cluster (3 hybrid, 2 workers) in a Resource Group
-
Example 3: To deploy a cluster (3 hybrid nodes, 2 worker nodes) on dual stack configuration
![]() Note |
In case you are using resource pools, please note that individual ESXi host targeting is not allowed and vCenter is responsible for assigning the VMs to host(s) in the resource pool. |
Example 1: To deploy a cluster (3 hybrid nodes, 2 worker nodes) on 2 hosts
The following example deploy Crosswork cluster with Hosts specified:
#See at the end of the file for a configured sample
/********* Crosswork Cluster Data *********/
# The name of the Crosswork Cluster.
ClusterName = "CW-Cluster-01"
# Provide name of Cw VM image in vcenter or leave empty
# When empty the image name will be populated from the uploaded image
Cw_VM_Image = "" # Line added automatically by installer.
# The IP stack protocol: IPv4 or IPv6 or DUALSTACK
ClusterIPStack = "IPv4"
# The Management Virtual IP for the cluster
ManagementVIP = "x.x.x.x"
# Optional: The Management Virtual IP host-name
ManagementVIPName = ""
# The Management IP subnet in dotted decimal format for ipv4 or prefix length for ipv6
ManagementIPNetmask = "x.x.x.x"
# The Gateway IP on the Management Network
ManagementIPGateway = "x.x.x.x"
# The Data Virtual IP for the cluster. Use 0.0.0.0 or ::0 to disable
DataVIP = "x.x.x.x"
# Optional: The Data Virtual IP host-name
DataVIPName = ""
# The Data IP subnet in dotted decimal format for ipv4 or prefix length for ipv6
# Provied any regular mask when not in use
DataIPNetmask = "x.x.x.x"
# The Gateway IP on the Management Network
DataIPGateway = "x.x.x.x"
# The IP address of the DNS server
DNS = "x.x.x.x"
# The domain name to use for the cluster
DomainName = "cisco.com"
# Sets the cw-admin user ssh login password for all VMs in the cluster
# The password MUST be of min length 8 and strong
CWPassword = "**************"
# Sets the VM size for the cluster. The only supported option is Large.
VMSize = "Large"
# NTP server address or name
NTP = "x.x.x.x"
# Configuration Manifest schema version
SchemaVersion = "7.1.0"
# Data disk size for Manager/Hybrid nodes in GB. Min 485 Max 8000
ManagerDataFsSize = 485
# Data disk size for Worker nodes in GB. Min 485 Max 8000
WorkerDataFsSize = 485
// Thin or thick provisioning for all disks. Set to true for thin provisioning, false for thick
ThinProvisioned = false
# Log partition size in GB. Min 20 Max 1000
LogFsSize = 20
# Minimum percentage of the data disk space to be used for the size of the backup partition
# Note: The final backup partition size will be calculated dynamically. This parameter defines the minimum.
# Valid range 1 - 80
BackupMinPercent = 35
# Enforces VM profile reservations as "hard"
EnableHardReservations = "True"
# FOR DEMO USE ONLY - NOT TO BE USED IN PRODUCTION DEPLOYMENTS
# Ram disk size in GB
RamDiskSize = 10
/********* Crosswork VM Data Map *********/
# Configure named entries for each Cw VM.
# Number of Hybrid VMs minimum: 3; maximum: 3
# Number of Worker VMs minimum: 2; maximum: 3
CwVMs = {
# Seed VMs' data.
# IMPORTANT: A VM with id "0" MUST be present in the initial day0 install manifest and its role MUST be
# set to either MASTER or HYBRID.
"0" = {
# This VM's name
VMName = "CW_Node_0",
# This VMs' management IP address
ManagementIPAddress = "x.x.x.x",
# This VMs' data IP address. Use 0.0.0.0 or ::0 to disable
DataIPAddress = "x.x.x.x",
# This Cw VM's type - use "Hybrid" for initial install
NodeType = "Hybrid",
# The state for this VM; 2 = running. Only uncomment when doing a manual inventory import
#Op_Status = 2
},
# Second VMs' data
"1" = {
# This VM's name
VMName = "CW_Node_1",
# This VMs' management IP address
ManagementIPAddress = "x.x.x.x",
# This VMs' data IP address
DataIPAddress = "x.x.x.x",
# This Cw VM's type - use "Hybrid" for initial install
NodeType = "Hybrid",
# The state for this VM; 2 = running. Only uncomment when doing a manual inventory import
#Op_Status = 2
},
# Third VMs' data
"2" = {
# This VM's name
VMName = "CW_Node_2",
# This VMs' management IP address
ManagementIPAddress = "x.x.x.x",
# This VMs' data IP address
DataIPAddress = "x.x.x.x",
# This Cw VM's type - use "Hybrid" for initial install
NodeType = "Hybrid",
# The state for this VM; 2 = running. Only uncomment when doing a manual inventory import
#Op_Status = 2
},
# Worker VMs' data
"3" = {
# This VM's name
VMName = "CW_Node_3",
# This VMs' management IP address
ManagementIPAddress = "x.x.x.x",
# This VMs' data IP address
DataIPAddress = "x.x.x.x",
# This Cw VM's type - use "Worker"
NodeType = "Worker",
# The state for this VM; 2 = running. Only uncomment when doing a manual inventory import
#Op_Status = 2
},
# Worker VMs' data
"4" = {
# This VM's name
VMName = "CW_Node_4",
# This VMs' management IP address
ManagementIPAddress = "x.x.x.x",
# This VMs' data IP address
DataIPAddress = "x.x.x.x",
# This Cw VM's type - use "Worker"
NodeType = "Worker",
# The state for this VM; 2 = running. Only uncomment when doing a manual inventory import
#Op_Status = 2
},
}
/********* vcenter Resource Data with Cw VM assignment *********/
VCenterDC = {
# The vcenter IP or host name
VCenterAddress = "x.x.x.x",
# The username to use for logging into vcenter
VCenterUser = "Cisco_User",
# The vcenter password for the user
VCenterPassword = "*********",
# The name of the Data Centre resource to use
DCname = "Cisco-Crosswork",
# The name of the vcenter network to attach to the Cw VM Management interface
# NOTE: Escape any special characters using their URL escape codes, eg use "%2f" instead of "/"
MgmtNetworkName = "VM Network",
# The name of the vcenter network to attach to the Cw VM Data interface.
# Leave empty if not used.
# NOTE: Escape any special characters using their URL escape codes, eg use "%2f" instead of "/"
DataNetworkName = "Crosswork-Internal",
# The resource folder name on vcenter. Leave empty if not used.
DCfolder = "",
# List of the vcenter host resources along with the VMs names
# that each that each resource will host. Add additional stanzas, separated by a ','
# for each additional ESXi host or resource
VMs = [{
# The ESXi host, or ONLY the vcenter cluster/resource group name.
Host = "x.x.x.x",
# The datastore name available to be used by this host or resource group.
Datastore = "Datastore-1",
# The high speed datastore available for this host or resource group.
# Set to same value as Datastore if unsure.
HSDatastore = "Datastore-1"
# The ids of the VMs to be hosted by the above ESXi host or resource. These have to match to the Cw VM
# ids specified in the Cw VM map. Separate multiple VMs the given
# host with a ',', eg ["0","1"].
HostedCwVMs = ["0","1","2"]
},
{
Host = "x.x.x.x"
Datastore = "Datastore-2"
HSDatastore = "Datastore-2"
HostedCwVMs =["3","4"]
}
]
}
Example 2: To deploy a cluster (3 hybrid, 2 workers) in a Resource Group
The following example deploys Crosswork cluster with resource groups:
/********* Crosswork Cluster Data *********/
ClusterName = "CW-cluster-01"
# When empty the image name will be populated from the uploaded image
Cw_VM_Image = "" # Line added automatically by installer.
ClusterIPStack = "IPv4"
ManagementVIP = "x.x.x.x"
ManagementVIPName = ""
ManagementIPNetmask = "x.x.x.x"
ManagementIPGateway = "x.x.x.x"
DataVIP = "x.x.x.x"
DataVIPName = ""
DataIPNetmask = "x.x.x.x"
DataIPGateway = "x.x.x.x"
DNS = "x.x.x.x"
DomainName = "cisco.com"
# Kubernetes Service Network Customization - The default network '10.96.0.0'.
# NOTE: The CIDR range is fixed '/16', no need to enter.
# Only IPv4 is supported, IPv6 customization is NOT supported.
K8sServiceNetwork = "10.96.0.0"
# Kubernetes Service Network Customization - The default network '10.244.0.0'.
# NOTE: The CIDR range is fixed '/16', no need to enter.
# Only IPv4 is supported, IPv6 customization is NOT supported.
K8sPodNetwork = "10.244.0.0"
CWPassword = "*********"
VMSize = "Large"
NTP = "x.x.x.x"
SchemaVersion = "7.1.0"
# Data disk size for Manager/Hybrid nodes in GB. Min 485 Max 8000
ManagerDataFsSize = 485
# Data disk size for Worker nodes in GB. Min 485 Max 8000
WorkerDataFsSize = 485
// Thin or thick provisioning for all disks. Set to true for thin provisioning, false for thick
ThinProvisioned = false
# Log partition size in GB. Min 20 Max 1000
LogFsSize = 20
# Minimum percentage of the data disk space to be used for the size of the backup partition
# Note: The final backup partition size will be calculated dynamically. This parameter defines the minimum.
# Valid range 1 - 80
BackupMinPercent = 35
# Enforces VM profile reservations as "hard"
EnableHardReservations = "False"
# FOR DEMO USE ONLY - NOT TO BE USED IN PRODUCTION DEPLOYMENTS
# Ram disk size in GB
RamDiskSize = 0
# Pods that are marked as skip auto install will not be brought up until a dependent application/pod explicitly asks for it
EnableSkipAutoInstallFeature = "False"
# DEMO/DEV USE ONLY - Enforce pod minimum resource reservations. Default and for production use is True
EnforcePodReservations = "True"
# Optional: Provide a standard IANA time zone. Default value is Etc/UTC if not specified
Timezone = ""
/********* Crosswork VM Data Map *********/
# Configure named entries for each Cw VM.
# Number of Hybrid VMs minimum: 3; maximum: 3
# Number of Worker VMs minimum: 0; maximum: 3
CwVMs = {
"0" = {
VMName = "cw-vm-0",
ManagementIPAddress = "x.x.x.x",
DataIPAddress = "x.x.x.x",
NodeType = "Hybrid",
#Op_Status = 2
},
"1" = {
VMName = "cw-vm-1",
ManagementIPAddress = "x.x.x.x",
DataIPAddress = "x.x.x.x",
NodeType = "Hybrid",
#Op_Status = 2
},
"2" = {
VMName = "cw-vm-2",
ManagementIPAddress = "x.x.x.x",
DataIPAddress = "x.x.x.x",
NodeType = "Hybrid",
#Op_Status = 2
},
"3" = {
# This VM's name
VMName = "cw-worker-3",
ManagementIPAddress = "x.x.x.x",
DataIPAddress = "x.x.x.x",
NodeType = "Worker",
# The state for this VM; 2 = running. Only uncomment when doing a manual inventory import
#Op_Status = 2
},
"4" = {
# This VM's name
VMName = "cw-worker-4",
ManagementIPAddress = "x.x.x.x",
DataIPAddress = "x.x.x.x",
NodeType = "Worker",
#Op_Status = 2
}
}
/********* vcenter Resource Data with Cw VM assignment *********/
VCenterDC = {
VCenterAddress = "x.x.x.x",
VCenterUser = "Cisco_User",
VCenterPassword = "***********",
DCname = "Cisco-Crosswork",
MgmtNetworkName = "Management Network",
DataNetworkName = "Data Network",
DCfolder = ""
VMs = [{
Host = "{path to resource Group}",
Datastore = "iSCSI-DataStore",
HSDatastore = "iSCSI-DataStore",
HostedCwVMs = ["0","1","2","3","4"],
}
]
}
Example 3: To deploy a cluster (3 hybrid nodes, 2 worker nodes) on dual stack configuration
The following example deploys a Crosswork cluster containing 3 Hybrid nodes (IDs 0,1, 2) and 2 worker nodes (IDs 3, 4) on a dual stack configuration.
/********* Crosswork Cluster Data *********/
ClusterName = "bgl2-az2-geo-dualstack-setup"
Cw_VM_Image = "cw-na-platform-release-7.1.0-1808-CSCwo72364_pwdfix-250410_dual" # Line added automatically by installer.
ClusterIPStack = "DUALSTACK"
ManagementVIPv4 = "10.77.84.16"
ManagementVIPv6 = "2001:420:54ff:13::485:10"
ManagementIPv4Netmask = "255.255.255.0"
ManagementIPv4Gateway = "10.77.84.1"
ManagementIPv6Netmask = "119"
ManagementIPv6Gateway = "2001:420:54ff:13::485:1"
DataVIPv6 = "fd00::101:1a"
DataVIPv4 = "192.168.101.16"
DataIPv6Netmask = "121"
DataIPv6Gateway = "fd00::101:1"
DataIPv4Netmask = "255.255.255.0"
DataIPv4Gateway = "192.168.101.1"
DNSv6 = "2001:420:284:2004:4:110:122:5058 fe80::c54c:b337:eda5:8bd"
DNSv4 = "10.64.88.178"
DomainName = "cw.cisco"
CWPassword = "*************"
VMSize = "Large"
NTP = "ntp.esl.cisco.com"
SchemaVersion = "5.0.0"
ThinProvisioned = false
EnableHardReservations = "False"
Timezone = "Asia/Kolkata"
/********* Crosswork VM Data Map *********/
# Configure named entries for each Cw VM.
# Number of Hybrid VMs minimum: 3; maximum: 3
# Number of Worker VMs minimum: 0; maximum: 3
CwVMs = {
# Seed VMs' data.
# NOTE: A VM with id "0" MUST be present in the initial day0 install manifest and it's role MUST be
# set to either MASTER or HYBRID.
"0" = {
VMName = "cw-hybrid1-geo2-az2",
ManagementIPv6Address = "2001:420:54ff:13::485:11",
DataIPv6Address = "fd00::101:1b",
ManagementIPv4Address = "10.77.84.17",
DataIPv4Address = "192.168.101.17",
NodeType = "Hybrid"
},
# Second VMs' data
"1" = {
VMName = "cw-hybrid2-geo2-az2",
ManagementIPv6Address = "2001:420:54ff:13::485:12",
DataIPv6Address = "fd00::101:1c",
ManagementIPv4Address = "10.77.84.18",
DataIPv4Address = "192.168.101.18",
NodeType = "Hybrid"
},
"2" = {
VMName = "cw-hybrid3-geo2-az2",
ManagementIPv6Address = "2001:420:54ff:13::485:13",
DataIPv6Address = "fd00::101:1d",
ManagementIPv4Address = "10.77.84.19",
DataIPv4Address = "192.168.101.19",
NodeType = "Hybrid"
},
"3" = {
VMName = "cw-worker1-geo2-az2",
ManagementIPv6Address = "2001:420:54ff:13::485:14",
DataIPv6Address = "fd00::101:1e",
ManagementIPv4Address = "10.77.84.20",
DataIPv4Address = "192.168.101.20",
NodeType = "Worker"
},
"4" = {
VMName = "cw-worker2-geo2-az2",
ManagementIPv6Address = "2001:420:54ff:13::485:15",
DataIPv6Address = "fd00::101:1f",
ManagementIPv4Address = "10.77.84.21",
DataIPv4Address = "192.168.101.21",
NodeType = "Worker"
}
}
/********* vcenter Resource Data with Cw VM assignment *********/
VCenterDC = {
VCenterAddress = "x.x.x.x",
VCenterUser = "Cisco_User",
VCenterPassword = "*********",
DCname = "Crosswork-LAB",
MgmtNetworkName = "10.77.84.0",
DataNetworkName = "DATA-VLAN-101",
DCfolder = "",
VMs = [{
HostedCwVMs = ["0"],
Host = "10.126.165.52",
Datastore = "3.3TB-SSD-165-52",
HSDatastore = "3.3TB-SSD-165-52"
},
{
HostedCwVMs = ["1"],
Host = "10.126.165.52",
Datastore = "3.3TB-SSD-165-52",
HSDatastore = "3.3TB-SSD-165-52"
},
{
HostedCwVMs = ["2"],
Host = "10.126.165.52",
Datastore = "3.3TB-SSD-165-52",
HSDatastore = "3.3TB-SSD-165-52"
},
{
HostedCwVMs = ["3"],
Host = "10.126.165.52",
Datastore = "3.3TB-SSD-165-52",
HSDatastore = "3.3TB-SSD-165-52"
},
{
HostedCwVMs = ["4"],
Host = "10.126.165.52",
Datastore = "3.3TB-SSD-165-52",
HSDatastore = "3.3TB-SSD-165-52"
}
]
}
IgnoreDiagnosticsCheckFailure = "True" # Line added automatically by installer.