aboutsummaryrefslogtreecommitdiffstats
path: root/network
diff options
context:
space:
mode:
Diffstat (limited to 'network')
-rw-r--r--network/config/bond-with-vlans/README.md12
-rw-r--r--network/config/bond-with-vlans/controller-no-external.yaml114
-rw-r--r--network/config/bond-with-vlans/controller.yaml3
-rw-r--r--network/config/multiple-nics/README.md21
-rw-r--r--network/config/multiple-nics/ceph-storage.yaml113
-rw-r--r--network/config/multiple-nics/cinder-storage.yaml120
-rw-r--r--network/config/multiple-nics/compute.yaml116
-rw-r--r--network/config/multiple-nics/controller.yaml152
-rw-r--r--network/config/multiple-nics/swift-storage.yaml120
-rw-r--r--network/config/single-nic-vlans/README.md12
-rw-r--r--network/config/single-nic-vlans/controller-no-external.yaml99
-rw-r--r--network/endpoints/endpoint.yaml60
-rw-r--r--network/endpoints/endpoint_map.yaml450
13 files changed, 1390 insertions, 2 deletions
diff --git a/network/config/bond-with-vlans/README.md b/network/config/bond-with-vlans/README.md
index 1679df3c..98879b4f 100644
--- a/network/config/bond-with-vlans/README.md
+++ b/network/config/bond-with-vlans/README.md
@@ -1,6 +1,12 @@
This directory contains Heat templates to help configure
Vlans on a bonded pair of NICs for each Overcloud role.
+There are two versions of the controller role template, one with
+an external network interface, and another without. If the
+external network interface is not configured the ctlplane address
+ranges will be used for external (public) network traffic.
+
+
Configuration
-------------
@@ -13,3 +19,9 @@ something like this:
OS::TripleO::Controller::Net::SoftwareConfig: network/config/bond-with-vlans/controller.yaml
OS::TripleO::ObjectStorage::Net::SoftwareConfig: network/config/bond-with-vlans/swift-storage.yaml
OS::TripleO::CephStorage::Net::SoftwareConfig: network/config/bond-with-vlans/ceph-storage.yaml
+
+Configuration with no External Network
+--------------------------------------
+Same as above except set the following value for the controller role:
+
+ OS::TripleO::Controller::Net::SoftwareConfig: network/config/bond-with-vlans/controller-no-external.yaml
diff --git a/network/config/bond-with-vlans/controller-no-external.yaml b/network/config/bond-with-vlans/controller-no-external.yaml
new file mode 100644
index 00000000..22579e8f
--- /dev/null
+++ b/network/config/bond-with-vlans/controller-no-external.yaml
@@ -0,0 +1,114 @@
+heat_template_version: 2015-04-30
+
+description: >
+ Software Config to drive os-net-config with 2 bonded nics on a bridge
+ with VLANs attached 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
+ 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
+ ExternalInterfaceDefaultRoute:
+ default: '10.0.0.1'
+ description: default route for the external network
+ type: string
+
+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}
+ members:
+ -
+ type: ovs_bond
+ name: bond1
+ ovs_options: {get_param: BondInterfaceOvsOptions}
+ members:
+ -
+ type: interface
+ name: nic2
+ primary: true
+ -
+ type: interface
+ name: nic3
+ -
+ type: vlan
+ device: bond1
+ vlan_id: {get_param: InternalApiNetworkVlanID}
+ addresses:
+ -
+ ip_netmask: {get_param: InternalApiIpSubnet}
+ -
+ type: vlan
+ device: bond1
+ vlan_id: {get_param: StorageNetworkVlanID}
+ addresses:
+ -
+ ip_netmask: {get_param: StorageIpSubnet}
+ -
+ type: vlan
+ device: bond1
+ vlan_id: {get_param: StorageMgmtNetworkVlanID}
+ addresses:
+ -
+ ip_netmask: {get_param: StorageMgmtIpSubnet}
+ -
+ type: vlan
+ device: bond1
+ 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/bond-with-vlans/controller.yaml b/network/config/bond-with-vlans/controller.yaml
index 4290be20..eb4399ea 100644
--- a/network/config/bond-with-vlans/controller.yaml
+++ b/network/config/bond-with-vlans/controller.yaml
@@ -30,10 +30,9 @@ parameters:
description: IP address/subnet on the tenant network
type: string
BondInterfaceOvsOptions:
- default: 'bond_mode=balance-tcp lacp=active other-config:lacp-fallback-ab=true'
+ default: 'bond_mode=active-backup'
description: The ovs_options string for the bond interface. Set things like
lacp=active and/or bond_mode=balance-slb using this option.
- Default wil attempt LACP, but will fall back to active-backup.
type: string
ExternalNetworkVlanID:
default: 10
diff --git a/network/config/multiple-nics/README.md b/network/config/multiple-nics/README.md
new file mode 100644
index 00000000..3d81f0be
--- /dev/null
+++ b/network/config/multiple-nics/README.md
@@ -0,0 +1,21 @@
+This directory contains Heat templates to help configure
+multiple NICs for each Overcloud role, where it is
+assumed that each NIC is running a specific network
+traffic type and that VLANs are not being used.
+
+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/multiple-nics/cinder-storage.yaml
+ OS::TripleO::Compute::Net::SoftwareConfig: network/config/multiple-nics/compute.yaml
+ OS::TripleO::Controller::Net::SoftwareConfig: network/config/multiple-nics/controller.yaml
+ OS::TripleO::ObjectStorage::Net::SoftwareConfig: network/config/multiple-nics/swift-storage.yaml
+ OS::TripleO::CephStorage::Net::SoftwareConfig: network/config/multiple-nics/ceph-storage.yaml
+
+Or use this Heat environment file:
+
+ environments/net-multiple-nics.yaml
diff --git a/network/config/multiple-nics/ceph-storage.yaml b/network/config/multiple-nics/ceph-storage.yaml
new file mode 100644
index 00000000..a0508583
--- /dev/null
+++ b/network/config/multiple-nics/ceph-storage.yaml
@@ -0,0 +1,113 @@
+heat_template_version: 2015-04-30
+
+description: >
+ Software Config to drive os-net-config to configure multiple interfaces
+ for the ceph storage 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
+ 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: json
+ 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}
+ -
+ type: interface
+ name: nic2
+ use_dhcp: false
+ addresses:
+ -
+ ip_netmask: {get_param: StorageIpSubnet}
+ -
+ type: interface
+ name: nic3
+ use_dhcp: false
+ addresses:
+ -
+ ip_netmask: {get_param: StorageMgmtIpSubnet}
+
+outputs:
+ OS::stack_id:
+ description: The OsNetConfigImpl resource.
+ value: {get_resource: OsNetConfigImpl}
diff --git a/network/config/multiple-nics/cinder-storage.yaml b/network/config/multiple-nics/cinder-storage.yaml
new file mode 100644
index 00000000..c84586bb
--- /dev/null
+++ b/network/config/multiple-nics/cinder-storage.yaml
@@ -0,0 +1,120 @@
+heat_template_version: 2015-04-30
+
+description: >
+ Software Config to drive os-net-config to configure multiple interfaces
+ for the cinder storage 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
+ 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: json
+ 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}
+ -
+ type: interface
+ name: nic2
+ use_dhcp: false
+ addresses:
+ -
+ ip_netmask: {get_param: StorageIpSubnet}
+ -
+ type: interface
+ name: nic3
+ use_dhcp: false
+ addresses:
+ -
+ ip_netmask: {get_param: StorageMgmtIpSubnet}
+ -
+ type: interface
+ name: nic4
+ use_dhcp: false
+ addresses:
+ -
+ ip_netmask: {get_param: InternalApiIpSubnet}
+
+outputs:
+ OS::stack_id:
+ description: The OsNetConfigImpl resource.
+ value: {get_resource: OsNetConfigImpl}
diff --git a/network/config/multiple-nics/compute.yaml b/network/config/multiple-nics/compute.yaml
new file mode 100644
index 00000000..70a18081
--- /dev/null
+++ b/network/config/multiple-nics/compute.yaml
@@ -0,0 +1,116 @@
+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
+ 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
+ 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: json
+ 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}
+ -
+ type: interface
+ name: nic2
+ use_dhcp: false
+ addresses:
+ -
+ ip_netmask: {get_param: StorageIpSubnet}
+ -
+ type: interface
+ name: nic4
+ use_dhcp: false
+ addresses:
+ -
+ ip_netmask: {get_param: InternalApiIpSubnet}
+ -
+ # 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: nic5
+ use_dhcp: false
+ # force the MAC address of the bridge to this interface
+ primary: true
+
+outputs:
+ OS::stack_id:
+ description: The OsNetConfigImpl resource.
+ value: {get_resource: OsNetConfigImpl}
diff --git a/network/config/multiple-nics/controller.yaml b/network/config/multiple-nics/controller.yaml
new file mode 100644
index 00000000..63f53a1f
--- /dev/null
+++ b/network/config/multiple-nics/controller.yaml
@@ -0,0 +1,152 @@
+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
+ 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: json
+ 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}
+ -
+ type: interface
+ name: nic2
+ use_dhcp: false
+ addresses:
+ -
+ ip_netmask: {get_param: StorageIpSubnet}
+ -
+ type: interface
+ name: nic3
+ use_dhcp: false
+ addresses:
+ -
+ ip_netmask: {get_param: StorageMgmtIpSubnet}
+ -
+ type: interface
+ name: nic4
+ use_dhcp: false
+ addresses:
+ -
+ ip_netmask: {get_param: InternalApiIpSubnet}
+ -
+ # 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: nic5
+ use_dhcp: false
+ # force the MAC address of the bridge to this interface
+ primary: true
+ -
+ type: ovs_bridge
+ name: {get_input: bridge_name}
+ use_dhcp: false
+ addresses:
+ -
+ ip_netmask: {get_param: ExternalIpSubnet}
+ routes:
+ -
+ ip_netmask: 0.0.0.0/0
+ next_hop: {get_param: ExternalInterfaceDefaultRoute}
+ members:
+ -
+ type: interface
+ name: nic6
+ # force the MAC address of the bridge to this interface
+ primary: true
+
+outputs:
+ OS::stack_id:
+ description: The OsNetConfigImpl resource.
+ value: {get_resource: OsNetConfigImpl}
diff --git a/network/config/multiple-nics/swift-storage.yaml b/network/config/multiple-nics/swift-storage.yaml
new file mode 100644
index 00000000..25ac75f2
--- /dev/null
+++ b/network/config/multiple-nics/swift-storage.yaml
@@ -0,0 +1,120 @@
+heat_template_version: 2015-04-30
+
+description: >
+ Software Config to drive os-net-config to configure multiple interfaces
+ for the swift storage 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
+ 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: json
+ 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}
+ -
+ type: interface
+ name: nic2
+ use_dhcp: false
+ addresses:
+ -
+ ip_netmask: {get_param: StorageIpSubnet}
+ -
+ type: interface
+ name: nic3
+ use_dhcp: false
+ addresses:
+ -
+ ip_netmask: {get_param: StorageMgmtIpSubnet}
+ -
+ type: interface
+ name: nic4
+ use_dhcp: false
+ addresses:
+ -
+ ip_netmask: {get_param: InternalApiIpSubnet}
+
+outputs:
+ OS::stack_id:
+ description: The OsNetConfigImpl resource.
+ value: {get_resource: OsNetConfigImpl}
diff --git a/network/config/single-nic-vlans/README.md b/network/config/single-nic-vlans/README.md
index e3e16574..6f128650 100644
--- a/network/config/single-nic-vlans/README.md
+++ b/network/config/single-nic-vlans/README.md
@@ -1,6 +1,11 @@
This directory contains Heat templates to help configure
Vlans on a single NICs for each Overcloud role.
+There are two versions of the controller role template, one with
+an external network interface, and another without. If the
+external network interface is not configured the ctlplane address
+ranges will be used for external (public) network traffic.
+
Configuration
-------------
@@ -17,3 +22,10 @@ something like this:
Or use this Heat environment file:
environments/net-single-nic-with-vlans.yaml
+
+
+Configuration with no External Network
+--------------------------------------
+Same as above except set the following value for the controller role:
+
+ OS::TripleO::Controller::Net::SoftwareConfig: network/config/single-nic-vlans/controller-no-external.yaml
diff --git a/network/config/single-nic-vlans/controller-no-external.yaml b/network/config/single-nic-vlans/controller-no-external.yaml
new file mode 100644
index 00000000..faf9e9c2
--- /dev/null
+++ b/network/config/single-nic-vlans/controller-no-external.yaml
@@ -0,0 +1,99 @@
+heat_template_version: 2015-04-30
+
+description: >
+ Software Config to drive os-net-config to configure VLANs for the
+ controller role. No external IP is configured.
+
+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
+ ExternalInterfaceDefaultRoute:
+ default: '10.0.0.1'
+ description: default route for the external network
+ type: string
+
+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: 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/endpoints/endpoint.yaml b/network/endpoints/endpoint.yaml
new file mode 100644
index 00000000..6246cfdd
--- /dev/null
+++ b/network/endpoints/endpoint.yaml
@@ -0,0 +1,60 @@
+heat_template_version: 2015-04-30
+
+description: >
+ OpenStack Endpoint
+
+parameters:
+ EndpointName:
+ type: string
+ description: The name of the Endpoint being evaluated
+ EndpointMap:
+ type: json
+ default: {}
+ description: Mapping of service endpoint -> protocol. Typically set
+ via parameter_defaults in the resource registry.
+ IP:
+ type: string
+ description: The IP address of the Neutron Port that the endpoint is attached to
+ UriSuffix:
+ type: string
+ default: ''
+ description: A suffix attached to the URL
+ CloudName:
+ type: string
+ default: ''
+ description: The DNS name of this cloud. E.g. ci-overcloud.tripleo.org
+
+outputs:
+ endpoint:
+ description: >
+ A Hash containing a mapping of service endpoints to ports, protocols, uris
+ assigned IPs, and hostnames for a specific endpoint
+ value:
+ port: {get_param: [EndpointMap, {get_param: EndpointName }, port] }
+ protocol: {get_param: [EndpointMap, {get_param: EndpointName }, protocol] }
+ ip: {get_param: IP}
+ host:
+ str_replace:
+ template: {get_param: [EndpointMap, {get_param: EndpointName }, host]}
+ params: {IP_ADDRESS: {get_param: IP}, CLOUDNAME: {get_param: CloudName}}
+ uri:
+ list_join:
+ - ''
+ - - {get_param: [EndpointMap, {get_param: EndpointName }, protocol] }
+ - '://'
+ - str_replace:
+ template: {get_param: [EndpointMap, {get_param: EndpointName }, host]}
+ params: {IP_ADDRESS: {get_param: IP}, CLOUDNAME: {get_param: CloudName }}
+ - ':'
+ - {get_param: [EndpointMap, {get_param: EndpointName }, port] }
+ - {get_param: UriSuffix }
+ uri_no_suffix:
+ list_join:
+ - ''
+ - - {get_param: [EndpointMap, {get_param: EndpointName }, protocol] }
+ - '://'
+ - str_replace:
+ template: {get_param: [EndpointMap, {get_param: EndpointName }, host]}
+ params: {IP_ADDRESS: {get_param: IP}, CLOUDNAME: {get_param: CloudName} }
+ - ':'
+ - {get_param: [EndpointMap, {get_param: EndpointName }, port] }
diff --git a/network/endpoints/endpoint_map.yaml b/network/endpoints/endpoint_map.yaml
new file mode 100644
index 00000000..05214011
--- /dev/null
+++ b/network/endpoints/endpoint_map.yaml
@@ -0,0 +1,450 @@
+heat_template_version: 2015-04-30
+
+description: >
+ A Map of OpenStack Endpoints
+
+parameters:
+ CeilometerApiVirtualIP:
+ type: string
+ default: ''
+ CinderApiVirtualIP:
+ type: string
+ default: ''
+ GlanceApiVirtualIP:
+ type: string
+ default: ''
+ GlanceRegistryVirtualIP:
+ type: string
+ default: ''
+ HeatApiVirtualIP:
+ type: string
+ default: ''
+ KeystoneAdminApiVirtualIP:
+ type: string
+ default: ''
+ KeystonePublicApiVirtualIP:
+ type: string
+ default: ''
+ MysqlVirtualIP:
+ type: string
+ default: ''
+ NeutronApiVirtualIP:
+ type: string
+ default: ''
+ NovaApiVirtualIP:
+ type: string
+ default: ''
+ PublicVirtualIP:
+ type: string
+ default: ''
+ SwiftProxyVirtualIP:
+ type: string
+ default: ''
+ EndpointMap:
+ type: json
+ default:
+ CeilometerAdmin: {protocol: 'http', port: '8777', host: 'IP_ADDRESS'}
+ CeilometerInternal: {protocol: 'http', port: '8777', host: 'IP_ADDRESS'}
+ CeilometerPublic: {protocol: 'http', port: '8777', host: 'IP_ADDRESS'}
+ CinderAdmin: {protocol: 'http', port: '8776', host: 'IP_ADDRESS'}
+ CinderInternal: {protocol: 'http', port: '8776', host: 'IP_ADDRESS'}
+ CinderPublic: {protocol: 'http', port: '8776', host: 'IP_ADDRESS'}
+ GlanceAdmin: {protocol: 'http', port: '9292', host: 'IP_ADDRESS'}
+ GlanceInternal: {protocol: 'http', port: '9292', host: 'IP_ADDRESS'}
+ GlancePublic: {protocol: 'http', port: '9292', host: 'IP_ADDRESS'}
+ GlanceRegistryAdmin: {protocol: 'http', port: '9191', host: 'IP_ADDRESS'}
+ GlanceRegistryInternal: {protocol: 'http', port: '9191', host: 'IP_ADDRESS'}
+ GlanceRegistryPublic: {protocol: 'http', port: '9191', host: 'IP_ADDRESS'}
+ HeatAdmin: {protocol: 'http', port: '8004', host: 'IP_ADDRESS'}
+ HeatInternal: {protocol: 'http', port: '8004', host: 'IP_ADDRESS'}
+ HeatPublic: {protocol: 'http', port: '8004', host: 'IP_ADDRESS'}
+ HorizonPublic: {protocol: 'http', port: '80', host: 'IP_ADDRESS'}
+ KeystoneAdmin: {protocol: 'http', port: '35357', host: 'IP_ADDRESS'}
+ KeystoneInternal: {protocol: 'http', port: '5000', host: 'IP_ADDRESS'}
+ KeystonePublic: {protocol: 'http', port: '5000', host: 'IP_ADDRESS'}
+ NeutronAdmin: {protocol: 'http', port: '9696', host: 'IP_ADDRESS'}
+ NeutronInternal: {protocol: 'http', port: '9696', host: 'IP_ADDRESS'}
+ NeutronPublic: {protocol: 'http', port: '9696', host: 'IP_ADDRESS'}
+ NovaAdmin: {protocol: 'http', port: '8774', host: 'IP_ADDRESS'}
+ NovaInternal: {protocol: 'http', port: '8774', host: 'IP_ADDRESS'}
+ NovaPublic: {protocol: 'http', port: '8774', host: 'IP_ADDRESS'}
+ NovaEC2Admin: {protocol: 'http', port: '8773', host: 'IP_ADDRESS'}
+ NovaEC2Internal: {protocol: 'http', port: '8773', host: 'IP_ADDRESS'}
+ NovaEC2Public: {protocol: 'http', port: '8773', host: 'IP_ADDRESS'}
+ SwiftAdmin: {protocol: 'http', port: '8080', host: 'IP_ADDRESS'}
+ SwiftInternal: {protocol: 'http', port: '8080', host: 'IP_ADDRESS'}
+ SwiftPublic: {protocol: 'http', port: '8080', host: 'IP_ADDRESS'}
+ description: Mapping of service endpoint -> protocol. Typically set
+ via parameter_defaults in the resource registry.
+ CloudName:
+ type: string
+ default: ''
+ description: The DNS name of this cloud. E.g. ci-overcloud.tripleo.org
+
+resources:
+
+ CeilometerInternal:
+ type: OS::TripleO::Endpoint
+ properties:
+ EndpointName: CeilometerInternal
+ EndpointMap: { get_param: EndpointMap }
+ CloudName: {get_param: CloudName}
+ IP: {get_param: CeilometerApiVirtualIP}
+ CeilometerPublic:
+ type: OS::TripleO::Endpoint
+ properties:
+ EndpointName: CeilometerPublic
+ EndpointMap: { get_param: EndpointMap }
+ CloudName: {get_param: CloudName}
+ IP: {get_param: PublicVirtualIP}
+ CeilometerAdmin:
+ type: OS::TripleO::Endpoint
+ properties:
+ EndpointName: CeilometerAdmin
+ EndpointMap: { get_param: EndpointMap }
+ CloudName: {get_param: CloudName}
+ IP: {get_param: CeilometerApiVirtualIP}
+
+ CinderInternal:
+ type: OS::TripleO::Endpoint
+ properties:
+ EndpointName: CinderInternal
+ EndpointMap: { get_param: EndpointMap }
+ CloudName: {get_param: CloudName}
+ IP: {get_param: CinderApiVirtualIP}
+ UriSuffix: '/v1/%(tenant_id)s'
+ CinderPublic:
+ type: OS::TripleO::Endpoint
+ properties:
+ EndpointName: CinderPublic
+ EndpointMap: { get_param: EndpointMap }
+ CloudName: {get_param: CloudName}
+ IP: {get_param: PublicVirtualIP}
+ UriSuffix: '/v1/%(tenant_id)s'
+ CinderAdmin:
+ type: OS::TripleO::Endpoint
+ properties:
+ EndpointName: CinderAdmin
+ EndpointMap: { get_param: EndpointMap }
+ CloudName: {get_param: CloudName}
+ IP: {get_param: CinderApiVirtualIP}
+ UriSuffix: '/v1/%(tenant_id)s'
+
+ CinderV2Internal:
+ type: OS::TripleO::Endpoint
+ properties:
+ EndpointName: CinderInternal
+ EndpointMap: { get_param: EndpointMap }
+ CloudName: {get_param: CloudName}
+ IP: {get_param: CinderApiVirtualIP}
+ UriSuffix: '/v2/%(tenant_id)s'
+ CinderV2Public:
+ type: OS::TripleO::Endpoint
+ properties:
+ EndpointName: CinderPublic
+ EndpointMap: { get_param: EndpointMap }
+ CloudName: {get_param: CloudName}
+ IP: {get_param: PublicVirtualIP}
+ UriSuffix: '/v2/%(tenant_id)s'
+ CinderV2Admin:
+ type: OS::TripleO::Endpoint
+ properties:
+ EndpointName: CinderAdmin
+ EndpointMap: { get_param: EndpointMap }
+ CloudName: {get_param: CloudName}
+ IP: {get_param: CinderApiVirtualIP}
+ UriSuffix: '/v2/%(tenant_id)s'
+
+ GlanceInternal:
+ type: OS::TripleO::Endpoint
+ properties:
+ EndpointName: GlanceInternal
+ EndpointMap: { get_param: EndpointMap }
+ CloudName: {get_param: CloudName}
+ IP: {get_param: GlanceApiVirtualIP}
+ GlancePublic:
+ type: OS::TripleO::Endpoint
+ properties:
+ EndpointName: GlancePublic
+ EndpointMap: { get_param: EndpointMap }
+ CloudName: {get_param: CloudName}
+ IP: {get_param: PublicVirtualIP}
+ GlanceAdmin:
+ type: OS::TripleO::Endpoint
+ properties:
+ EndpointName: GlanceAdmin
+ EndpointMap: { get_param: EndpointMap }
+ CloudName: {get_param: CloudName}
+ IP: {get_param: GlanceApiVirtualIP}
+ GlanceRegistryInternal:
+ type: OS::TripleO::Endpoint
+ properties:
+ EndpointName: GlanceInternal
+ EndpointMap: { get_param: EndpointMap }
+ IP: {get_param: GlanceRegistryVirtualIP}
+ GlanceRegistryPublic:
+ type: OS::TripleO::Endpoint
+ properties:
+ EndpointName: GlancePublic
+ EndpointMap: { get_param: EndpointMap }
+ IP: {get_param: PublicVirtualIP}
+ GlanceRegistryAdmin:
+ type: OS::TripleO::Endpoint
+ properties:
+ EndpointName: GlanceAdmin
+ EndpointMap: { get_param: EndpointMap }
+ IP: {get_param: GlanceRegistryVirtualIP}
+
+ HeatInternal:
+ type: OS::TripleO::Endpoint
+ properties:
+ EndpointName: HeatInternal
+ EndpointMap: { get_param: EndpointMap }
+ IP: {get_param: HeatApiVirtualIP}
+ CloudName: {get_param: CloudName}
+ UriSuffix: '/v1/%(tenant_id)s'
+ HeatPublic:
+ type: OS::TripleO::Endpoint
+ properties:
+ EndpointName: HeatPublic
+ EndpointMap: { get_param: EndpointMap }
+ IP: {get_param: PublicVirtualIP}
+ CloudName: {get_param: CloudName}
+ UriSuffix: '/v1/%(tenant_id)s'
+ HeatAdmin:
+ type: OS::TripleO::Endpoint
+ properties:
+ EndpointName: HeatAdmin
+ EndpointMap: { get_param: EndpointMap }
+ IP: {get_param: HeatApiVirtualIP}
+ CloudName: {get_param: CloudName}
+ UriSuffix: '/v1/%(tenant_id)s'
+
+ HorizonPublic:
+ type: OS::TripleO::Endpoint
+ properties:
+ EndpointName: HeatPublic
+ EndpointMap: { get_param: EndpointMap }
+ IP: {get_param: PublicVirtualIP}
+ CloudName: {get_param: CloudName}
+ UriSuffix: '/dashboard'
+
+ KeystoneInternal:
+ type: OS::TripleO::Endpoint
+ properties:
+ EndpointName: KeystoneInternal
+ EndpointMap: { get_param: EndpointMap }
+ IP: {get_param: KeystonePublicApiVirtualIP}
+ CloudName: {get_param: CloudName}
+ UriSuffix: '/v2.0'
+ KeystonePublic:
+ type: OS::TripleO::Endpoint
+ properties:
+ EndpointName: KeystonePublic
+ EndpointMap: { get_param: EndpointMap }
+ IP: {get_param: PublicVirtualIP}
+ CloudName: {get_param: CloudName}
+ UriSuffix: '/v2.0'
+ KeystoneAdmin:
+ type: OS::TripleO::Endpoint
+ properties:
+ EndpointName: KeystoneAdmin
+ EndpointMap: { get_param: EndpointMap }
+ IP: {get_param: KeystoneAdminApiVirtualIP}
+ CloudName: {get_param: CloudName}
+ UriSuffix: '/v2.0'
+ KeystoneEC2:
+ type: OS::TripleO::Endpoint
+ properties:
+ EndpointName: KeystoneInternal
+ EndpointMap: { get_param: EndpointMap }
+ IP: {get_param: KeystonePublicApiVirtualIP}
+ CloudName: {get_param: CloudName}
+ UriSuffix: '/v2.0/ec2tokens'
+
+ NeutronInternal:
+ type: OS::TripleO::Endpoint
+ properties:
+ EndpointName: NeutronInternal
+ EndpointMap: { get_param: EndpointMap }
+ IP: {get_param: NeutronApiVirtualIP}
+ CloudName: {get_param: CloudName}
+ NeutronPublic:
+ type: OS::TripleO::Endpoint
+ properties:
+ EndpointName: NeutronPublic
+ EndpointMap: { get_param: EndpointMap }
+ IP: {get_param: PublicVirtualIP}
+ CloudName: {get_param: CloudName}
+ NeutronAdmin:
+ type: OS::TripleO::Endpoint
+ properties:
+ EndpointName: NeutronAdmin
+ EndpointMap: { get_param: EndpointMap }
+ IP: {get_param: NeutronApiVirtualIP}
+ CloudName: {get_param: CloudName}
+
+ NovaInternal:
+ type: OS::TripleO::Endpoint
+ properties:
+ EndpointName: NovaInternal
+ EndpointMap: { get_param: EndpointMap }
+ IP: {get_param: NovaApiVirtualIP}
+ CloudName: {get_param: CloudName}
+ UriSuffix: '/v2/%(tenant_id)s'
+ NovaPublic:
+ type: OS::TripleO::Endpoint
+ properties:
+ EndpointName: NovaPublic
+ EndpointMap: { get_param: EndpointMap }
+ IP: {get_param: PublicVirtualIP}
+ CloudName: {get_param: CloudName}
+ UriSuffix: '/v2/%(tenant_id)s'
+ NovaAdmin:
+ type: OS::TripleO::Endpoint
+ properties:
+ EndpointName: NovaAdmin
+ EndpointMap: { get_param: EndpointMap }
+ IP: {get_param: NovaApiVirtualIP}
+ CloudName: {get_param: CloudName}
+ UriSuffix: '/v2/%(tenant_id)s'
+ NovaV3Internal:
+ type: OS::TripleO::Endpoint
+ properties:
+ EndpointName: NovaInternal
+ EndpointMap: { get_param: EndpointMap }
+ IP: {get_param: NovaApiVirtualIP}
+ CloudName: {get_param: CloudName}
+ UriSuffix: '/v3'
+ NovaV3Public:
+ type: OS::TripleO::Endpoint
+ properties:
+ EndpointName: NovaPublic
+ EndpointMap: { get_param: EndpointMap }
+ IP: {get_param: PublicVirtualIP}
+ CloudName: {get_param: CloudName}
+ UriSuffix: '/v3'
+ NovaV3Admin:
+ type: OS::TripleO::Endpoint
+ properties:
+ EndpointName: NovaAdmin
+ EndpointMap: { get_param: EndpointMap }
+ IP: {get_param: NovaApiVirtualIP}
+ CloudName: {get_param: CloudName}
+ UriSuffix: '/v3'
+
+ NovaEC2Internal:
+ type: OS::TripleO::Endpoint
+ properties:
+ EndpointName: NovaEC2Internal
+ EndpointMap: { get_param: EndpointMap }
+ IP: {get_param: NovaApiVirtualIP}
+ CloudName: {get_param: CloudName}
+ UriSuffix: '/services/Cloud'
+ NovaEC2Public:
+ type: OS::TripleO::Endpoint
+ properties:
+ EndpointName: NovaEC2Public
+ EndpointMap: { get_param: EndpointMap }
+ IP: {get_param: PublicVirtualIP}
+ CloudName: {get_param: CloudName}
+ UriSuffix: '/services/Cloud'
+ NovaEC2Admin:
+ type: OS::TripleO::Endpoint
+ properties:
+ EndpointName: NovaEC2Admin
+ EndpointMap: { get_param: EndpointMap }
+ IP: {get_param: NovaApiVirtualIP}
+ CloudName: {get_param: CloudName}
+ UriSuffix: '/services/Admin'
+
+ SwiftInternal:
+ type: OS::TripleO::Endpoint
+ properties:
+ EndpointName: SwiftInternal
+ EndpointMap: { get_param: EndpointMap }
+ IP: {get_param: SwiftProxyVirtualIP}
+ CloudName: {get_param: CloudName}
+ UriSuffix: '/v1/AUTH_%(tenant_id)s'
+ SwiftPublic:
+ type: OS::TripleO::Endpoint
+ properties:
+ EndpointName: SwiftPublic
+ EndpointMap: { get_param: EndpointMap }
+ IP: {get_param: PublicVirtualIP}
+ CloudName: {get_param: CloudName}
+ UriSuffix: '/v1/AUTH_%(tenant_id)s'
+ SwiftAdmin:
+ type: OS::TripleO::Endpoint
+ properties:
+ EndpointName: SwiftAdmin
+ EndpointMap: { get_param: EndpointMap }
+ IP: {get_param: SwiftProxyVirtualIP}
+ CloudName: {get_param: CloudName}
+ # No Suffix for the Admin interface
+ SwiftS3Internal:
+ type: OS::TripleO::Endpoint
+ properties:
+ EndpointName: SwiftInternal
+ EndpointMap: { get_param: EndpointMap }
+ IP: {get_param: SwiftProxyVirtualIP}
+ CloudName: {get_param: CloudName}
+ SwiftS3Public:
+ type: OS::TripleO::Endpoint
+ properties:
+ EndpointName: SwiftPublic
+ EndpointMap: { get_param: EndpointMap }
+ IP: {get_param: PublicVirtualIP}
+ CloudName: {get_param: CloudName}
+ SwiftS3Admin:
+ type: OS::TripleO::Endpoint
+ properties:
+ EndpointName: SwiftAdmin
+ EndpointMap: { get_param: EndpointMap }
+ IP: {get_param: SwiftProxyVirtualIP}
+ CloudName: {get_param: CloudName}
+
+outputs:
+ endpoint_map:
+ value:
+ CeilometerInternal: {get_attr: [ CeilometerInternal, endpoint] }
+ CeilometerPublic: {get_attr: [ CeilometerPublic, endpoint] }
+ CeilometerAdmin: {get_attr: [ CeilometerAdmin, endpoint] }
+ CinderInternal: {get_attr: [ CinderInternal, endpoint] }
+ CinderPublic: {get_attr: [ CinderPublic, endpoint] }
+ CinderAdmin: {get_attr: [ CinderAdmin, endpoint] }
+ CinderV2Internal: {get_attr: [ CinderV2Internal, endpoint] }
+ CinderV2Public: {get_attr: [ CinderV2Public, endpoint] }
+ CinderV2Admin: {get_attr: [ CinderV2Admin, endpoint] }
+ GlanceInternal: {get_attr: [ GlanceInternal, endpoint] }
+ GlancePublic: {get_attr: [ GlancePublic, endpoint] }
+ GlanceAdmin: {get_attr: [ GlanceAdmin, endpoint] }
+ GlanceRegistryInternal: {get_attr: [ GlanceRegistryInternal, endpoint] }
+ GlanceRegistryPublic: {get_attr: [ GlanceRegistryPublic, endpoint] }
+ GlanceRegistryAdmin: {get_attr: [ GlanceRegistryAdmin, endpoint] }
+ HeatInternal: {get_attr: [ HeatInternal, endpoint] }
+ HeatPublic: {get_attr: [ HeatPublic, endpoint] }
+ HeatAdmin: {get_attr: [ HeatAdmin, endpoint] }
+ HorizonPublic: {get_attr: [ HorizonPublic, endpoint] }
+ KeystoneInternal: {get_attr: [ KeystoneInternal, endpoint] }
+ KeystonePublic: {get_attr: [ KeystonePublic, endpoint] }
+ KeystoneAdmin: {get_attr: [ KeystoneAdmin, endpoint] }
+ KeystoneEC2: {get_attr: [ KeystoneEC2, endpoint] }
+ NeutronInternal: {get_attr: [ NeutronInternal, endpoint] }
+ NeutronPublic: {get_attr: [ NeutronPublic, endpoint] }
+ NeutronAdmin: {get_attr: [ NeutronAdmin, endpoint] }
+ NovaInternal: {get_attr: [ NovaInternal, endpoint] }
+ NovaPublic: {get_attr: [ NovaPublic, endpoint] }
+ NovaAdmin: {get_attr: [ NovaAdmin, endpoint] }
+ NovaV3Internal: {get_attr: [ NovaV3Internal, endpoint] }
+ NovaV3Public: {get_attr: [ NovaV3Public, endpoint] }
+ NovaV3Admin: {get_attr: [ NovaV3Admin, endpoint] }
+ NovaEC2Internal: {get_attr: [ NovaEC2Internal, endpoint] }
+ NovaEC2Public: {get_attr: [ NovaEC2Public, endpoint] }
+ NovaEC2Admin: {get_attr: [ NovaEC2Admin, endpoint] }
+ SwiftInternal: {get_attr: [ SwiftInternal, endpoint] }
+ SwiftPublic: {get_attr: [ SwiftPublic, endpoint] }
+ SwiftAdmin: {get_attr: [ SwiftAdmin, endpoint] }
+ SwiftS3Internal: {get_attr: [ SwiftS3Internal, endpoint] }
+ SwiftS3Public: {get_attr: [ SwiftS3Public, endpoint] }
+ SwiftS3Admin: {get_attr: [ SwiftS3Admin, endpoint] }