c9991c2e31
With I57047682cfa82ba6ca4affff54fab5216e9ba51c Heat has added a new template version for wallaby. This would allow us to use 2-argument variant of the ``if`` function that would allow for e.g. conditional definition of resource properties and help cleanup templates. If only two arguments are passed to ``if`` function, the entire enclosing item is removed when the condition is false. Change-Id: I25f981b60c6a66b39919adc38c02a051b6c51269
299 lines
10 KiB
YAML
299 lines
10 KiB
YAML
|
|
heat_template_version: wallaby
|
|
description: >
|
|
Software Config to drive os-net-config with 2 bonded nics on a bridge with VLANs attached for the Controller role.
|
|
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
|
|
|
|
StorageIpSubnet:
|
|
default: ''
|
|
description: IP address/subnet on the storage network
|
|
type: string
|
|
StorageNetworkVlanID:
|
|
default: 1
|
|
description: Vlan ID for the storage network traffic.
|
|
type: number
|
|
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
|
|
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
|
|
StorageMgmtNetworkVlanID:
|
|
default: 1
|
|
description: Vlan ID for the storage_mgmt network traffic.
|
|
type: number
|
|
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
|
|
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
|
|
InternalApiIpSubnet:
|
|
default: ''
|
|
description: IP address/subnet on the internal_api network
|
|
type: string
|
|
InternalApiNetworkVlanID:
|
|
default: 1
|
|
description: Vlan ID for the internal_api network traffic.
|
|
type: number
|
|
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
|
|
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
|
|
TenantIpSubnet:
|
|
default: ''
|
|
description: IP address/subnet on the tenant network
|
|
type: string
|
|
TenantNetworkVlanID:
|
|
default: 1
|
|
description: Vlan ID for the tenant network traffic.
|
|
type: number
|
|
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
|
|
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
|
|
ExternalIpSubnet:
|
|
default: ''
|
|
description: IP address/subnet on the external network
|
|
type: string
|
|
ExternalNetworkVlanID:
|
|
default: 1
|
|
description: Vlan ID for the external network traffic.
|
|
type: number
|
|
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
|
|
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
|
|
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
|
|
DnsSearchDomains: # Override this via parameter_defaults
|
|
default: []
|
|
description: A list of DNS search domains to be added (in order) to resolv.conf.
|
|
type: comma_delimited_list
|
|
BondInterfaceOvsOptions:
|
|
default: bond_mode=active-backup
|
|
description: 'The ovs_options or bonding_options string for the bond
|
|
interface. Set things like lacp=active and/or bond_mode=balance-slb
|
|
for OVS bonds or like mode=4 for Linux bonds using this option.'
|
|
type: string
|
|
resources:
|
|
|
|
MinViableMtu:
|
|
# This resource resolves the minimum viable MTU for interfaces, bonds and
|
|
# bridges that carry multiple VLANs. Each VLAN may have different MTU. The
|
|
# bridge, bond or interface must have an MTU to allow the VLAN with the
|
|
# largest MTU.
|
|
type: OS::Heat::Value
|
|
properties:
|
|
type: number
|
|
value:
|
|
yaql:
|
|
expression: $.data.max()
|
|
data:
|
|
- {get_param: ControlPlaneMtu}
|
|
- {get_param: StorageMtu}
|
|
- {get_param: StorageMgmtMtu}
|
|
- {get_param: InternalApiMtu}
|
|
- {get_param: TenantMtu}
|
|
- {get_param: ExternalMtu}
|
|
|
|
OsNetConfigImpl:
|
|
type: OS::Heat::SoftwareConfig
|
|
properties:
|
|
group: script
|
|
config:
|
|
str_replace:
|
|
template:
|
|
get_file: ../../scripts/run-os-net-config.sh
|
|
params:
|
|
$network_config:
|
|
network_config:
|
|
- type: interface
|
|
name: nic1
|
|
mtu:
|
|
get_param: ControlPlaneMtu
|
|
use_dhcp: false
|
|
addresses:
|
|
- ip_netmask:
|
|
list_join:
|
|
- /
|
|
- - get_param: ControlPlaneIp
|
|
- get_param: ControlPlaneSubnetCidr
|
|
routes:
|
|
list_concat_unique:
|
|
- get_param: ControlPlaneStaticRoutes
|
|
- type: ovs_bridge
|
|
name: bridge_name
|
|
dns_servers:
|
|
get_param: DnsServers
|
|
domain:
|
|
get_param: DnsSearchDomains
|
|
members:
|
|
- type: ovs_bond
|
|
name: bond1
|
|
mtu:
|
|
get_attr: [MinViableMtu, value]
|
|
ovs_options:
|
|
get_param: BondInterfaceOvsOptions
|
|
members:
|
|
- type: interface
|
|
name: nic2
|
|
mtu:
|
|
get_attr: [MinViableMtu, value]
|
|
primary: true
|
|
- type: interface
|
|
name: nic3
|
|
mtu:
|
|
get_attr: [MinViableMtu, value]
|
|
- type: vlan
|
|
mtu:
|
|
get_param: StorageMtu
|
|
vlan_id:
|
|
get_param: StorageNetworkVlanID
|
|
addresses:
|
|
- ip_netmask:
|
|
get_param: StorageIpSubnet
|
|
routes:
|
|
list_concat_unique:
|
|
- get_param: StorageInterfaceRoutes
|
|
- type: vlan
|
|
mtu:
|
|
get_param: StorageMgmtMtu
|
|
vlan_id:
|
|
get_param: StorageMgmtNetworkVlanID
|
|
addresses:
|
|
- ip_netmask:
|
|
get_param: StorageMgmtIpSubnet
|
|
routes:
|
|
list_concat_unique:
|
|
- get_param: StorageMgmtInterfaceRoutes
|
|
- type: vlan
|
|
mtu:
|
|
get_param: InternalApiMtu
|
|
vlan_id:
|
|
get_param: InternalApiNetworkVlanID
|
|
addresses:
|
|
- ip_netmask:
|
|
get_param: InternalApiIpSubnet
|
|
routes:
|
|
list_concat_unique:
|
|
- get_param: InternalApiInterfaceRoutes
|
|
- type: vlan
|
|
mtu:
|
|
get_param: TenantMtu
|
|
vlan_id:
|
|
get_param: TenantNetworkVlanID
|
|
addresses:
|
|
- ip_netmask:
|
|
get_param: TenantIpSubnet
|
|
routes:
|
|
list_concat_unique:
|
|
- get_param: TenantInterfaceRoutes
|
|
- type: vlan
|
|
mtu:
|
|
get_param: ExternalMtu
|
|
vlan_id:
|
|
get_param: ExternalNetworkVlanID
|
|
addresses:
|
|
- ip_netmask:
|
|
get_param: ExternalIpSubnet
|
|
routes:
|
|
list_concat_unique:
|
|
- get_param: ExternalInterfaceRoutes
|
|
- - default: true
|
|
next_hop:
|
|
get_param: ExternalInterfaceDefaultRoute
|
|
outputs:
|
|
OS::stack_id:
|
|
description: The OsNetConfigImpl resource.
|
|
value:
|
|
get_resource: OsNetConfigImpl
|