Chapter 3. Preparing the overcloud role for hyperconverged nodes

To use hyperconverged nodes, you need to define a role for it. Red Hat OpenStack Platform (RHOSP) provides the predefined role ComputeHCI for hyperconverged nodes. This role colocates the Compute and Ceph object storage daemon (OSD) services, allowing you to deploy them together on the same hyperconverged node. To use the ComputeHCI role, you need to generate a custom roles_data.yaml file that includes it, along with all the other roles you are using in your deployment.

The following procedure details how to use and configure this predefined role.


  1. Generate a custom roles_data.yaml file that includes ComputeHCI, along with other roles you intend to use for the overcloud:

    $ openstack overcloud roles generate -o /home/stack/roles_data.yaml Controller ComputeHCI Compute CephStorage

    For more information about custom roles, see Composable Services and Custom Roles and Examining the roles_data file.

  2. Create a new heat template named ports.yaml in ~/templates.
  3. Configure port assignments for the ComputeHCI role by adding the following configuration to the ports.yaml file:

      OS::TripleO::ComputeHCI::Ports::ExternalPort: /usr/share/openstack-tripleo-heat-templates/network/ports/<ext_port_file>.yaml
      OS::TripleO::ComputeHCI::Ports::InternalApiPort: /usr/share/openstack-tripleo-heat-templates/network/ports/internal_api.yaml
      OS::TripleO::ComputeHCI::Ports::StoragePort: /usr/share/openstack-tripleo-heat-templates/network/ports/storage.yaml
      OS::TripleO::ComputeHCI::Ports::TenantPort: /usr/share/openstack-tripleo-heat-templates/network/ports/tenant.yaml
      OS::TripleO::ComputeHCI::Ports::StorageMgmtPort: /usr/share/openstack-tripleo-heat-templates/network/ports/<storage_mgmt_file>.yaml
    • Replace <ext_port_file> with the name of the external port file. Set to "external" if you are using DVR, otherwise set to "noop". For details on DVR, see Configure Distributed Virtual Routing (DVR).
    • Replace <storage_mgmt_file> with the name of the storage management file. Set to one of the following values:



      Use if you do not want to select from a pool of IPs, and your environment does not use IPv6 addresses.


      Use if you want the ComputeHCI role to select from a pool of IPs.


      Use if your environment uses IPv6 addresses.


      Use if you want the ComputeHCI role to select from a pool of IPv6 addresses

      For more information, see Basic network isolation.

  4. Create a flavor for the ComputeHCI role:

    $ openstack flavor create --id auto --ram 6144 --disk 40 --vcpus 4 computeHCI
  5. Configure the flavor properties:

    $ openstack flavor set --property "cpu_arch"="x86_64" \
    --property "capabilities:boot_option"="local" \
    --property "resources:CUSTOM_BAREMETAL"="1" \
    --property "resources:DISK_GB"="0" \
    --property "resources:MEMORY_MB"="0" \
    --property "resources:VCPU"="0" computeHCI
  6. Map the flavor to a new profile:

    $ openstack flavor set --property "capabilities:profile"="computeHCI" computeHCI
  7. Retrieve a list of your nodes to identify their UUIDs:

    $ openstack baremetal node list
  8. Tag nodes into the new profile:

    $ openstack baremetal node set --property capabilities='profile:computeHCI,boot_option:local' <UUID>

    For more information, see Manually Tagging the Nodes and Assigning Nodes and Flavors to Roles.

  9. Add the following configuration to the node-info.yaml file to associate the computeHCI flavor with the ComputeHCI role:

      OvercloudComputeHCIFlavor: computeHCI
      ComputeHCICount: 3