tripleo-heat-templates/ci/common/net-config-multinode-os-net-config.yaml
Dan Sneddon f5f6553797 Add per-network routes to NIC templates
This change adds a new {{network.name}}InterfaceRoutes
parameter to network config templates. It takes a list
of routes i.e:
  [{'destination':'10.0.0.0/16', 'nexthop':'10.0.0.1'}]

Co-Authored-By: Harald Jensås <hjensas@redhat.com>
Partial: blueprint tripleo-routed-networks-templates
Depends-On: Ifc5aad7a154c33488a7613c8ee038c92ee6cb1a7
Change-Id: I90aea46d3addab9792c7c9d4feff5c5f61520b9b
2018-07-30 09:53:30 +02:00

201 lines
7.4 KiB
YAML

heat_template_version: rocky
description: >
Software Config to drive os-net-config for a simple bridge configured
with a static IP address for the ctlplane network.
parameters:
ControlPlaneIp:
default: ''
description: IP address/subnet on the ctlplane network
type: string
ControlPlaneSubnetCidr:
default: ''
description: >
The subnet CIDR of the control plane network. (The parameter is
automatically resolved from the ctlplane subnet's cidr attribute.)
type: string
ControlPlaneDefaultRoute:
default: ''
description: The default route of the control plane network. (The parameter
is automatically resolved from the ctlplane subnet's gateway_ip attribute.)
type: string
ExternalIpSubnet:
default: ''
description: IP address/subnet on the external network
type: string
ExternalInterfaceRoutes:
default: []
description: >
Routes for the external network traffic.
JSON route e.g. [{'destination':'10.0.0.0/16', 'nexthop':'10.0.0.1'}]
Unless the default is changed, the parameter is automatically resolved
from the subnet host_routes attribute.
type: json
InternalApiIpSubnet:
default: ''
description: IP address/subnet on the internal_api network
type: string
InternalApiInterfaceRoutes:
default: []
description: >
Routes for the internal_api network traffic.
JSON route e.g. [{'destination':'10.0.0.0/16', 'nexthop':'10.0.0.1'}]
Unless the default is changed, the parameter is automatically resolved
from the subnet host_routes attribute.
type: json
StorageIpSubnet:
default: ''
description: IP address/subnet on the storage network
type: string
StorageInterfaceRoutes:
default: []
description: >
Routes for the storage network traffic.
JSON route e.g. [{'destination':'10.0.0.0/16', 'nexthop':'10.0.0.1'}]
Unless the default is changed, the parameter is automatically resolved
from the subnet host_routes attribute.
type: json
StorageMgmtIpSubnet:
default: ''
description: IP address/subnet on the storage_mgmt network
type: string
StorageMgmtInterfaceRoutes:
default: []
description: >
Routes for the storage_mgmt network traffic.
JSON route e.g. [{'destination':'10.0.0.0/16', 'nexthop':'10.0.0.1'}]
Unless the default is changed, the parameter is automatically resolved
from the subnet host_routes attribute.
type: json
StorageNFSIpSubnet:
default: ''
description: IP address/subnet on the storage_nfs network
type: string
StorageNFSRoutes:
default: []
description: >
Routes for the storage_nfs network traffic.
JSON route e.g. [{'destination':'10.0.0.0/16', 'nexthop':'10.0.0.1'}]
Unless the default is changed, the parameter is automatically resolved
from the subnet host_routes attribute.
type: json
TenantIpSubnet:
default: ''
description: IP address/subnet on the tenant network
type: string
TenantInterfaceRoutes:
default: []
description: >
Routes for the tenant network traffic.
JSON route e.g. [{'destination':'10.0.0.0/16', 'nexthop':'10.0.0.1'}]
Unless the default is changed, the parameter is automatically resolved
from the subnet host_routes attribute.
type: json
ManagementIpSubnet:
default: ''
description: IP address/subnet on the management network
type: string
ManagementInterfaceRoutes:
default: []
description: >
Routes for the management network traffic.
JSON route e.g. [{'destination':'10.0.0.0/16', 'nexthop':'10.0.0.1'}]
Unless the default is changed, the parameter is automatically resolved
from the subnet host_routes attribute.
type: json
OvSBridgeMtu:
default: 1300
description: The mtu of the OvS bridge
type: number
DnsServers: # Override this via parameter_defaults
default: []
description: >
DNS servers to use for the Overcloud (2 max for some implementations).
If not set the nameservers configured in the ctlplane subnet's
dns_nameservers attribute will be used.
type: comma_delimited_list
EC2MetadataIp:
default: ''
description: The IP address of the EC2 metadata server. (The parameter
is automatically resolved from the ctlplane subnet's host_routes attribute.)
type: string
resources:
OsNetConfigImpl:
type: OS::Heat::SoftwareConfig
properties:
group: script
config:
list_join:
- ''
- - |
#!/bin/bash
function network_config_hook {
primary_private_ip=$(cat /etc/nodepool/primary_node_private)
sed -i "s/primary_private_ip/$primary_private_ip/" /etc/os-net-config/config.json
subnode_private_ip=$(cat /etc/nodepool/node_private)
sed -i "s/subnode_private_ip/$subnode_private_ip/" /etc/os-net-config/config.json
# We start with an arbitrarily high vni key so that we don't
# overlap with Neutron created values. These will also match the
# values that we've been using previously from the devstack-gate
# code.
vni=1000002
subnode_index=$(grep -n $(cat /etc/nodepool/node_private) /etc/nodepool/sub_nodes_private | cut -d: -f1)
let vni+=$subnode_index
sed -i "s/vni/$vni/" /etc/os-net-config/config.json
export interface_name="br-ex_$primary_private_ip"
# Until we are fully migrated to os-net-config we need
# to clean up the old bridge first created by
# devstack-gate. However, if $interface_name is already
# present in `ovs-vsctl show`, assume our br-ex is
# already configured. (Mainly for upgrade job, to avoid
# deleting br-ex during upgrade.)
if ! ovs-vsctl show | grep $interface_name &> /dev/null; then
ovs-vsctl del-br br-ex
fi
}
-
str_replace:
template:
get_file: ../../network/scripts/run-os-net-config.sh
params:
$network_config:
network_config:
- type: ovs_bridge
name: bridge_name
mtu:
get_param: OvSBridgeMtu
use_dhcp: false
addresses:
- ip_netmask:
list_join:
- "/"
- - get_param: ControlPlaneIp
- get_param: ControlPlaneSubnetCidr
members:
- type: ovs_tunnel
name: interface_name
tunnel_type: vxlan
ovs_options:
- list_join:
- "="
- - key
- vni
- list_join:
- "="
- - remote_ip
- primary_private_ip
- list_join:
- "="
- - local_ip
- subnode_private_ip
outputs:
OS::stack_id:
description: The OsNetConfigImpl resource.
value: {get_resource: OsNetConfigImpl}