Chapter 10. Deploying multiple overclouds
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 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. In this scenario, you must ensure 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 deployment command, and specify the core heat templates together with the new configuration files and a new
stack
name.
10.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 to deploy 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
Create a new directory for the additional overcloud that you want to deploy:
$ mkdir ~/overcloud-two
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
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 thenetwork-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 uniquename_lower
value, and set theservice_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 ...
Modify the following parameters in the
~/overcloud-two/network-environment.yaml
file:-
Enter a unique value in the
{'provider:physical_network'}
attribute of theExternalNetValueSpecs
parameter so thatovercloud-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 ...
-
Enter a unique value in the
Run the
openstack overcloud deploy
command. Specify the core heat template collection with the--templates
option, a newstack
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
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