Chapter 3. Adding a Node to the Overcloud

The overcloud can grow to meet an increase in demand by adding a new Nova compute and Ceph OSD node to the overcloud.

Prerequisites

  • A running RHHI Cloud solution.
  • The MAC addresses for the network interface cards (NICs).
  • IPMI User name and password

Procedure

Do the following steps on the Red Hat OpenStack Platform director node, as the stack user.

  1. Create and populate a host definition file for the Ironic service to manage the new node.

    1. Create a new JSON host definition file:

      [stack@director ~]$ touch ~/new_node.json
    2. Add a definition block for the new node between the nodes stanza square brackets ({"nodes": []}) using this template:

      {
        "pm_password": "$IPMI_USER_PASSWORD",
        "name": "$NODE_NAME",
        "pm_user": "$IPMI_USER_NAME",
        "pm_addr": "$IPMI_IP_ADDR",
        "pm_type": "pxe_ipmitool",
        "mac": [
                "$NIC_MAC_ADDR"
               ],
        "arch": "x86_64",
        "capabilities": "node:$NODE_ROLE-INSTANCE_NUM,boot_option:local"
      }
      Replace…​
      • $IPMI_USER_PASSWORD with the IPMI password.
      • $NODE_NAME with a descriptive name of the node. This is an optional parameter.
      • $IPMI_USER_NAME with the IPMI user name that has access to power the node on or off.
      • $IPMI_IP_ADDR with the IPMI IP address.
      • $NIC_MAC_ADDR with the network card MAC address handling the PXE boot.
      • $NODE_ROLE-INSTANCE_NUM with the node’s role, along with a node number. This solution uses two roles: controller and osd-compute.

        {
          "nodes": [
             {
                 "pm_password": "AbC1234",
                 "name": "m630_slot2",
                 "pm_user": "ipmiadmin",
                 "pm_addr": "10.19.143.62",
                 "pm_type": "pxe_ipmitool",
                 "mac": [
                     "c8:1f:66:65:33:42"
                 ],
                 "arch": "x86_64",
                  "capabilities": "node:osd-compute-3,boot_option:local"
             }
          ]
        }
  2. Import the nodes into the Ironic database:

    [stack@director ~]$ openstack baremetal import ~/new_node.json
    1. Verify that the openstack baremetal import command populated the Ironic database with the new node:

      [stack@director ~]$ openstack baremetal node list
  3. Set the new node into maintenance mode:

    ironic node-set-maintenance $UUID true
    Replace…​
    • $UUID with the UUID of the new node. See the output from step 2a to get the new node’s UUID.

      Example

      [stack@director ~]$ ironic node-set-maintenance 7250678a-a575-4159-840a-e7214e697165 true

  4. Inspect the new node’s hardware:

    openstack baremetal introspection start $UUID
    Replace…​
    • $UUID with the UUID of the new node. See the output from step 2a to get the new node’s UUID.

      Example

      [stack@director ~]$ openstack baremetal introspection start 7250678a-a575-4159-840a-e7214e697165 true

      1. The introspection process can take some time to complete. Verify that the status of the introspection process:

        [stack@director ~]$ openstack baremetal introspection bulk status

        Example Output

        +--------------------------------------+----------+-------+
        | Node UUID                            | Finished | Error |
        +--------------------------------------+----------+-------+
        | a94b75e3-369f-4b2d-b8cc-8ab272e23e89 | True     | None  |
        | 7ace7b2b-b549-414f-b83e-5f90299b4af3 | True     | None  |
        | 8be1d83c-19cb-4605-b91d-928df163b513 | True     | None  |
        | e8411659-bc2b-4178-b66f-87098a1e6920 | True     | None  |
        | 04679897-12e9-4637-9998-af8bee30b414 | True     | None  |
        | 48b4987d-e778-48e1-ba74-88a08edf7719 | True     | None  |
        | 7250678a-a575-4159-840a-e7214e697165 | True     | None  |
        +--------------------------------------+----------+-------+

  5. Disable maintenance mode on the new node:

    ironic node-set-maintenance $UUID false
    Replace…​
    • $UUID with the UUID of the new node. See the output from step 2a to get the new node’s UUID.

      Example

      [stack@director ~]$ ironic node-set-maintenance 7250678a-a575-4159-840a-e7214e697165 false

  6. Assign the full overcloud kernel and ramdisk image to the new node:

    [stack@director ~]$ openstack baremetal configure boot
  7. Open the ~/custom-templates/layout.yaml file for editing.

    1. Under the parameter_defaults section, change the OsdComputeCount option from 3 to 4.
    2. Under the OsdComputeIPs section, add the new node’s IP addresses for each isolated network.
  8. Apply the new overcloud configuration by rerunning the openstack overcloud deploy command with the same TripleO Heat templates from the initial overcloud deployment:

    Example

    [stack@director ~]$ openstack overcloud deploy --templates \
    -r ~/custom-templates/custom-roles.yaml \
    -e /usr/share/openstack-tripleo-heat-templates/environments/puppet-pacemaker.yaml \
    -e /usr/share/openstack-tripleo-heat-templates/environments/network-isolation.yaml \
    -e /usr/share/openstack-tripleo-heat-templates/environments/storage-environment.yaml \
    -e ~/custom-templates/network.yaml \
    -e ~/custom-templates/ceph.yaml \
    -e ~/custom-templates/compute.yaml \
    -e ~/custom-templates/layout.yaml

  9. Verify the addition of the new node:

    [stack@director ~]$ openstack server list
    Note

    If the node status is ACTIVE, then the new node was added successfully to the overcloud.