Deploying Heterogeneous Environments

It is possible to deploy an OVB environment with multiple “baremetal” node types. The QuintupleO deployment method must be used, so it would be best to start with a working configuration for that before moving on to heterogeneous deployments.

Each node type will be identified as a role. A simple QuintupleO deployment can be thought of as a single-role deployment. To deploy multiple roles, additional environment files describing the extra roles are required. These environments are simplified versions of the standard environment file. See environments/base-role.yaml for a starting point when writing these role files.


Each extra role consists of exactly one environment file. This means that the standalone option environments cannot be used with roles. To override the options specified for the primary role in a secondary role, the parameter_defaults and resource_registry entries from the option environment must be copied into the role environment.

However, note that most resource_registry entries are filtered out of role environments anyway since they are not relevant for a secondary stack.

Steps for deploying the environment:

  1. Customize the environment files. Make sure all environments have a role key in the parameter_defaults section. When building nodes.json, this role will be automatically assigned to the node, so it is simplest to use one of the default TripleO roles (control, compute, cephstorage, etc.).

  2. Deploy with both roles:

    bin/ --quintupleo --env env-control.yaml --role env-compute.yaml
  3. One Heat stack will be created for each role being deployed. Wait for them all to complete before proceeding.


    Be aware that the extra role stacks will be connected to networks in the primary role stack, so the extra stacks must be deleted before the primary one or the neutron subnets will not delete cleanly.

  4. Build a nodes.json file that can be imported into Ironic:

    bin/build-nodes-json --env env-control.yaml


    Only the primary environment file needs to be passed here. The resources deployed as part of the secondary roles will be named such that they appear to be part of the primary environment.


    If --id was used when deploying, remember to pass the generated environment file to this command instead of the original.