diff options
author | Dan Radez <dradez@redhat.com> | 2016-04-12 14:39:32 -0400 |
---|---|---|
committer | Dan Radez <dradez@redhat.com> | 2016-06-28 10:02:05 -0400 |
commit | ec53529b33c22eb54f6d9af5aa14e4ef74340963 (patch) | |
tree | d67781d8e834de3c9d803ec5e44e2a3b6bc14d9c /build | |
parent | cc35694a87dfab1afbf429bedf67e2ef63003f3d (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.yaml | 7 | ||||
-rw-r--r-- | build/nics-compute.yaml.template | 203 | ||||
-rw-r--r-- | build/nics-controller.yaml.jinja2 | 154 | ||||
-rw-r--r-- | build/nics-controller.yaml.template | 160 | ||||
-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 %} |