summaryrefslogtreecommitdiffstats
path: root/build
diff options
context:
space:
mode:
authorDan Radez <dradez@redhat.com>2016-04-12 14:39:32 -0400
committerDan Radez <dradez@redhat.com>2016-06-28 10:02:05 -0400
commitec53529b33c22eb54f6d9af5aa14e4ef74340963 (patch)
treed67781d8e834de3c9d803ec5e44e2a3b6bc14d9c /build
parentcc35694a87dfab1afbf429bedf67e2ef63003f3d (diff)
Adding VLAN support
JIRA: APEX-136 JIRA: APEX-30 Change-Id: I7cbbe11f4c1f1455dba253733c78fe8dc215de97 Signed-off-by: Dan Radez <dradez@redhat.com>
Diffstat (limited to 'build')
-rw-r--r--build/network-environment.yaml7
-rw-r--r--build/nics-compute.yaml.template203
-rw-r--r--build/nics-controller.yaml.jinja2154
-rw-r--r--build/nics-controller.yaml.template160
-rw-r--r--build/nics-template.yaml.jinja2 (renamed from build/nics-compute.yaml.jinja2)76
5 files changed, 73 insertions, 527 deletions
diff --git a/build/network-environment.yaml b/build/network-environment.yaml
index 874e0112..baf8b187 100644
--- a/build/network-environment.yaml
+++ b/build/network-environment.yaml
@@ -54,6 +54,13 @@ parameter_defaults:
StorageNetCidr: 172.18.0.0/24
StorageAllocationPools: [{'start': '172.18.0.10', 'end': '172.18.0.200'}]
+ # Customize the VLAN IDs to match the local environment
+ InternalApiNetworkVlanID: 10 # usually collapsed onto Admin/Provisioning
+ StorageNetworkVlanID: 20
+ # StorageMgmtNetworkVlanID: 30 # NOT IMPLEMENTED
+ TenantNetworkVlanID: 40
+ ExternalNetworkVlanID: 50
+
parameters:
ServiceNetMap:
NeutronTenantNetwork: tenant
diff --git a/build/nics-compute.yaml.template b/build/nics-compute.yaml.template
deleted file mode 100644
index 86f3972a..00000000
--- a/build/nics-compute.yaml.template
+++ /dev/null
@@ -1,203 +0,0 @@
-#!/bin/bash
-if [[ $nics_cfg == *_private* ]]; then
- private_net=$( cat << END
-
- -
- # Create a bridge which can also be used for VLAN-mode bridge mapping
- type: ovs_bridge
- name: br-tenant
- use_dhcp: false
- addresses:
- -
- ip_netmask: {get_param: TenantIpSubnet}
- members:
- -
- type: interface
- name: nic2
- use_dhcp: false
- # force the MAC address of the bridge to this interface
- primary: true
-END
-)
-fi
-
-if [[ $nics_cfg == *_storage* ]]; then
- storage_net=$( cat << END
- -
- type: interface
- name: nic4
- use_dhcp: false
- addresses:
- -
- ip_netmask: {get_param: StorageIpSubnet}
-END
-)
-fi
-
-if [[ $nics_cfg == *_br-ex* ]]; then
- br_ex=$( cat << END
-
- members:
- -
- type: interface
- name: nic3
- # force the MAC address of the bridge to this interface
- primary: true
-
-END
-)
- nic3=$( cat << END
-
- -
- type: ovs_bridge
- name: {get_input: bridge_name}
-END
-)
-else
- nic3=$( cat << END
-
- -
- type: interface
- name: nic3
-
-END
-)
-fi
-
-if [[ $nics_cfg == *_no-public-ip* ]]; then
- if [[ $nics_cfg == *_br-ex* ]]; then
- nic3+=$( cat << END
-
- use_dhcp: false
-END
-)
- else
- nic3=""
- fi
-else
- nic3+=$( cat << END
-
- use_dhcp: false
- addresses:
- -
- ip_netmask: {get_param: ExternalIpSubnet}
- routes:
- -
- ip_netmask: 0.0.0.0/0
- next_hop: {get_param: ExternalInterfaceDefaultRoute}
-END
-)
-fi
-
-cat <<END
-heat_template_version: 2015-04-30
-
-description: >
- Software Config to drive os-net-config to configure multiple interfaces
- for the compute role.
-
-parameters:
- ControlPlaneIp:
- default: ''
- description: IP address/subnet on the ctlplane network
- type: string
- ExternalIpSubnet:
- default: ''
- description: IP address/subnet on the external network
- type: string
- InternalApiIpSubnet:
- default: ''
- description: IP address/subnet on the internal API network
- type: string
- StorageIpSubnet:
- default: ''
- description: IP address/subnet on the storage network
- type: string
- StorageMgmtIpSubnet:
- default: ''
- description: IP address/subnet on the storage mgmt network
- type: string
- StorageMgmtNetworkVlanID:
- default: 40
- description: Vlan ID for the storage mgmt network traffic.
- type: number
- TenantIpSubnet:
- default: ''
- description: IP address/subnet on the tenant network
- type: string
- ManagementIpSubnet: # Only populated when including environments/network-management.yaml
- default: ''
- description: IP address/subnet on the management network
- type: string
- 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
- TenantNetworkVlanID:
- default: 50
- description: Vlan ID for the tenant network traffic.
- type: number
- ManagementNetworkVlanID:
- default: 60
- description: Vlan ID for the management network traffic.
- type: number
- ExternalInterfaceDefaultRoute:
- default: '10.0.0.1'
- description: default route for the external network
- type: string
- ControlPlaneSubnetCidr: # Override this via parameter_defaults
- default: '24'
- description: The subnet CIDR of the control plane network.
- type: string
- ControlPlaneDefaultRoute: # Override this via parameter_defaults
- description: The default route of the control plane network.
- type: string
- DnsServers: # Override this via parameter_defaults
- default: []
- description: A list of DNS servers (2 max for some implementations) that will be added to resolv.conf.
- type: comma_delimited_list
- EC2MetadataIp: # Override this via parameter_defaults
- description: The IP address of the EC2 metadata server.
- type: string
-
-resources:
- OsNetConfigImpl:
- type: OS::Heat::StructuredConfig
- properties:
- group: os-apply-config
- config:
- os_net_config:
- network_config:
- -
- type: interface
- name: nic1
- use_dhcp: false
- dns_servers: {get_param: DnsServers}
- addresses:
- -
- ip_netmask:
- list_join:
- - '/'
- - - {get_param: ControlPlaneIp}
- - {get_param: ControlPlaneSubnetCidr}
- routes:
- -
- ip_netmask: 169.254.169.254/32
- next_hop: {get_param: EC2MetadataIp}
- -
- default: true
- next_hop: {get_param: ControlPlaneDefaultRoute}$private_net$nic3$br_ex
-$storage_net
-outputs:
- OS::stack_id:
- description: The OsNetConfigImpl resource.
- value: {get_resource: OsNetConfigImpl}
-END
diff --git a/build/nics-controller.yaml.jinja2 b/build/nics-controller.yaml.jinja2
deleted file mode 100644
index d97ee394..00000000
--- a/build/nics-controller.yaml.jinja2
+++ /dev/null
@@ -1,154 +0,0 @@
-heat_template_version: 2015-04-30
-
-description: >
- Software Config to drive os-net-config to configure multiple interfaces
- for the controller role.
-
-parameters:
- ControlPlaneIp:
- default: ''
- description: IP address/subnet on the ctlplane network
- type: string
- ExternalIpSubnet:
- default: ''
- description: IP address/subnet on the external network
- type: string
- InternalApiIpSubnet:
- default: ''
- description: IP address/subnet on the internal API network
- type: string
- StorageIpSubnet:
- default: ''
- description: IP address/subnet on the storage network
- type: string
- StorageMgmtIpSubnet:
- default: ''
- description: IP address/subnet on the storage mgmt network
- type: string
- TenantIpSubnet:
- default: ''
- description: IP address/subnet on the tenant network
- type: string
- ManagementIpSubnet: # Only populated when including environments/network-management.yaml
- default: ''
- description: IP address/subnet on the management network
- type: string
- 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
- ExternalInterfaceDefaultRoute:
- default: '10.0.0.1'
- description: default route for the external network
- type: string
- ControlPlaneSubnetCidr: # Override this via parameter_defaults
- default: '24'
- description: The subnet CIDR of the control plane network.
- type: string
- ControlPlaneDefaultRoute: # Override this via parameter_defaults
- description: The subnet CIDR of the control plane network.
- type: string
- DnsServers: # Override this via parameter_defaults
- default: []
- description: A list of DNS servers (2 max for some implementations) that will be added to resolv.conf.
- type: comma_delimited_list
- EC2MetadataIp: # Override this via parameter_defaults
- description: The IP address of the EC2 metadata server.
- type: string
-
-resources:
- OsNetConfigImpl:
- type: OS::Heat::StructuredConfig
- properties:
- group: os-apply-config
- config:
- os_net_config:
- network_config:
- -
- type: interface
- name: nic1
- use_dhcp: false
- dns_servers: {get_param: DnsServers}
- addresses:
- -
- ip_netmask:
- list_join:
- - '/'
- - - {get_param: ControlPlaneIp}
- - {get_param: ControlPlaneSubnetCidr}
- routes:
- -
- ip_netmask: 169.254.169.254/32
- next_hop: {get_param: EC2MetadataIp}
- {%- if external_net_af == 6 %}
- -
- default: true
- next_hop: {get_param: ControlPlaneDefaultRoute}
- {%- endif %}
- {%- set nic_index = 2 %}
- {%- if 'private_network' in enabled_networks %}
- -
- type: interface
- name: nic{{ nic_index }}{% set nic_index = nic_index + 1 %}
- use_dhcp: false
- addresses:
- -
- ip_netmask: {get_param: TenantIpSubnet}
- {%- endif %}
- -
- type: ovs_bridge
- name: {get_input: bridge_name}
- dns_servers: {get_param: DnsServers}
- use_dhcp: false
- addresses:
- -
- ip_netmask: {get_param: ExternalIpSubnet}
- routes:
- -
- default: true
- next_hop: {get_param: ExternalInterfaceDefaultRoute}
- members:
- -
- type: interface
- name: nic{{ nic_index }}{% set nic_index = nic_index + 1 %}
- # force the MAC address of the bridge to this interface
- primary: true
- {%- if 'storage_network' in enabled_networks %}
- -
- type: interface
- name: nic{{ nic_index }}{% set nic_index = nic_index + 1 %}
- use_dhcp: false
- addresses:
- -
- ip_netmask: {get_param: StorageIpSubnet}
- {%- endif %}
- {%- if 'api_network' in enabled_networks %}
- -
- type: interface
- name: nic{{ nic_index }}{% set nic_index = nic_index + 1 %}
- use_dhcp: false
- addresses:
- -
- ip_netmask: {get_param: InternalApiIpSubnet}
- {%- endif %}
-
-outputs:
- OS::stack_id:
- description: The OsNetConfigImpl resource.
- value: {get_resource: OsNetConfigImpl}
diff --git a/build/nics-controller.yaml.template b/build/nics-controller.yaml.template
deleted file mode 100644
index d5a0bcdd..00000000
--- a/build/nics-controller.yaml.template
+++ /dev/null
@@ -1,160 +0,0 @@
-#!/bin/bash
-if [[ $nics_cfg == *_private* ]]; then
- private_net=$( cat << END
-
- # Create a bridge which can also be used for VLAN-mode bridge mapping
- type: ovs_bridge
- name: br-tenant
- use_dhcp: false
- addresses:
- -
- ip_netmask: {get_param: TenantIpSubnet}
- members:
- -
- type: interface
- name: nic2
- use_dhcp: false
- # force the MAC address of the bridge to this interface
- primary: true
- -
-END
-)
-fi
-
-if [[ $nics_cfg == *_storage* ]]; then
- storage_net=$( cat << END
-
- -
- type: interface
- name: nic4
- use_dhcp: false
- addresses:
- -
- ip_netmask: {get_param: StorageIpSubnet}
-END
-)
-fi
-
-cat <<END
-heat_template_version: 2015-04-30
-
-description: >
- Software Config to drive os-net-config to configure multiple interfaces
- for the controller role.
-
-parameters:
- ControlPlaneIp:
- default: ''
- description: IP address/subnet on the ctlplane network
- type: string
- ExternalIpSubnet:
- default: ''
- description: IP address/subnet on the external network
- type: string
- InternalApiIpSubnet:
- default: ''
- description: IP address/subnet on the internal API network
- type: string
- StorageIpSubnet:
- default: ''
- description: IP address/subnet on the storage network
- type: string
- StorageMgmtIpSubnet:
- default: ''
- description: IP address/subnet on the storage mgmt network
- type: string
- TenantIpSubnet:
- default: ''
- description: IP address/subnet on the tenant network
- type: string
- ManagementIpSubnet: # Only populated when including environments/network-management.yaml
- default: ''
- description: IP address/subnet on the management network
- type: string
- 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
- ExternalInterfaceDefaultRoute:
- default: '10.0.0.1'
- description: default route for the external network
- type: string
- ControlPlaneSubnetCidr: # Override this via parameter_defaults
- default: '24'
- description: The subnet CIDR of the control plane network.
- type: string
- ControlPlaneDefaultRoute: # Override this via parameter_defaults
- description: The subnet CIDR of the control plane network.
- type: string
- DnsServers: # Override this via parameter_defaults
- default: []
- description: A list of DNS servers (2 max for some implementations) that will be added to resolv.conf.
- type: comma_delimited_list
- EC2MetadataIp: # Override this via parameter_defaults
- description: The IP address of the EC2 metadata server.
- type: string
-
-resources:
- OsNetConfigImpl:
- type: OS::Heat::StructuredConfig
- properties:
- group: os-apply-config
- config:
- os_net_config:
- network_config:
- -
- type: interface
- name: nic1
- use_dhcp: false
- dns_servers: {get_param: DnsServers}
- addresses:
- -
- ip_netmask:
- list_join:
- - '/'
- - - {get_param: ControlPlaneIp}
- - {get_param: ControlPlaneSubnetCidr}
- routes:
- -
- ip_netmask: 169.254.169.254/32
- next_hop: {get_param: EC2MetadataIp}
- -$private_net
- type: ovs_bridge
- name: {get_input: bridge_name}
- dns_servers: {get_param: DnsServers}
- use_dhcp: false
- addresses:
- -
- ip_netmask: {get_param: ExternalIpSubnet}
- routes:
- -
- default: true
- next_hop: {get_param: ExternalInterfaceDefaultRoute}
- members:
- -
- type: interface
- name: nic3
- # force the MAC address of the bridge to this interface
- primary: true$storage_net
-
-outputs:
- OS::stack_id:
- description: The OsNetConfigImpl resource.
- value: {get_resource: OsNetConfigImpl}
-END
diff --git a/build/nics-compute.yaml.jinja2 b/build/nics-template.yaml.jinja2
index 1bc2b50a..bdf26cb0 100644
--- a/build/nics-compute.yaml.jinja2
+++ b/build/nics-template.yaml.jinja2
@@ -2,7 +2,7 @@ heat_template_version: 2015-04-30
description: >
Software Config to drive os-net-config to configure multiple interfaces
- for the compute role.
+ for the {{ role }} role.
parameters:
ControlPlaneIp:
@@ -25,10 +25,6 @@ parameters:
default: ''
description: IP address/subnet on the storage mgmt network
type: string
- StorageMgmtNetworkVlanID:
- default: 40
- description: Vlan ID for the storage mgmt network traffic.
- type: number
TenantIpSubnet:
default: ''
description: IP address/subnet on the tenant network
@@ -49,6 +45,10 @@ parameters:
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.
@@ -85,8 +85,55 @@ resources:
os_net_config:
network_config:
-
+ {%- if vlans['private_network'] != 'native' or vlans['storage_network'] != 'native' or vlans['api_network'] != 'native' %}
+ type: ovs_bridge
+ name: {get_input: bridge_name}
+ members:
+ -
+ type: interface
+ name: nic1
+ # force the MAC address of the bridge to this interface
+ primary: true
+ {%- if 'public_network' in enabled_networks and vlans['private_network'] != 'native' %}
+ -
+ type: vlan
+ vlan_id: {get_param: ExternalNetworkVlanID}
+ addresses:
+ -
+ ip_netmask: {get_param: ExternalIpSubnet}
+ routes:
+ -
+ default: true
+ next_hop: {get_param: ExternalInterfaceDefaultRoute}
+ {%- endif %}
+ {%- if 'private_network' in enabled_networks and vlans['private_network'] != 'native' %}
+ -
+ type: vlan
+ vlan_id: {get_param: TenantNetworkVlanID}
+ addresses:
+ -
+ ip_netmask: {get_param: TenantIpSubnet}
+ {%- endif %}
+ {%- if 'storage_network' in enabled_networks and vlans['storage_network'] != 'native' %}
+ -
+ type: vlan
+ vlan_id: {get_param: StorageNetworkVlanID}
+ addresses:
+ -
+ ip_netmask: {get_param: StorageIpSubnet}
+ {%- endif %}
+ {%- if 'api_network' in enabled_networks and vlans['api_network'] != 'native' %}
+ -
+ type: vlan
+ vlan_id: {get_param: InternalApiNetworkVlanID}
+ addresses:
+ -
+ ip_netmask: {get_param: InternalApiIpSubnet}
+ {%- endif %}
+ {%- else %}
type: interface
name: nic1
+ {%- endif %}
use_dhcp: false
dns_servers: {get_param: DnsServers}
addresses:
@@ -100,11 +147,14 @@ resources:
-
ip_netmask: 169.254.169.254/32
next_hop: {get_param: EC2MetadataIp}
+ {%- if external_net_af == 6 or role == 'compute' %}
-
default: true
next_hop: {get_param: ControlPlaneDefaultRoute}
+ {%- endif %}
+
{%- set nic_index = 2 %}
- {%- if 'private_network' in enabled_networks %}
+ {%- if 'private_network' in enabled_networks and vlans['private_network'] == 'native' %}
{%- if ovs_dpdk_bridge == 'br-phy' %}
-
type: interface
@@ -132,19 +182,25 @@ resources:
ip_netmask: {get_param: TenantIpSubnet}
{%- endif %}
{%- endif %}
- {%- if external_net_type == "interface" %}
+ {%- if 'public_network' in enabled_networks and external_net_type == 'interface' and vlans['public_network'] == 'native' %}
-
type: interface
name: nic{{ nic_index }}{% set nic_index = nic_index + 1 %}
+ {%- if role == 'controller' %}
+ dns_servers: {get_param: DnsServers}
+ {%- endif %}
use_dhcp: false
addresses:
-
ip_netmask: {get_param: ExternalIpSubnet}
routes:
-
+ {%- if role == 'controller' %}
+ default: true
+ {%- endif %}
ip_netmask: 0.0.0.0/0
next_hop: {get_param: ExternalInterfaceDefaultRoute}
- {%- else %}
+ {%- elif 'public_network' in enabled_networks and external_net_type == 'br-ex' and vlans['public_network'] == 'native' %}
-
type: ovs_bridge
name: {get_input: bridge_name}
@@ -156,7 +212,7 @@ resources:
# force the MAC address of the bridge to this interface
primary: true
{%- endif %}
- {%- if 'storage_network' in enabled_networks %}
+ {%- if 'storage_network' in enabled_networks and vlans['storage_network'] == 'native' %}
-
type: interface
name: nic{{ nic_index }}{% set nic_index = nic_index + 1 %}
@@ -165,7 +221,7 @@ resources:
-
ip_netmask: {get_param: StorageIpSubnet}
{%- endif %}
- {%- if 'api_network' in enabled_networks %}
+ {%- if 'api_network' in enabled_networks and vlans['api_network'] == 'native' %}
-
type: interface
name: nic{{ nic_index }}{% set nic_index = nic_index + 1 %}