Bringing Up an APIC Cluster

This procedure shows you how to use the APIC REST API to bring up an APIC cluster after deploying the virtual/physical APICs. The related GUI procedure, Bringing Up the Cisco APIC Cluster Using the GUI, is in the Initial Setup chapter of the Cisco APIC Getting Started Guide. This procedure assumes that the Cisco APICs are active. For standby APICs, see the note at the end of the procedure.

Note For a physical APIC, configuring the CIMC is optional. If you do not want to configure the CIMC, you must use the console to connect to the APIC and enter the following information:

Out-of-band management configuration ...
Enter the IP Address [192.168.10.1/24]:
Enter the IP Address of default gateway [192.168.10.254]:

Procedure

Step 1

Log in to APIC 1. Ensure that you have admin credentials.

URL: /api/workflows/v1/login
Method: POST

For Physical and Virtual APICs:

{
    "username": "<Enter username>",
    "password": "<Enter password>",
    "domain": "DefaultAuth"
}

Step 2

Verify and confirm the IP addresses. You will need to run this more than once, depending on the number of controllers in the cluster. An API call per controller is required. This API call is for APIC 1.

URL: /api/workflows/v1/controller/verify
Method: POST

For Physical APIC:

{
    "controllerType": "physical",       
    "address": "<cimc-ip-address>",
    "username": "<cimc-username>",
    "password": "<cimc-password>"
}

For Virtual APIC (on ESXi):

{
    "controllerType": "virtual",        
    "username": "<Enter username>",
    "password": "<Enter password>",
    "address": "<vm-mgmt-ip-address>"
}

For Virtual APIC (on AWS):

{
    "controllerType": "virtual",        
    "username": "<Enter username>",
    "password": "<Enter password>",
    "address": "<vm-mgmt-ip-address>"
}

Step 3

Bringing up the APIC Cluster Use the verify API to get the serial number and per node network details required for bootstrapping and cluster bringup.

Note Configuring the CIMC is optional. If you do not want to configure the CIMC, exclude the CIMC lines from the node entry.

URL: /api/workflows/v1/cluster/bootstrap
Method: POST

For Physical Layer 2 (APIC is directly connected to the fabric), using CIMC:

{
    "cluster": {
        "fabricName": "<fabric_name>",
        "fabricId": 1,
        "clusterSize": 3,
        "layer3": false,
        "gipoPool": "225.0.0.0/15",
        "adminPassword": "<password>",
        "infraVlan": 4093
    },
    "nodes": [
        {
            "nodeName": "<node_name>",
            "controllerType": "physical",
            "serialNumber": "<to be filed by using verify api>",
            "nodeId": 1,
            "podId": 1,
            "cimc": {
                "address4": "<ip_address>",
                "username": "admin",
                "password": "<password>"
            }
        },
        {
            "nodeName": "<node_name>",
            "controllerType": "physical",
            "serialNumber": "<to be filed by using verify api>",
            "nodeId": 2,
            "podId": 1,
            "cimc": {
                "address4": "172.20.7.44",
                "username": "admin",
                "password": "<Enter password>"
            }
        },
        {
            "nodeName": "<node_name>",
            "controllerType": "physical",
            "serialNumber": "<to be filed by using verify api>",
            "nodeId": 3,
            "podId": 1,
            "cimc": {
                "address4": "<ip_address>",
                "username": "admin",
                "password": "<password>"
            }
        }
    ],
    "pods": [
        {
            "podId": 1,
            "tepPool": "10.0.0.0/16"
        }
    ]
}

For Physical Layer 2 (APIC is directly connected to the fabric), using out-of-band management:

{
    "cluster": {
        "fabricName": "<fabric_name>",
        "fabricId": 1,
        "clusterSize": 3,
        "layer3": false,
        "gipoPool": "225.0.0.0/15",
        "adminPassword": "<password>",
        "infraVlan": 4093
    },
    "nodes": [
        {
            "nodeName": "<node_name>",
            "controllerType": "physical",
            "serialNumber": "<to be filed by using verify api>",
            "nodeId": 1,
            "podId": 1,
            "oobNetwork": {
                "address4": "<ip_address>/<subnet_mask>",
                "gateway4": "<gateway_address>",
                "enableIPv4": true
            }
        },
        {
            "nodeName": "<node_name>",
            "controllerType": "physical",
            "serialNumber": "<to be filed by using verify api>",
            "nodeId": 2,
            "podId": 1,
            "oobNetwork": {
                "address4": "<ip_address>/<subnet_mask>",
                "gateway4": "<gateway_address>",
                "enableIPv4": true
            }
        },
        {
            "nodeName": "<node_name>",
            "controllerType": "physical",
            "serialNumber": "<to be filed by using verify api>",
            "nodeId": 3,
            "podId": 1,
            "oobNetwork": {
                "address4": "<ip_address>/<subnet_mask>",
                "gateway4": "<gateway_address>",
                "enableIPv4": true
            }
        }
    ],
    "pods": [
        {
            "podId": 1,
            "tepPool": "10.0.0.0/16"
        }
    ]
}

For Physical APIC Layer 3 (APIC is remotely attached to the fabric), using CIMC:

{
    "cluster": {
        "fabricName": "<fabric_name>",
        "fabricId": 1,
        "clusterSize": 3,
        "layer3": true,
        "gipoPool": "225.0.0.0/15",
        "adminPassword": "<password>",
        "infraVlan": 4093
    },
    "nodes": [
        {
            "nodeName": "<node_name>",
            "controllerType": "physical",
            "serialNumber": "<to be filed by using verify api>",
            "nodeId": 1,
            "cimc": {
                "address4": "<ip_address>",
                "username": "admin",
                "password": "<password>"
            },
            "infraNetwork": {
                "address4": "<ip_address>",
                "gateway4": "<gateway_address>",
                "vlan": 0,
                "enableIPv4": true
            }
        },
        {
            "nodeName": "<node_name>",
            "controllerType": "physical",
            "serialNumber": "<to be filed by using verify api>",
            "nodeId": 2,
            "cimc": {
                "address4": "<ip_address>",
                "username": "admin",
                "password": "<Enter password>"
            },
            "infraNetwork": {
                "address4": "<ip_address>",
                "gateway4": "<gateway_address>",
                "vlan": 0,
                "enableIPv4": true
            }
        },
        {
            "nodeName": "<node_name>",
            "controllerType": "physical",
            "serialNumber": "<to be filed by using verify api>",
            "nodeId": 3,
            "cimc": {
                "address4": "<ip_address>",
                "username": "admin",
                "password": "<password>"
            },
            "infraNetwork": {
                "address4": "<ip_address>",
                "gateway4": "<gateway_address>",
                "vlan": 0,
                "enableIPv4": true
            }
        }
    ]
}

For Physical APIC Layer 3 (APIC is remotely attached to the fabric), using out-of-band management:

{
    "cluster": {
        "fabricName": "<fabric_name>",
        "fabricId": 1,
        "clusterSize": 3,
        "layer3": true,
        "gipoPool": "225.0.0.0/15",
        "adminPassword": "<password>",
        "infraVlan": 4093
    },
    "nodes": [
        {
            "nodeName": "<node_name>",
            "controllerType": "physical",
            "serialNumber": "<to be filed by using verify api>",
            "nodeId": 1,
            "infraNetwork": {
                "address4": "<ip_address>",
                "gateway4": "<gateway_address>",
                "vlan": 0,
                "enableIPv4": true
            },
            "oobNetwork": {
                "address4": "<ip_address>/<subnet_mask>",
                "gateway4": "<gateway_address>",
                "enableIPv4": true
            }
        },
        {
            "nodeName": "<node_name>",
            "controllerType": "physical",
            "serialNumber": "<to be filed by using verify api>",
            "nodeId": 2,
            "infraNetwork": {
                "address4": "<ip_address>",
                "gateway4": "<gateway_address>",
                "vlan": 0,
                "enableIPv4": true
            },
            "oobNetwork": {
                "address4": "<ip_address>/<subnet_mask>",
                "gateway4": "<gateway_address>",
                "enableIPv4": true
            }
        },
        {
            "nodeName": "<node_name>",
            "controllerType": "physical",
            "serialNumber": "<to be filed by using verify api>",
            "nodeId": 3,
            "infraNetwork": {
                "address4": "<ip_address>",
                "gateway4": "<gateway_address>",
                "vlan": 0,
                "enableIPv4": true
            },
            "oobNetwork": {
                "address4": "<ip_address>/<subnet_mask>",
                "gateway4": "<gateway_address>",
                "enableIPv4": true
            }
        }
    ]
}

For Virtual APIC on ESXi Layer 2 (APIC is directly connected to the fabric):

{
    "cluster": {
        "fabricName": "esx-vapic",
        "fabricId": 1,
        "clusterSize": 3,
        "layer3": false,
        "gipoPool": "225.0.0.0/15",
        "adminPassword": "<password>",
        "infraVlan": 4093
    },
    "nodes": [
        {
            "nodeName": "<node_name>",
            "controllerType": "virtual",
            "nodeId": 1,
            "podId": 1,
            "serialNumber": "<to be filed by using verify api>",
            "oobNetwork": {
                "address4": "<ip_address>/<subnet_mask>",
                "gateway4": "<gateway_address>",
                "enableIPv4": true
            }
        },
        {
            "nodeName": "<node_name>",
            "controllerType": "virtual",
            "nodeId": 2,
            "podId": 1,
            "serialNumber": "<to be filed by using verify api>",
            "oobNetwork": {
                "address4": "<ip_address>/<subnet_mask>",
                "gateway4": "<gateway_address>",
                "enableIPv4": true
            }
        },
        {
            "nodeName": "<node_name>",
            "controllerType": "virtual",
            "nodeId": 3,
            "podId": 1,
            "serialNumber": "<to be filed by using verify api>",
            "oobNetwork": {
                "address4": "<ip_address>/<subnet_mask>",
                "gateway4": "<gateway_address>",
                "enableIPv4": true
            }
        }
    ],
    "pods": [
        {
            "podId": 1,
            "tepPool": "10.0.0.0/16"
        }
    ]
}

For Virtual APIC on ESXi Layer 3 (APIC is remotely attached to the fabric):

{
    "cluster": {
        "fabricName": "<fabric_name>",
        "fabricId": 1,
        "clusterSize": 3,
        "layer3": true,
        "gipoPool": "225.0.0.0/15",
        "adminPassword": "<password>",
        "infraVlan": 4093
    },
    "nodes": [
        {
            "nodeName": "ins16-aci-vc1-vapic1",
            "controllerType": "virtual",
            "nodeId": 1,
            "serialNumber": "<to be filed by using verify api>",
            "infraNetwork": {
                "address4": "<ip_address>",
                "gateway4": "<gateway_address>",
                "vlan": 101,
                "enableIPv4": true
            },
            "oobNetwork": {
                "address4": "<ip_address>/<subnet_mask>",
                "gateway4": "<gateway_address>",
                "enableIPv4": true
            }
        },
        {
            "nodeName": "<node_name>",
            "controllerType": "virtual",
            "nodeId": 2,
            "serialNumber": "<to be filed by using verify api>",
            "infraNetwork": {
                "address4": "<ip_address>",
                "gateway4": "<gateway_address>",
                "vlan": 101,
                "enableIPv4": true
            },
            "oobNetwork": {
                "address4": "<ip_address>/<subnet_mask>",
                "gateway4": "<gateway_address>",
                "enableIPv4": true
            }
        },
        {
            "nodeName": "<node_name",
            "controllerType": "virtual",
            "nodeId": 3,
            "serialNumber": "<to be filed by using verify api>",
            "infraNetwork": {
                "address4": "<ip_address>",
                "gateway4": "<gateway_address>",
                "vlan": 101,
                "enableIPv4": true
            },
            "oobNetwork": {
                "address4": "<ip_address>/<subnet_mask>",
                "gateway4": "<gateway_address>",
                "enableIPv4": true
            }
        }
    ]
}

For Virtual APIC on AWS:

{
    "cluster": {
        "fabricName": "aws",
        "fabricId": 1,
        "clusterSize": 1,
        "layer3": true,
        "gipoPool": "225.0.0.0/15",
        "adminPassword": "<password>",
        "infraVlan": 1234
    },
    "nodes": [
        {
            "nodeName": "<node_name>",
            "controllerType": "virtual",
            "nodeId": 1,
            "oobNetwork": {
                "address4": "<ip_address>/<subnet_mask>",
                "mode": "auto",
                "enableIPv4": true
            },
            "serialNumber": "<to be filed by using verify api>"
        }
    ]
}

Note

For a standby APIC, add the following line in the nodes details section:

"standby": true,