tripleo-heat-templates/ci/common/net-config-multinode-os-net-config.yaml
Harald Jensås 59c5e23c54 Jinja automation for %network%NetworkVlanId
Per-subnet vlan id parameters are already rendered in
network-environment.yaml. This change uses networks data
and roles data so that per-subnet vlan id param is used
when passing the relevant NetworkVlanId data to nic-config
templates.

By using the generic %network%NetworkVlanId (no subnet suffix)
in nic-config templates instead of %network%NetworkVlanId_%subnet%,
this allow homogeneous computes in multiple sites to use the
same nic-config template.

Also use type: number for all vlan parameters.

Closes-Bug: #1821043
Change-Id: Id8e76ae7c41a562f5c47d911c42aa18001c11be1
2019-04-03 00:36:49 +02:00

277 lines
10 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
ControlPlaneStaticRoutes:
default: []
description: >
Routes for the ctlplane 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
ControlPlaneMtu:
default: 1500
description: The maximum transmission unit (MTU) size(in bytes) that is
guaranteed to pass through the data path of the segments in the network.
(The parameter is automatically resolved from the ctlplane network's mtu attribute.)
type: number
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
ExternalMtu:
default: 1500
description: The maximum transmission unit (MTU) size(in bytes) that is
guaranteed to pass through the data path of the segments in the
External network.
type: number
ExternalInterfaceDefaultRoute:
default: ''
description: default route for the external network
type: string
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
InternalApiMtu:
default: 1500
description: The maximum transmission unit (MTU) size(in bytes) that is
guaranteed to pass through the data path of the segments in the
InternalApi network.
type: number
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
StorageMtu:
default: 1500
description: The maximum transmission unit (MTU) size(in bytes) that is
guaranteed to pass through the data path of the segments in the
Storage network.
type: number
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
StorageMgmtMtu:
default: 1500
description: The maximum transmission unit (MTU) size(in bytes) that is
guaranteed to pass through the data path of the segments in the
StorageMgmt network.
type: number
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
TenantMtu:
default: 1500
description: The maximum transmission unit (MTU) size(in bytes) that is
guaranteed to pass through the data path of the segments in the
Tenant network.
type: number
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
ManagementMtu:
default: 1500
description: The maximum transmission unit (MTU) size(in bytes) that is
guaranteed to pass through the data path of the segments in the
Management network.
type: number
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
# NOTE(hjensas): We need these because the default network_data.yaml define
# vlan for all networks.
ExternalNetworkVlanID:
default: 10
description: Vlan ID for the external network traffic.
type: number
InternalApiNetworkVlanID:
default: 20
description: Vlan ID for the internal_api network traffic.
type: number
StorageNetworkVlanID:
default: 30
description: Vlan ID for the storage network traffic.
type: number
StorageMgmtNetworkVlanID:
default: 40
description: Vlan ID for the storage_mgmt network traffic.
type: number
TenantNetworkVlanID:
default: 50
description: Vlan ID for the tenant network traffic.
type: number
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}