aboutsummaryrefslogtreecommitdiffstats
path: root/network
diff options
context:
space:
mode:
Diffstat (limited to 'network')
-rw-r--r--network/config/bond-with-vlans/ceph-storage.yaml22
-rw-r--r--network/config/bond-with-vlans/cinder-storage.yaml27
-rw-r--r--network/config/bond-with-vlans/compute.yaml25
-rw-r--r--network/config/bond-with-vlans/controller.yaml37
-rw-r--r--network/config/bond-with-vlans/swift-storage.yaml27
-rw-r--r--network/config/single-nic-vlans/README.md19
-rw-r--r--network/config/single-nic-vlans/ceph-storage.yaml71
-rw-r--r--network/config/single-nic-vlans/cinder-storage.yaml81
-rw-r--r--network/config/single-nic-vlans/compute.yaml81
-rw-r--r--network/config/single-nic-vlans/controller.yaml101
-rw-r--r--network/config/single-nic-vlans/swift-storage.yaml81
-rw-r--r--network/external.yaml6
-rw-r--r--network/internal_api.yaml5
-rw-r--r--network/ports/ctlplane_vip.yaml46
-rw-r--r--network/ports/external.yaml5
-rw-r--r--network/ports/internal_api.yaml5
-rw-r--r--network/ports/net_ip_list_map.yaml30
-rw-r--r--network/ports/net_ip_map.yaml2
-rw-r--r--network/ports/noop.yaml12
-rw-r--r--network/ports/storage.yaml5
-rw-r--r--network/ports/storage_mgmt.yaml5
-rw-r--r--network/ports/tenant.yaml5
-rw-r--r--network/ports/vip.yaml41
-rw-r--r--network/storage.yaml5
-rw-r--r--network/storage_mgmt.yaml5
-rw-r--r--network/tenant.yaml5
26 files changed, 728 insertions, 26 deletions
diff --git a/network/config/bond-with-vlans/ceph-storage.yaml b/network/config/bond-with-vlans/ceph-storage.yaml
index 307a7582..ed9fff7a 100644
--- a/network/config/bond-with-vlans/ceph-storage.yaml
+++ b/network/config/bond-with-vlans/ceph-storage.yaml
@@ -25,6 +25,20 @@ parameters:
default: ''
description: IP address/subnet on the tenant network
type: string
+ BondInterfaceOvsOptions:
+ default: ''
+ description: The ovs_options string for the bond interface. Set things like
+ lacp=active and/or bond_mode=balance-slb using this option.
+ type: string
+ 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
+
resources:
OsNetConfigImpl:
@@ -36,7 +50,7 @@ resources:
network_config:
-
type: ovs_bridge
- name: {get_input: bridge_name}
+ name: br-storage
use_dhcp: true
members:
-
@@ -51,7 +65,7 @@ resources:
-
type: ovs_bond
name: bond1
- ovs_options: vlan_mode=trunk trunks=10,20,30,40,50
+ ovs_options: {get_param: BondInterfaceOvsOptions}
members:
-
type: interface
@@ -63,14 +77,14 @@ resources:
-
type: vlan
device: bond1
- vlan_id: 30
+ vlan_id: {get_param: StorageNetworkVlanID}
addresses:
-
ip_netmask: {get_param: StorageIpSubnet}
-
type: vlan
device: bond1
- vlan_id: 40
+ vlan_id: {get_param: StorageMgmtNetworkVlanID}
addresses:
-
ip_netmask: {get_param: StorageMgmtIpSubnet}
diff --git a/network/config/bond-with-vlans/cinder-storage.yaml b/network/config/bond-with-vlans/cinder-storage.yaml
index 5771d08b..95733fca 100644
--- a/network/config/bond-with-vlans/cinder-storage.yaml
+++ b/network/config/bond-with-vlans/cinder-storage.yaml
@@ -25,6 +25,23 @@ parameters:
default: ''
description: IP address/subnet on the tenant network
type: string
+ BondInterfaceOvsOptions:
+ default: ''
+ description: The ovs_options string for the bond interface. Set things like
+ lacp=active and/or bond_mode=balance-slb using this option.
+ type: string
+ 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
resources:
OsNetConfigImpl:
@@ -36,7 +53,7 @@ resources:
network_config:
-
type: ovs_bridge
- name: {get_input: bridge_name}
+ name: br-storage
use_dhcp: true
members:
-
@@ -51,7 +68,7 @@ resources:
-
type: ovs_bond
name: bond1
- ovs_options: vlan_mode=trunk trunks=10,20,30,40,50
+ ovs_options: {get_param: BondInterfaceOvsOptions}
members:
-
type: interface
@@ -63,21 +80,21 @@ resources:
-
type: vlan
device: bond1
- vlan_id: 20
+ vlan_id: {get_param: InternalApiNetworkVlanID}
addresses:
-
ip_netmask: {get_param: InternalApiIpSubnet}
-
type: vlan
device: bond1
- vlan_id: 30
+ vlan_id: {get_param: StorageNetworkVlanID}
addresses:
-
ip_netmask: {get_param: StorageIpSubnet}
-
type: vlan
device: bond1
- vlan_id: 40
+ vlan_id: {get_param: StorageMgmtNetworkVlanID}
addresses:
-
ip_netmask: {get_param: StorageMgmtIpSubnet}
diff --git a/network/config/bond-with-vlans/compute.yaml b/network/config/bond-with-vlans/compute.yaml
index 6aebee7e..709b3b5b 100644
--- a/network/config/bond-with-vlans/compute.yaml
+++ b/network/config/bond-with-vlans/compute.yaml
@@ -25,6 +25,23 @@ parameters:
default: ''
description: IP address/subnet on the tenant network
type: string
+ BondInterfaceOvsOptions:
+ default: ''
+ description: The ovs_options string for the bond interface. Set things like
+ lacp=active and/or bond_mode=balance-slb using this option.
+ type: string
+ 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
resources:
OsNetConfigImpl:
@@ -51,7 +68,7 @@ resources:
-
type: ovs_bond
name: bond1
- ovs_options: vlan_mode=trunk trunks=10,20,30,40,50
+ ovs_options: {get_param: BondInterfaceOvsOptions}
members:
-
type: interface
@@ -63,21 +80,21 @@ resources:
-
type: vlan
device: bond1
- vlan_id: 20
+ vlan_id: {get_param: InternalApiNetworkVlanID}
addresses:
-
ip_netmask: {get_param: InternalApiIpSubnet}
-
type: vlan
device: bond1
- vlan_id: 30
+ vlan_id: {get_param: StorageNetworkVlanID}
addresses:
-
ip_netmask: {get_param: StorageIpSubnet}
-
type: vlan
device: bond1
- vlan_id: 50
+ vlan_id: {get_param: TenantNetworkVlanID}
addresses:
-
ip_netmask: {get_param: TenantIpSubnet}
diff --git a/network/config/bond-with-vlans/controller.yaml b/network/config/bond-with-vlans/controller.yaml
index 2f6adf32..16a0dec2 100644
--- a/network/config/bond-with-vlans/controller.yaml
+++ b/network/config/bond-with-vlans/controller.yaml
@@ -25,6 +25,31 @@ parameters:
default: ''
description: IP address/subnet on the tenant network
type: string
+ BondInterfaceOvsOptions:
+ default: ''
+ description: The ovs_options string for the bond interface. Set things like
+ lacp=active and/or bond_mode=balance-slb using this option.
+ 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
resources:
OsNetConfigImpl:
@@ -51,7 +76,7 @@ resources:
-
type: ovs_bond
name: bond1
- ovs_options: vlan_mode=trunk trunks=10,20,30,40,50
+ ovs_options: {get_param: BondInterfaceOvsOptions}
members:
-
type: interface
@@ -63,35 +88,35 @@ resources:
-
type: vlan
device: bond1
- vlan_id: 10
+ vlan_id: {get_param: ExternalNetworkVlanID}
addresses:
-
ip_netmask: {get_param: ExternalIpSubnet}
-
type: vlan
device: bond1
- vlan_id: 20
+ vlan_id: {get_param: InternalApiNetworkVlanID}
addresses:
-
ip_netmask: {get_param: InternalApiIpSubnet}
-
type: vlan
device: bond1
- vlan_id: 30
+ vlan_id: {get_param: StorageNetworkVlanID}
addresses:
-
ip_netmask: {get_param: StorageIpSubnet}
-
type: vlan
device: bond1
- vlan_id: 40
+ vlan_id: {get_param: StorageMgmtNetworkVlanID}
addresses:
-
ip_netmask: {get_param: StorageMgmtIpSubnet}
-
type: vlan
device: bond1
- vlan_id: 50
+ vlan_id: {get_param: TenantNetworkVlanID}
addresses:
-
ip_netmask: {get_param: TenantIpSubnet}
diff --git a/network/config/bond-with-vlans/swift-storage.yaml b/network/config/bond-with-vlans/swift-storage.yaml
index 05c0ec48..6549ce7a 100644
--- a/network/config/bond-with-vlans/swift-storage.yaml
+++ b/network/config/bond-with-vlans/swift-storage.yaml
@@ -25,6 +25,23 @@ parameters:
default: ''
description: IP address/subnet on the tenant network
type: string
+ BondInterfaceOvsOptions:
+ default: ''
+ description: The ovs_options string for the bond interface. Set things like
+ lacp=active and/or bond_mode=balance-slb using this option.
+ type: string
+ 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
resources:
OsNetConfigImpl:
@@ -36,7 +53,7 @@ resources:
network_config:
-
type: ovs_bridge
- name: {get_input: bridge_name}
+ name: br-storage
use_dhcp: true
members:
-
@@ -51,7 +68,7 @@ resources:
-
type: ovs_bond
name: bond1
- ovs_options: vlan_mode=trunk trunks=10,20,30,40,50
+ ovs_options: {get_param: BondInterfaceOvsOptions}
members:
-
type: interface
@@ -63,21 +80,21 @@ resources:
-
type: vlan
device: bond1
- vlan_id: 20
+ vlan_id: {get_param: InternalApiNetworkVlanID}
addresses:
-
ip_netmask: {get_param: InternalApiIpSubnet}
-
type: vlan
device: bond1
- vlan_id: 30
+ vlan_id: {get_param: StorageNetworkVlanID}
addresses:
-
ip_netmask: {get_param: StorageIpSubnet}
-
type: vlan
device: bond1
- vlan_id: 40
+ vlan_id: {get_param: StorageMgmtNetworkVlanID}
addresses:
-
ip_netmask: {get_param: StorageMgmtIpSubnet}
diff --git a/network/config/single-nic-vlans/README.md b/network/config/single-nic-vlans/README.md
new file mode 100644
index 00000000..e3e16574
--- /dev/null
+++ b/network/config/single-nic-vlans/README.md
@@ -0,0 +1,19 @@
+This directory contains Heat templates to help configure
+Vlans on a single NICs for each Overcloud role.
+
+Configuration
+-------------
+
+To make use of these templates create a Heat environment that looks
+something like this:
+
+ resource\_registry:
+ OS::TripleO::BlockStorage::Net::SoftwareConfig: network/config/single-nic-vlans/cinder-storage.yaml
+ OS::TripleO::Compute::Net::SoftwareConfig: network/config/single-nic-vlans/compute.yaml
+ OS::TripleO::Controller::Net::SoftwareConfig: network/config/single-nic-vlans/controller.yaml
+ OS::TripleO::ObjectStorage::Net::SoftwareConfig: network/config/single-nic-vlans/swift-storage.yaml
+ OS::TripleO::CephStorage::Net::SoftwareConfig: network/config/single-nic-vlans/ceph-storage.yaml
+
+Or use this Heat environment file:
+
+ environments/net-single-nic-with-vlans.yaml
diff --git a/network/config/single-nic-vlans/ceph-storage.yaml b/network/config/single-nic-vlans/ceph-storage.yaml
new file mode 100644
index 00000000..4a25f763
--- /dev/null
+++ b/network/config/single-nic-vlans/ceph-storage.yaml
@@ -0,0 +1,71 @@
+heat_template_version: 2015-04-30
+
+description: >
+ Software Config to drive os-net-config to configure VLANs for the
+ ceph storage role.
+
+parameters:
+ 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
+ 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
+
+resources:
+ OsNetConfigImpl:
+ type: OS::Heat::StructuredConfig
+ properties:
+ group: os-apply-config
+ config:
+ os_net_config:
+ network_config:
+ -
+ type: ovs_bridge
+ name: br-storage
+ use_dhcp: true
+ members:
+ -
+ type: interface
+ name: nic1
+ # force the MAC address of the bridge to this interface
+ primary: true
+ -
+ type: vlan
+ vlan_id: {get_param: StorageNetworkVlanID}
+ addresses:
+ -
+ ip_netmask: {get_param: StorageIpSubnet}
+ -
+ type: vlan
+ vlan_id: {get_param: StorageMgmtNetworkVlanID}
+ addresses:
+ -
+ ip_netmask: {get_param: StorageMgmtIpSubnet}
+
+outputs:
+ OS::stack_id:
+ description: The OsNetConfigImpl resource.
+ value: {get_resource: OsNetConfigImpl}
diff --git a/network/config/single-nic-vlans/cinder-storage.yaml b/network/config/single-nic-vlans/cinder-storage.yaml
new file mode 100644
index 00000000..397b1ecd
--- /dev/null
+++ b/network/config/single-nic-vlans/cinder-storage.yaml
@@ -0,0 +1,81 @@
+heat_template_version: 2015-04-30
+
+description: >
+ Software Config to drive os-net-config to configure VLANs for the
+ cinder storage role.
+
+parameters:
+ 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
+ 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
+
+resources:
+ OsNetConfigImpl:
+ type: OS::Heat::StructuredConfig
+ properties:
+ group: os-apply-config
+ config:
+ os_net_config:
+ network_config:
+ -
+ type: ovs_bridge
+ name: br-storage
+ use_dhcp: true
+ members:
+ -
+ type: interface
+ name: nic1
+ # force the MAC address of the bridge to this interface
+ primary: true
+ -
+ type: vlan
+ vlan_id: {get_param: InternalApiNetworkVlanID}
+ addresses:
+ -
+ ip_netmask: {get_param: InternalApiIpSubnet}
+ -
+ type: vlan
+ vlan_id: {get_param: StorageNetworkVlanID}
+ addresses:
+ -
+ ip_netmask: {get_param: StorageIpSubnet}
+ -
+ type: vlan
+ vlan_id: {get_param: StorageMgmtNetworkVlanID}
+ addresses:
+ -
+ ip_netmask: {get_param: StorageMgmtIpSubnet}
+
+outputs:
+ OS::stack_id:
+ description: The OsNetConfigImpl resource.
+ value: {get_resource: OsNetConfigImpl}
diff --git a/network/config/single-nic-vlans/compute.yaml b/network/config/single-nic-vlans/compute.yaml
new file mode 100644
index 00000000..c73aed5e
--- /dev/null
+++ b/network/config/single-nic-vlans/compute.yaml
@@ -0,0 +1,81 @@
+heat_template_version: 2015-04-30
+
+description: >
+ Software Config to drive os-net-config to configure VLANs for the
+ compute role.
+
+parameters:
+ 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
+ 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
+
+resources:
+ OsNetConfigImpl:
+ type: OS::Heat::StructuredConfig
+ properties:
+ group: os-apply-config
+ config:
+ os_net_config:
+ network_config:
+ -
+ type: ovs_bridge
+ name: {get_input: bridge_name}
+ use_dhcp: true
+ members:
+ -
+ type: interface
+ name: nic1
+ # force the MAC address of the bridge to this interface
+ primary: true
+ -
+ type: vlan
+ vlan_id: {get_param: InternalApiNetworkVlanID}
+ addresses:
+ -
+ ip_netmask: {get_param: InternalApiIpSubnet}
+ -
+ type: vlan
+ vlan_id: {get_param: StorageNetworkVlanID}
+ addresses:
+ -
+ ip_netmask: {get_param: StorageIpSubnet}
+ -
+ type: vlan
+ vlan_id: {get_param: TenantNetworkVlanID}
+ addresses:
+ -
+ ip_netmask: {get_param: TenantIpSubnet}
+
+outputs:
+ OS::stack_id:
+ description: The OsNetConfigImpl resource.
+ value: {get_resource: OsNetConfigImpl}
diff --git a/network/config/single-nic-vlans/controller.yaml b/network/config/single-nic-vlans/controller.yaml
new file mode 100644
index 00000000..ca0cbcad
--- /dev/null
+++ b/network/config/single-nic-vlans/controller.yaml
@@ -0,0 +1,101 @@
+heat_template_version: 2015-04-30
+
+description: >
+ Software Config to drive os-net-config to configure VLANs for the
+ controller role.
+
+parameters:
+ 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
+ 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::StructuredConfig
+ properties:
+ group: os-apply-config
+ config:
+ os_net_config:
+ network_config:
+ -
+ type: ovs_bridge
+ name: {get_input: bridge_name}
+ use_dhcp: true
+ members:
+ -
+ type: interface
+ name: nic1
+ # force the MAC address of the bridge to this interface
+ primary: true
+ -
+ type: vlan
+ vlan_id: {get_param: ExternalNetworkVlanID}
+ addresses:
+ -
+ ip_netmask: {get_param: ExternalIpSubnet}
+ -
+ type: vlan
+ vlan_id: {get_param: InternalApiNetworkVlanID}
+ addresses:
+ -
+ ip_netmask: {get_param: InternalApiIpSubnet}
+ -
+ type: vlan
+ vlan_id: {get_param: StorageNetworkVlanID}
+ addresses:
+ -
+ ip_netmask: {get_param: StorageIpSubnet}
+ -
+ type: vlan
+ vlan_id: {get_param: StorageMgmtNetworkVlanID}
+ addresses:
+ -
+ ip_netmask: {get_param: StorageMgmtIpSubnet}
+ -
+ type: vlan
+ vlan_id: {get_param: TenantNetworkVlanID}
+ addresses:
+ -
+ ip_netmask: {get_param: TenantIpSubnet}
+
+outputs:
+ OS::stack_id:
+ description: The OsNetConfigImpl resource.
+ value: {get_resource: OsNetConfigImpl}
diff --git a/network/config/single-nic-vlans/swift-storage.yaml b/network/config/single-nic-vlans/swift-storage.yaml
new file mode 100644
index 00000000..f033ced7
--- /dev/null
+++ b/network/config/single-nic-vlans/swift-storage.yaml
@@ -0,0 +1,81 @@
+heat_template_version: 2015-04-30
+
+description: >
+ Software Config to drive os-net-config to configure VLANs for the
+ swift storage role.
+
+parameters:
+ 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
+ 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
+
+resources:
+ OsNetConfigImpl:
+ type: OS::Heat::StructuredConfig
+ properties:
+ group: os-apply-config
+ config:
+ os_net_config:
+ network_config:
+ -
+ type: ovs_bridge
+ name: br-storage
+ use_dhcp: true
+ members:
+ -
+ type: interface
+ name: nic1
+ # force the MAC address of the bridge to this interface
+ primary: true
+ -
+ type: vlan
+ vlan_id: {get_param: InternalApiNetworkVlanID}
+ addresses:
+ -
+ ip_netmask: {get_param: InternalApiIpSubnet}
+ -
+ type: vlan
+ vlan_id: {get_param: StorageNetworkVlanID}
+ addresses:
+ -
+ ip_netmask: {get_param: StorageIpSubnet}
+ -
+ type: vlan
+ vlan_id: {get_param: StorageMgmtNetworkVlanID}
+ addresses:
+ -
+ ip_netmask: {get_param: StorageMgmtIpSubnet}
+
+outputs:
+ OS::stack_id:
+ description: The OsNetConfigImpl resource.
+ value: {get_resource: OsNetConfigImpl}
diff --git a/network/external.yaml b/network/external.yaml
index e9aa5b32..bf4bdfe7 100644
--- a/network/external.yaml
+++ b/network/external.yaml
@@ -33,7 +33,10 @@ parameters:
default: external_subnet
description: The name of the external subnet in Neutron.
type: string
-
+ ExternalAllocationPools:
+ default: [{'start': '10.0.0.4', 'end': '10.0.0.250'}]
+ description: Ip allocation pool range for the external network.
+ type: json
resources:
ExternalNetwork:
@@ -51,6 +54,7 @@ resources:
enable_dhcp: {get_param: ExternalNetEnableDHCP}
name: {get_param: ExternalSubnetName}
network: {get_resource: ExternalNetwork}
+ allocation_pools: {get_param: ExternalAllocationPools}
outputs:
OS::stack_id:
diff --git a/network/internal_api.yaml b/network/internal_api.yaml
index 5abfb117..c7e822e9 100644
--- a/network/internal_api.yaml
+++ b/network/internal_api.yaml
@@ -33,6 +33,10 @@ parameters:
default: internal_api_subnet
description: The name of the internal API subnet in Neutron.
type: string
+ InternalApiAllocationPools:
+ default: [{'start': '172.16.2.4', 'end': '172.16.2.250'}]
+ description: Ip allocation pool range for the internal API network.
+ type: json
resources:
InternalApiNetwork:
@@ -50,6 +54,7 @@ resources:
enable_dhcp: {get_param: InternalApiNetEnableDHCP}
name: {get_param: InternalApiSubnetName}
network: {get_resource: InternalApiNetwork}
+ allocation_pools: {get_param: InternalApiAllocationPools}
outputs:
OS::stack_id:
diff --git a/network/ports/ctlplane_vip.yaml b/network/ports/ctlplane_vip.yaml
new file mode 100644
index 00000000..d5001e43
--- /dev/null
+++ b/network/ports/ctlplane_vip.yaml
@@ -0,0 +1,46 @@
+heat_template_version: 2015-04-30
+
+description: >
+ Creates a port for a VIP on the undercloud ctlplane network.
+
+parameters:
+ NetworkName:
+ description: # Here for compatibility with isolated networks
+ default: ctlplane
+ type: string
+ PortName:
+ description: Name of the port
+ default: ''
+ type: string
+ ControlPlaneIP: # Here for compatability with noop.yaml
+ description: IP address on the control plane
+ type: string
+ ControlPlaneNetwork:
+ description: The name of the undercloud Neutron control plane
+ default: ctlplane
+ type: string
+
+
+resources:
+
+ VipPort:
+ type: OS::Neutron::Port
+ properties:
+ network: {get_param: ControlPlaneNetwork}
+ name: {get_param: PortName}
+ replacement_policy: AUTO
+
+outputs:
+ ip_address:
+ description: Virtual IP network IP
+ value: {get_attr: [VipPort, fixed_ips, 0, ip_address]}
+ ip_subnet:
+ # FIXME: this assumes a 2 digit subnet CIDR (need more heat functions?)
+ description: IP/Subnet CIDR for the internal API network IP
+ value:
+ list_join:
+ - ''
+ - - {get_attr: [VipPort, fixed_ips, 0, ip_address]}
+ - '/'
+ - {get_attr: [VipPort, subnets, 0, cidr, -2]}
+ - {get_attr: [VipPort, subnets, 0, cidr, -1]}
diff --git a/network/ports/external.yaml b/network/ports/external.yaml
index db86b329..b5c1e5c9 100644
--- a/network/ports/external.yaml
+++ b/network/ports/external.yaml
@@ -8,6 +8,10 @@ parameters:
description: Name of the external neutron network
default: external
type: string
+ PortName:
+ description: Name of the port
+ default: ''
+ type: string
ControlPlaneIP: # Here for compatability with noop.yaml
description: IP address on the control plane
type: string
@@ -18,6 +22,7 @@ resources:
type: OS::Neutron::Port
properties:
network: {get_param: ExternalNetName}
+ name: {get_param: PortName}
replacement_policy: AUTO
outputs:
diff --git a/network/ports/internal_api.yaml b/network/ports/internal_api.yaml
index 59c0e0ad..da1b1856 100644
--- a/network/ports/internal_api.yaml
+++ b/network/ports/internal_api.yaml
@@ -8,6 +8,10 @@ parameters:
description: Name of the internal API neutron network
default: internal_api
type: string
+ PortName:
+ description: Name of the port
+ default: ''
+ type: string
ControlPlaneIP: # Here for compatability with noop.yaml
description: IP address on the control plane
type: string
@@ -18,6 +22,7 @@ resources:
type: OS::Neutron::Port
properties:
network: {get_param: InternalApiNetName}
+ name: {get_param: PortName}
replacement_policy: AUTO
outputs:
diff --git a/network/ports/net_ip_list_map.yaml b/network/ports/net_ip_list_map.yaml
new file mode 100644
index 00000000..54614ead
--- /dev/null
+++ b/network/ports/net_ip_list_map.yaml
@@ -0,0 +1,30 @@
+heat_template_version: 2015-04-30
+
+parameters:
+ ExternalIpList:
+ default: []
+ type: comma_delimited_list
+ InternalApiIpList:
+ default: []
+ type: comma_delimited_list
+ StorageIpList:
+ default: []
+ type: comma_delimited_list
+ StorageMgmtIpList:
+ default: []
+ type: comma_delimited_list
+ TenantIpList:
+ default: []
+ type: comma_delimited_list
+
+outputs:
+ net_ip_map:
+ description: >
+ A Hash containing a mapping of network names to assigned lists
+ of IP addresses.
+ value:
+ external: {get_param: ExternalIpList}
+ internal_api: {get_param: InternalApiIpList}
+ storage: {get_param: StorageIpList}
+ storage_mgmt: {get_param: StorageMgmtIpList}
+ tenant: {get_param: TenantIpList}
diff --git a/network/ports/net_ip_map.yaml b/network/ports/net_ip_map.yaml
index b7138b25..edc4060f 100644
--- a/network/ports/net_ip_map.yaml
+++ b/network/ports/net_ip_map.yaml
@@ -1,4 +1,4 @@
-heat_template_version: 2014-10-16
+heat_template_version: 2015-04-30
parameters:
ExternalIp:
diff --git a/network/ports/noop.yaml b/network/ports/noop.yaml
index 6bbf23c9..9e1a1276 100644
--- a/network/ports/noop.yaml
+++ b/network/ports/noop.yaml
@@ -7,6 +7,18 @@ parameters:
ControlPlaneIP:
description: IP address on the control plane
type: string
+ ControlPlaneNetwork:
+ description: Name of the control plane network
+ default: ctlplane
+ type: string
+ PortName:
+ description: Name of the port
+ default: ''
+ type: string
+ NetworkName:
+ description: # Here for compatability with vip.yaml
+ default: ''
+ type: string
ControlPlaneSubnetCidr: # Override this via parameter_defaults
default: '24'
description: The subnet CIDR of the control plane network.
diff --git a/network/ports/storage.yaml b/network/ports/storage.yaml
index 27f60a0d..ecb20b8f 100644
--- a/network/ports/storage.yaml
+++ b/network/ports/storage.yaml
@@ -8,6 +8,10 @@ parameters:
description: Name of the storage neutron network
default: storage
type: string
+ PortName:
+ description: Name of the port
+ default: ''
+ type: string
ControlPlaneIP: # Here for compatability with noop.yaml
description: IP address on the control plane
type: string
@@ -18,6 +22,7 @@ resources:
type: OS::Neutron::Port
properties:
network: {get_param: StorageNetName}
+ name: {get_param: PortName}
replacement_policy: AUTO
outputs:
diff --git a/network/ports/storage_mgmt.yaml b/network/ports/storage_mgmt.yaml
index 03cc224e..2ab39f21 100644
--- a/network/ports/storage_mgmt.yaml
+++ b/network/ports/storage_mgmt.yaml
@@ -8,6 +8,10 @@ parameters:
description: Name of the storage_mgmt API neutron network
default: storage_mgmt
type: string
+ PortName:
+ description: Name of the port
+ default: ''
+ type: string
ControlPlaneIP: # Here for compatability with noop.yaml
description: IP address on the control plane
type: string
@@ -18,6 +22,7 @@ resources:
type: OS::Neutron::Port
properties:
network: {get_param: StorageMgmtNetName}
+ name: {get_param: PortName}
replacement_policy: AUTO
outputs:
diff --git a/network/ports/tenant.yaml b/network/ports/tenant.yaml
index 1957c41b..aae12d46 100644
--- a/network/ports/tenant.yaml
+++ b/network/ports/tenant.yaml
@@ -8,6 +8,10 @@ parameters:
description: Name of the tenant neutron network
default: tenant
type: string
+ PortName:
+ description: Name of the port
+ default: ''
+ type: string
ControlPlaneIP: # Here for compatability with noop.yaml
description: IP address on the control plane
type: string
@@ -18,6 +22,7 @@ resources:
type: OS::Neutron::Port
properties:
network: {get_param: TenantNetName}
+ name: {get_param: PortName}
replacement_policy: AUTO
outputs:
diff --git a/network/ports/vip.yaml b/network/ports/vip.yaml
new file mode 100644
index 00000000..b957e132
--- /dev/null
+++ b/network/ports/vip.yaml
@@ -0,0 +1,41 @@
+heat_template_version: 2015-04-30
+
+description: >
+ Creates a port for a VIP on the isolated network NetworkName.
+
+parameters:
+ NetworkName:
+ description: Name of the network where the VIP will be created
+ default: internal_api
+ type: string
+ PortName:
+ description: Name of the port
+ default: ''
+ type: string
+ ControlPlaneIP: # Here for compatability with noop.yaml
+ description: IP address on the control plane
+ type: string
+
+resources:
+
+ VipPort:
+ type: OS::Neutron::Port
+ properties:
+ network: {get_param: NetworkName}
+ name: {get_param: PortName}
+ replacement_policy: AUTO
+
+outputs:
+ ip_address:
+ description: Virtual IP network IP
+ value: {get_attr: [VipPort, fixed_ips, 0, ip_address]}
+ ip_subnet:
+ # FIXME: this assumes a 2 digit subnet CIDR (need more heat functions?)
+ description: IP/Subnet CIDR for the internal API network IP
+ value:
+ list_join:
+ - ''
+ - - {get_attr: [VipPort, fixed_ips, 0, ip_address]}
+ - '/'
+ - {get_attr: [VipPort, subnets, 0, cidr, -2]}
+ - {get_attr: [VipPort, subnets, 0, cidr, -1]}
diff --git a/network/storage.yaml b/network/storage.yaml
index 1f60adf4..d403f9e5 100644
--- a/network/storage.yaml
+++ b/network/storage.yaml
@@ -33,6 +33,10 @@ parameters:
default: storage_subnet
description: The name of the storage subnet in Neutron.
type: string
+ StorageAllocationPools:
+ default: [{'start': '172.16.1.4', 'end': '172.16.1.250'}]
+ description: Ip allocation pool range for the storage network.
+ type: json
resources:
StorageNetwork:
@@ -50,6 +54,7 @@ resources:
enable_dhcp: {get_param: StorageNetEnableDHCP}
name: {get_param: StorageSubnetName}
network: {get_resource: StorageNetwork}
+ allocation_pools: {get_param: StorageAllocationPools}
outputs:
OS::stack_id:
diff --git a/network/storage_mgmt.yaml b/network/storage_mgmt.yaml
index e97d4364..d0c919b5 100644
--- a/network/storage_mgmt.yaml
+++ b/network/storage_mgmt.yaml
@@ -33,6 +33,10 @@ parameters:
default: storage_mgmt_subnet
description: The name of the Storage management subnet in Neutron.
type: string
+ StorageMgmtAllocationPools:
+ default: [{'start': '172.16.3.4', 'end': '172.16.3.250'}]
+ description: Ip allocation pool range for the storage mgmt network.
+ type: json
resources:
StorageMgmtNetwork:
@@ -50,6 +54,7 @@ resources:
enable_dhcp: {get_param: StorageMgmtNetEnableDHCP}
name: {get_param: StorageMgmtSubnetName}
network: {get_resource: StorageMgmtNetwork}
+ allocation_pools: {get_param: StorageMgmtAllocationPools}
outputs:
OS::stack_id:
diff --git a/network/tenant.yaml b/network/tenant.yaml
index db7f99f3..055b87b8 100644
--- a/network/tenant.yaml
+++ b/network/tenant.yaml
@@ -33,6 +33,10 @@ parameters:
default: tenant_subnet
description: The name of the tenant subnet in Neutron.
type: string
+ TenantAllocationPools:
+ default: [{'start': '172.16.0.4', 'end': '172.16.0.250'}]
+ description: Ip allocation pool range for the tenant network.
+ type: json
resources:
TenantNetwork:
@@ -50,6 +54,7 @@ resources:
enable_dhcp: {get_param: TenantNetEnableDHCP}
name: {get_param: TenantSubnetName}
network: {get_resource: TenantNetwork}
+ allocation_pools: {get_param: TenantAllocationPools}
outputs:
OS::stack_id: