Can't override per-role bind IPs with composable networks

Bug #1726884 reported by Steven Hardy
6
This bug affects 1 person
Affects Status Importance Assigned to Milestone
tripleo
Fix Released
High
Steven Hardy

Bug Description

One of the aims of composable networks was to allow multiple l3 segments per rack in a spine/leaf environment, which can be achieved with multiple Compute roles in roles_data combined with per-role networks in network_data.

However to make this work when a service spans multiple roles ServiceNetMap is not enough, we need a way to specify per-role bind IPs, either via per-role ServiceNetMap overrides or (probably simpler) use of the existing per role *ExtraConfig parameters.

As an example:

https://github.com/openstack/tripleo-heat-templates/blob/master/puppet/services/nova-vnc-proxy.yaml#L74

            # NOTE: bind IP is found in Heat replacing the network name with the local node IP
            # for the given network; replacement examples (eg. for internal_api):
            # internal_api -> IP
            # internal_api_uri -> [IP]
            # internal_api_subnet - > IP/CIDR
            nova::vncproxy::host: {get_param: [ServiceNetMap, NovaApiNetwork]}

Here if you deploy the nova vnc proxy service on e.g ComputeRack1 and ComputeRack2 roles, there is no way to override the default ServiceNetMap mapping for nova::vncproxy::host.

One fairly simple way to solve this is to write the NetIpMap to hieradata, so that the following is possible via ExtraConfig parameters:

  parameter_defaults:
    ComputeRack1ExtraConfig:
      nova::vncproxy::host: "%{hiera('rack1_internal_api')}"
    ComputeRack2ExtraConfig:
      nova::vncproxy::host: "%{hiera('rack2_internal_api')}"

This would provide a quick fix for this issue while still leaving the option of an alternative ServiceNetMap related interface in the future.

Steven Hardy (shardy)
Changed in tripleo:
status: New → Triaged
milestone: none → queens-2
assignee: nobody → Steven Hardy (shardy)
importance: Undecided → High
tags: added: pike-backport-potential
Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Fix proposed to tripleo-heat-templates (master)

Fix proposed to branch: master
Review: https://review.openstack.org/514707

Changed in tripleo:
status: Triaged → In Progress
Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Fix merged to tripleo-heat-templates (master)

Reviewed: https://review.openstack.org/514707
Committed: https://git.openstack.org/cgit/openstack/tripleo-heat-templates/commit/?id=65a8b65754d2ea77ec2396658d4e73eb837d34bd
Submitter: Zuul
Branch: master

commit 65a8b65754d2ea77ec2396658d4e73eb837d34bd
Author: Steven Hardy <email address hidden>
Date: Tue Oct 24 10:30:39 2017 +0100

    Add NetIpMap to hieradata for *ExtraConfig overrides

    To enable per-node override of bind IPs via the per-role
    ExtraConfig paramaters, we need to enable hiera interpolation
    that references the keys defined in NetIpMap, so we add them
    to the hieradata. To minimise the risk of any conflicts in
    keynames it's added near the bottom of the hierarchy, but
    I'm not aware of any conflicting names in our templates/modules.

    This will allow per-node hieradata override of bind IPs e.g:

      parameter_defaults:
        ComputeRack1ExtraConfig:
          nova::vncproxy::host: "%{hiera('rack1_internal_api')}"
        ComputeRack2ExtraConfig:
          nova::vncproxy::host: "%{hiera('rack2_internal_api')}"

    Closes-Bug: #1726884
    Change-Id: Icf7da1d78176c2ee0197ff2459d69d995cbb16ad

Changed in tripleo:
status: In Progress → Fix Released
Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Fix proposed to tripleo-heat-templates (stable/pike)

Fix proposed to branch: stable/pike
Review: https://review.openstack.org/517264

Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Fix merged to tripleo-heat-templates (stable/pike)

Reviewed: https://review.openstack.org/517264
Committed: https://git.openstack.org/cgit/openstack/tripleo-heat-templates/commit/?id=7779bc8ad0ab43e2f57225cfded51e7e2ae18004
Submitter: Zuul
Branch: stable/pike

commit 7779bc8ad0ab43e2f57225cfded51e7e2ae18004
Author: Steven Hardy <email address hidden>
Date: Tue Oct 24 10:30:39 2017 +0100

    Add NetIpMap to hieradata for *ExtraConfig overrides

    To enable per-node override of bind IPs via the per-role
    ExtraConfig paramaters, we need to enable hiera interpolation
    that references the keys defined in NetIpMap, so we add them
    to the hieradata. To minimise the risk of any conflicts in
    keynames it's added near the bottom of the hierarchy, but
    I'm not aware of any conflicting names in our templates/modules.

    This will allow per-node hieradata override of bind IPs e.g:

      parameter_defaults:
        ComputeRack1ExtraConfig:
          nova::vncproxy::host: "%{hiera('rack1_internal_api')}"
        ComputeRack2ExtraConfig:
          nova::vncproxy::host: "%{hiera('rack2_internal_api')}"

    Closes-Bug: #1726884
    Change-Id: Icf7da1d78176c2ee0197ff2459d69d995cbb16ad
    (cherry picked from commit 65a8b65754d2ea77ec2396658d4e73eb837d34bd)

tags: added: in-stable-pike
Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Fix included in openstack/tripleo-heat-templates 7.0.4

This issue was fixed in the openstack/tripleo-heat-templates 7.0.4 release.

Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Fix included in openstack/tripleo-heat-templates 8.0.0.0b2

This issue was fixed in the openstack/tripleo-heat-templates 8.0.0.0b2 development milestone.

To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.