Chapter 10. Deploying multiple overclouds

Important

This feature is available in this release as a Technology Preview, and therefore is not fully supported by Red Hat. It should only be used for testing, and should not be deployed in a production environment. For more information about Technology Preview features, see Scope of Coverage Details.

You can use a single undercloud node to deploy and manage multiple overclouds. Each overcloud is a unique heat stack that does not share stack resources. This can be useful for environments where a 1:1 ratio of underclouds to overclouds creates an unmanageable amount of overhead. For example, Edge, multi-site, and multi-product environments.

The overcloud environments in a multiple overcloud deployment are completely separate, and you can use the source command to switch between the environments. Each overcloud has a unique credential file which is created by the deployment process. To interact with an overcloud, you must source the appropriate credential file.

If you use the Bare Metal Provisioning service (ironic) for bare metal provisioning, all overclouds must be on the same provisioning network. If it is not possible to use the same provisioning network, you can use the deployed servers method to deploy multiple overclouds with routed networks. In this scenario, you must ensure that the value in the HostnameMap parameter matches the stack name for each overcloud.

To deploy multiple overclouds on a single undercloud, you must perform the following tasks:

  1. Deploy the undercloud. For more information, Part I. Director installation and configuration.
  2. Deploy your first overcloud. For more information, see Part II. Basic overcloud deployment.
  3. Deploy your additional overclouds by creating a new set of environment files for the new overcloud and specifying the core heat templates together with the new configuration files and a new stack name in the deployment command.

10.1. Deploying an additional overcloud

You can deploy more than one overcloud on a single undercloud. The following procedure illustrates how to create and deploy a new overcloud, overcloud-two, on an existing Red Hat OpenStack Platform (RHOSP) deployment that has an existing overcloud, overcloud-one.

Prerequisites

  • An undercloud.
  • One or more overclouds.
  • Nodes that are available for your additional overcloud.
  • Custom networks for additional overclouds so that each overcloud has a unique network in the resulting stack.

Procedure

  1. Log in to the undercloud host as the stack user.
  2. Source the stackrc undercloud credentials file:

    $ source ~/stackrc
  3. Create a new directory for the additional overcloud that you want to deploy:

    (undercloud)$ mkdir ~/overcloud-two
  4. Copy the network_data.yaml file from the existing overcloud to the new directory for the additional overcloud:

    (undercloud)$ cp network_data.yaml ~/overcloud-two/network_data.yaml
  5. Open the ~/overcloud-two/network_data.yaml file and update name_lower to a unique name for the the additional overcloud network:

    - name: InternalApi
      name_lower: internal_api_cloud_2
      ...
  6. Add service_net_map_replace if not already present, and set the value to the default value of the additional overcloud network:

    - name: InternalApi
      name_lower: internal_api_cloud_2
      service_net_map_replace: internal_api
  7. Specify the VLAN IDs for each subnet on the additional overcloud:

    - name: InternalApi
      ...
      vip: true
      vlan: 21
      ip_subnet: '172.21.0.0/24'
      allocation_pools: [{'start': '172.21.0.4', 'end': '172.21.0.250'}]
      ipv6_subnet: 'fd00:fd00:fd00:2001::/64'
      ipv6_allocation_pools: [{'start': 'fd00:fd00:fd00:2001::10', 'end': 'fd00:fd00:fd00:2001:ffff:ffff:ffff:fffe'}]
      mtu: 1500
    - name: Storage
      ...
  8. Specify the IP address of the gateway for the overcloud-two external network:

    - name: External
      ...
      gateway_ip: <ip_address>
      ...
    • Replace <ip_address> with the IP address of the gateway for the overcloud-two external network, for example, 10.0.10.1.
  9. Create a network configuration file for the additional overcloud that overrides the default isolated network configuration provided in the /usr/share/openstack-tripleo-heat-templates/environments/network-environment.yaml file, for example, network_overrides.yaml.
  10. Open the ~/overcloud-two/network_overrides.yaml file and add the IP address of the overcloud-two DNS server:

    parameter_defaults:
      ...
      DnsServers:
        - <ip_address>
      ...
    • Replace <ip_address> with the IP address of the overcloud-two DNS server, for example, 10.0.10.2.
  11. If your deployment uses predictable IP addresses, then configure the IP addresses for the overcloud-two nodes in a new network IP address mapping file, ips-from-pool-overcloud-two.yaml:

    parameter_defaults:
      ControllerIPs:
      ...
        internal_api_cloud_2:
        - 192.168.1.10
        - 192.168.1.11
        - 192.168.1.12
        ...
        external_cloud_2:
        - 10.0.1.41
        ...
  12. Add your overcloud-two environment files to the stack with your other environment files and deploy the additional overcloud:

    (undercloud)$ openstack overcloud deploy --templates \
      --stack overcloud-two \
      -n ~/overcloud-two/network_data.yaml \
      -e /usr/share/openstack-tripleo-heat-templates/environments/network-isolation.yaml \
      -e /usr/share/openstack-tripleo-heat-templates/environments/network-environment.yaml \
      -e /usr/share/openstack-tripleo-heat-templates/environments/net-single-nic-with-vlans.yaml \
      -e ~/overcloud-two/network_overrides.yaml \
      -e [your environment files] \
      ...

    The deployment process creates overcloud-tworc for interacting with and managing overcloud-two.

  13. To interact with your additional overcloud, source the overcloud credential file:

    $ source overcloud-tworc

10.2. Managing multiple overclouds

Each overcloud that you deploy uses the same set of core heat templates /usr/share/openstack-tripleo-heat-templates. Red Hat recommends that you do not modify or duplicate these templates, because using a non-standard set of core templates can introduce issues with updates and upgrades.

Instead, for ease of management when you deploy or maintain multiple overclouds, create separate directories of environment files specific to each cloud. When you run the deploy command for each cloud, include the core heat templates together with the cloud-specific environment files that you create separately. For example, create the following directories for the undercloud and two overclouds:

~stack/undercloud
Contains the environment files specific to the undercloud.
~stack/overcloud-one
Contains the environment files specific to the first overcloud.
~stack/overcloud-two
Contains the environment files specific to the second overcloud.

When you deploy or redeploy overcloud-one or overcloud-two, include the core heat templates in the deploy command with the --templates option, and then specify any additional environment files from the cloud-specific environment file directories.

Alternatively, create a repository in a version control system and use branches for each deployment. For more information, see the Using Customized Core Heat Templates section of the Advanced Overcloud Customization guide.

Use the following command to view a list of overcloud plans that are available:

$ openstack overcloud plan list

Use the following command to view a list of overclouds that are currently deployed:

$ openstack stack list