Chapter 5. Deploy the edge without storage

You can deploy a distributed compute node cluster without Block storage at edge sites if you use the Object Storage service (swift) as a back end for the Image service (glance) at the central location. A site deployed without block storage cannot be updated later to have block storage due to the differing role and networking profiles for each architecture.


The following procedure uses lvm as the back end for the Block Storage service (cinder), which is not supported for production. You must deploy a certified block storage solution as a back end for the Block Storage service.

5.1. Deploying edge nodes without storage

You can deploy edge compute nodes that will use the central location as the control plane. This procedure shows how to add a new DCN stack to your deployment and reuse the configuration from the existing heat stack to create new environment files. The first heat stack deploys an overcloud within a centralized datacenter. Create additional heat stacks to deploy Compute nodes to a remote location.

5.1.1. Configuring the distributed compute node environment files


  1. Generate the configuration files that the DCN sites require:

    openstack overcloud export \
    --config-download-dir /var/lib/mistral/central \
    --stack central --output-file ~/dcn-common/central-export.yaml

This procedure creates a new central-export.yaml environment file and uses the passwords in the plan-environment.yaml file from the overcloud. The central-export.yaml file contains sensitive security data. To improve security, you can remove the file when you no longer require it.


When you specify the directory for the --config-download-dir option, use the central hub Ansible configuration that director creates in /var/lib/mistral during deployment. Do not use Ansible configuration that you manually generate with the openstack overcloud config download command. The manually generated configuration lacks certain files that are created only during a deployment operation.

  1. Generate roles for the edge location using roles appropriate for your environment:

    openstack overcloud roles generate Compute DistributedComputeScaleOut -o ~/dcn0/dcn0_roles.yaml

If you are using ML2/OVS for networking overlay, you must edit the roles file that you created to include the NeutronDhcpAgent and NeutronMetadataAgent roles:

    - OS::TripleO::Services::MySQLClient
    - OS::TripleO::Services::NeutronBgpVpnBagpipe
+   - OS::TripleO::Services::NeutronDhcpAgent
+   - OS::TripleO::Services::NeutronMetadataAgent
    - OS::TripleO::Services::NeutronLinuxbridgeAgent
    - OS::TripleO::Services::NeutronVppAgent
    - OS::TripleO::Services::NovaAZConfig
    - OS::TripleO::Services::NovaCompute


For more information, see

5.1.2. Deploying the Compute nodes to the DCN site

This procedure uses the Compute role to deploy Compute nodes to an availability zone (AZ) named dcn0. In a distributed compute node (DC) context, this role is used for sites without storage.


  1. Review the overrides for the distributed compute (DCN) site in dcn0/overrides.yaml

      ComputeCount: 3
      ComputeFlavor: baremetal
        'capabilities:node': '0-compute-%index%'
      NovaAZAttach: false
  2. Create a new file called site-name.yaml in the ~/dcn0 directory with the following contents:

      OS::TripleO::Services::NovaAZConfig: /usr/share/openstack-tripleo-heat-templates/deployment/nova/nova-az-config.yaml
      NovaComputeAvailabilityZone: dcn0
      RootStackName: dcn0
  3. Retrieve the container images for the DCN Site:

    sudo openstack tripleo container image prepare \
    --environment-directory dcn0 \
    -r ~/dcn0/roles_data.yaml \
    -e ~/dcn-common/central-export.yaml \
    -e ~/containers-prepare-parameter.yaml \
    --output-env-file ~/dcn0/dcn0-images-env.yaml
  4. Run the deployment script for dcn0:

    source ~/stackrc
    time openstack overcloud deploy \
         --stack $STACK \
         --templates /usr/share/openstack-tripleo-heat-templates/ \
         -e /usr/share/openstack-tripleo-heat-templates/environments/nova-az-config.yaml \
         -e ~/dcn-common/central-export.yaml \
         -e ~/dcn0/dcn0-images-env.yaml \
         -e ~/dcn0/site-name.yaml \
         -e ~/dcn0/overrides.yaml

    If you deploy additional edge sites that require edits to the network_data.yaml file, you must execute a stack update at the central location.

  5. You must ensure that nova cell_v2 host mappings are created in the nova API database after the edge locations are deployed. Run the following command on the undercloud:

    TRIPLEO_PLAN_NAME=central \
    ansible -i /usr/bin/tripleo-ansible-inventory \
    nova_api[0] -b -a \
    "{{ container_cli }} exec -it nova_api \
    nova-manage cell_v2 discover_hosts --by-service --verbose"

    If you scale up an edge site, you must run this command again.


You must include heat templates for the configuration of networking in your openstack overcloud deploy command. Designing for edge architecture requires spine and leaf networking. See Spine Leaf Networking for more details.

5.2. Excluding specific image types at the edge

By default, Compute nodes advertise all image formats that they support. If your Compute nodes do not use Ceph storage, exclude RAW images from the image format advertisement. The RAW image format consumes more network bandwidth and local storage than QCOW2 images and is inefficient when used at edge sites without Ceph storage. Use the NovaImageTypeExcludeList parameter to exclude specific image formats:


Do not use this parameter at edge sites with Ceph, because Ceph requires RAW images.


Compute nodes that do not advertise RAW images cannot host instances created from RAW images. This can affect snapshot-redeploy and shelving.


  • Red Hat OpenStack Platform director is installed
  • The central location is installed
  • Compute nodes are available for a DCN deployment


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

    $ source ~/stackrc
  3. Include the NovaImageTypeExcludeList parameter in your custom templates:

            - raw
  4. Include the environment file that contains the NovaImageTypeExcludeList parameter in the overcloud deployment command, along with any other environment files relevant to your deployment:

    openstack overcloud deploy --templates \
    -n network_data.yaml \
    -r roles_data.yaml \
    -e <environment_files> \
    -e <new_environment_file>