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 Controller, Compute, and CephStorage roles. Add any other roles you intend to use in your overcloud to the command.
For detailed information about custom roles, see Composable Services and Custom Roles and Examining the roles_data File from Advanced Overcloud Customization.
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 ports.yaml in ~/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
- 1
- If you are using DVR, replace this line with:
OS::TripleO::ComputeHCI::Ports::ExternalPort: /usr/share/openstack-tripleo-heat-templates/network/ports/external.yaml
See Configure Distributed Virtual Routing (DVR) from the Networking Guide for more details.
- 2
- If you want the
ComputeHCIrole to select from a pool of IPs, replace this line with:OS::TripleO::ComputeHCI::Ports::StorageMgmtPort: /usr/share/openstack-tripleo-heat-templates/network/ports/storage_mgmt_from_pool.yaml
If your environment uses IPv6 addresses, replace this line with:
OS::TripleO::ComputeHCI::Ports::StorageMgmtPort: /usr/share/openstack-tripleo-heat-templates/network/ports/storage_mgmt_v6.yaml
If you want the
ComputeHCIrole to select from a pool of IPv6 addresses, use:OS::TripleO::ComputeHCI::Ports::StorageMgmtPort: /usr/share/openstack-tripleo-heat-templates/network/ports/storage_mgmt_from_pool_v6.yaml
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.
See Isolating Networks and Selecting Networks to Deploy (from Advanced Overcloud Customization) for related information.
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
osdcompute, run:$ openstack flavor create --id auto --ram 6144 --disk 40 --vcpus 4 osdcompute
NoteFor more details about this command, run
openstack flavor create --help.Map this flavor to a new profile, also named
osdcompute:$ openstack flavor set --property "cpu_arch"="x86_64" --property "capabilities:boot_option"="local" --property "capabilities:profile"="osdcompute" osdcompute
NoteFor more details about this command, run
openstack flavor set --help.Tag nodes into the new
osdcomputeprofile:$ ironic node-update UUID add properties/capabilities='profile:osdcompute,boot_option:local'
NoteFor 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.
