Chapter 3. Prepare Overcloud Role for Hyper-Converged Nodes
The Overcloud usually consists of nodes in predefined roles such as Controller nodes, Compute nodes, and different storage node types. Each of these default roles contains a set of services defined in the core Heat template collection on the director node. However, the architecture of the core Heat templates provides a method to:
- Create custom roles
- Add and remove services from each role
This allows us to define a new role with both Compute and Ceph object storage daemon (OSD) services. This effectively colocates both services, allowing you to deploy them together on the same hyper-converged node.
Roles used for the overcloud are defined in the
roles_data.yaml file. You can use the director to generate a customized version of this file, containing all the roles you intend to use for your overcloud. You can then invoke the custom version during Chapter 6, Deployment.
Red Hat OpenStack Platform provides a predefined custom role specifically for hyper-converged nodes, named
ComputeHCI. To use this role, you need to 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
This command will generate a custom
roles_data.yaml file in
/home/stack/roles.data.yaml. This custom file contains the
ComputeHCI role, along with the
CephStorage roles. Add any other roles you intend to use in your overcloud to the command.
3.1. Configuring Port Assignments for the ComputeHCI Role
The default Heat templates in
/usr/share/openstack-tripleo-heat-templates/ provide the necessary network settings for the default roles. These settings include how IP addresses and ports should be assigned for each service on each node.
Custom roles like
ComputeHCI do not have the required port assignment Heat templates, so you need to define these yourself. To do so, create a new Heat template named
~/templates containing the following:
resource_registry: OS::TripleO::ComputeHCI::Ports::ExternalPort: /usr/share/openstack-tripleo-heat-templates/network/ports/noop.yaml 1 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.yaml 2
- If you are using DVR, replace this line with:
- If you want the
ComputeHCIrole to select from a pool of IPs, replace this line with:
If your environment uses IPv6 addresses, replace this line with:
If you want the
ComputeHCIrole to select from a pool of IPv6 addresses, use:
For any other storage IP and port settings, review the other templates in
/usr/share/openstack-tripleo-heat-templates/network/ports/for hints on customization.
3.2. Creating and Assigning a New Flavor
As mentioned in Section 1.1, “Assumptions”, you should have already registered and tagged each node with a corresponding flavor. However, since deploying mixed HCI involves defining a new
ComputeHCI role, you also need to create a new flavor for it:
To create a new flavor named
$ openstack flavor create --id auto --ram 6144 --disk 40 --vcpus 4 osdcomputeNote
For more details about this command, run
openstack flavor create --help.
Map this flavor to a new profile, also named
$ openstack flavor set --property "cpu_arch"="x86_64" --property "capabilities:boot_option"="local" --property "capabilities:profile"="osdcompute" osdcomputeNote
For more details about this command, run
openstack flavor set --help.
Tag nodes into the new
$ ironic node-update UUID add properties/capabilities='profile:osdcompute,boot_option:local'Note
For more details about tagging nodes, see Manually Tagging the Nodes (from Deploying an Overcloud with Containerized Red Hat Ceph).
See Manually Tagging the Nodes and Assigning Nodes and Flavors to Roles (from Deploying an Overcloud with Containerized Red Hat Ceph) for related details.