Chapter 8. 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 having 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 the multi-overcloud scenario are completely separate, and you can use the source command to switch between the environments. If you use 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, ensuring that the value in the HostnameMap parameter matches the stack name for each overcloud.

Use the following workflow to understand the basic process:

Deploying the undercloud
Deploy the undercloud as normal. For more information, see Part I, “Director Installation and Configuration”.
Deploying the first overcloud
Deploy the first overcloud as normal. For more information, see Part II, “Basic Overcloud Deployment”.
Deploying additional overclouds
Create a new set of environment files for the new overcloud. Run the deploy command, specifying the core heat templates together with the new configuration files and a new stack name.

8.1. Deploying additional overclouds

In this example, overcloud-one is the existing overcloud. Complete the following steps to deploy a new overcloud overcloud-two.

Prerequisites

Before you begin deploying additional overclouds, ensure that your environment contains the following configurations:

  • Successful undercloud and overcloud deployments.
  • Nodes available for your additional overcloud.
  • Custom networks for additional overclouds so that each overcloud has a unique network in the resulting stack.

Procedure

  1. Create a new directory for the additional overcloud that you want to deploy:

    $ mkdir ~/overcloud-two
  2. In the new directory, create new environment files specific to the requirements of the additional overcloud, and copy any relevant environment files from the existing overcloud:

    $ cp network-data.yaml ~/overcloud-two/network-data.yaml
    $ cp network-environment.yaml ~/overcloud-two/network-environment.yaml
  3. Modify the environment files according to the specification of the new overcloud. For example, the existing overcloud has the name overcloud-one and uses the VLANs that you define in the network-data.yaml environment file:

    - name: InternalApi
      name_lower: internal_api_cloud_1
      service_net_map_replace: internal_api
      vip: true
      vlan: 20
      ip_subnet: '172.17.0.0/24'
      allocation_pools: [{'start': '172.17.0.4', 'end': '172.17.0.250'}]
      ipv6_subnet: 'fd00:fd00:fd00:2000::/64'
      ipv6_allocation_pools: [{'start': 'fd00:fd00:fd00:2000::10', 'end': 'fd00:fd00:fd00:2000:ffff:ffff:ffff:fffe'}]
      mtu: 1500
    - name: Storage
      ...

    The new overcloud has the name overcloud-two and uses different VLANs. Edit the ~/overcloud-two/network-data.yaml environment file and include the new VLAN IDs for each subnet. You must also define a unique name_lower value, and set the service_net_map_replace attribute to the name of the network that you want to replace:

    - name: InternalApi
      name_lower: internal_api_cloud_2
      service_net_map_replace: internal_api
      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
      ...
  4. Modify the following parameters in the ~/overcloud-two/network-environment.yaml file:

    • Enter a unique value in the {'provider:physical_network'} attribute of the ExternalNetValueSpecs parameter so that overcloud-two has a distinct external network, and define the network type with the 'provider:network_type' attribute.
    • Set the ExternalInterfaceDefaultRoute parameter to the IP address of the gateway for the external network so that the overcloud has external access.
    • Set the DnsServers parameter to the IP address of your DNS server so that the overcloud can reach the DNS server.

      parameter_defaults:
        ...
        ExternalNetValueSpecs: {'provider:physical_network': 'external_2', 'provider:network_type': 'flat'}
        ExternalInterfaceDefaultRoute: 10.0.10.1
        DnsServers:
          - 10.0.10.2
        ...
  5. Run the openstack overcloud deploy command. Specify the core heat template collection with the --templates option, a new stack name with the --stack option, and any new environment files from the ~/overcloud-two directory:

    $ openstack overcloud deploy --templates \
        --stack overcloud-two \
        ...
        -n ~/overcloud-two/network-data.yaml \
        -e ~/overcloud-two/network-environment.yaml \
        -e /usr/share/openstack-tripleo-heat-templates/environments/network-isolation.yaml \
        -e /usr/share/openstack-tripleo-heat-templates/environments/net-single-nic-with-vlans.yaml \
        ...

Each overcloud has a unique credential file. In this example, the deployment process creates overcloud-onerc for overcloud-one, and overcloud-tworc for overcloud-two. To interact with either overcloud, you must source the appropriate credential file. For example, to source the credential for the first overcloud, run the following command:

$ source overcloud-onerc

8.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, as using a non-standard set of core templates can introduce issues with updates and upgrades.

Instead, for ease of management when deploying or maintaining 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