diff options
Diffstat (limited to 'network')
-rw-r--r-- | network/config/bond-with-vlans/README.md | 12 | ||||
-rw-r--r-- | network/config/bond-with-vlans/controller-no-external.yaml | 114 | ||||
-rw-r--r-- | network/config/single-nic-vlans/README.md | 12 | ||||
-rw-r--r-- | network/config/single-nic-vlans/controller-no-external.yaml | 99 | ||||
-rw-r--r-- | network/endpoints/endpoint.yaml | 11 | ||||
-rw-r--r-- | network/endpoints/endpoint_map.yaml | 76 |
6 files changed, 321 insertions, 3 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/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 index 8ffd6c4b..6246cfdd 100644 --- a/network/endpoints/endpoint.yaml +++ b/network/endpoints/endpoint.yaml @@ -19,6 +19,10 @@ parameters: 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: @@ -28,10 +32,11 @@ outputs: 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} } + params: {IP_ADDRESS: {get_param: IP}, CLOUDNAME: {get_param: CloudName}} uri: list_join: - '' @@ -39,7 +44,7 @@ outputs: - '://' - str_replace: template: {get_param: [EndpointMap, {get_param: EndpointName }, host]} - params: {IP_ADDRESS: {get_param: IP} } + params: {IP_ADDRESS: {get_param: IP}, CLOUDNAME: {get_param: CloudName }} - ':' - {get_param: [EndpointMap, {get_param: EndpointName }, port] } - {get_param: UriSuffix } @@ -50,6 +55,6 @@ outputs: - '://' - str_replace: template: {get_param: [EndpointMap, {get_param: EndpointName }, host]} - params: {IP_ADDRESS: {get_param: IP} } + 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 index 9c000c38..05214011 100644 --- a/network/endpoints/endpoint_map.yaml +++ b/network/endpoints/endpoint_map.yaml @@ -52,9 +52,13 @@ parameters: 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'} @@ -72,6 +76,10 @@ parameters: 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: @@ -80,18 +88,21 @@ resources: 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: @@ -99,6 +110,7 @@ resources: properties: EndpointName: CinderInternal EndpointMap: { get_param: EndpointMap } + CloudName: {get_param: CloudName} IP: {get_param: CinderApiVirtualIP} UriSuffix: '/v1/%(tenant_id)s' CinderPublic: @@ -106,6 +118,7 @@ resources: properties: EndpointName: CinderPublic EndpointMap: { get_param: EndpointMap } + CloudName: {get_param: CloudName} IP: {get_param: PublicVirtualIP} UriSuffix: '/v1/%(tenant_id)s' CinderAdmin: @@ -113,6 +126,7 @@ resources: properties: EndpointName: CinderAdmin EndpointMap: { get_param: EndpointMap } + CloudName: {get_param: CloudName} IP: {get_param: CinderApiVirtualIP} UriSuffix: '/v1/%(tenant_id)s' @@ -121,6 +135,7 @@ resources: properties: EndpointName: CinderInternal EndpointMap: { get_param: EndpointMap } + CloudName: {get_param: CloudName} IP: {get_param: CinderApiVirtualIP} UriSuffix: '/v2/%(tenant_id)s' CinderV2Public: @@ -128,6 +143,7 @@ resources: properties: EndpointName: CinderPublic EndpointMap: { get_param: EndpointMap } + CloudName: {get_param: CloudName} IP: {get_param: PublicVirtualIP} UriSuffix: '/v2/%(tenant_id)s' CinderV2Admin: @@ -135,6 +151,7 @@ resources: properties: EndpointName: CinderAdmin EndpointMap: { get_param: EndpointMap } + CloudName: {get_param: CloudName} IP: {get_param: CinderApiVirtualIP} UriSuffix: '/v2/%(tenant_id)s' @@ -143,19 +160,40 @@ resources: 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 @@ -163,6 +201,7 @@ resources: EndpointName: HeatInternal EndpointMap: { get_param: EndpointMap } IP: {get_param: HeatApiVirtualIP} + CloudName: {get_param: CloudName} UriSuffix: '/v1/%(tenant_id)s' HeatPublic: type: OS::TripleO::Endpoint @@ -170,6 +209,7 @@ resources: EndpointName: HeatPublic EndpointMap: { get_param: EndpointMap } IP: {get_param: PublicVirtualIP} + CloudName: {get_param: CloudName} UriSuffix: '/v1/%(tenant_id)s' HeatAdmin: type: OS::TripleO::Endpoint @@ -177,14 +217,25 @@ resources: 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 @@ -192,6 +243,7 @@ resources: EndpointName: KeystonePublic EndpointMap: { get_param: EndpointMap } IP: {get_param: PublicVirtualIP} + CloudName: {get_param: CloudName} UriSuffix: '/v2.0' KeystoneAdmin: type: OS::TripleO::Endpoint @@ -199,6 +251,7 @@ resources: EndpointName: KeystoneAdmin EndpointMap: { get_param: EndpointMap } IP: {get_param: KeystoneAdminApiVirtualIP} + CloudName: {get_param: CloudName} UriSuffix: '/v2.0' KeystoneEC2: type: OS::TripleO::Endpoint @@ -206,6 +259,7 @@ resources: EndpointName: KeystoneInternal EndpointMap: { get_param: EndpointMap } IP: {get_param: KeystonePublicApiVirtualIP} + CloudName: {get_param: CloudName} UriSuffix: '/v2.0/ec2tokens' NeutronInternal: @@ -214,18 +268,21 @@ resources: 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 @@ -233,6 +290,7 @@ resources: EndpointName: NovaInternal EndpointMap: { get_param: EndpointMap } IP: {get_param: NovaApiVirtualIP} + CloudName: {get_param: CloudName} UriSuffix: '/v2/%(tenant_id)s' NovaPublic: type: OS::TripleO::Endpoint @@ -240,6 +298,7 @@ resources: EndpointName: NovaPublic EndpointMap: { get_param: EndpointMap } IP: {get_param: PublicVirtualIP} + CloudName: {get_param: CloudName} UriSuffix: '/v2/%(tenant_id)s' NovaAdmin: type: OS::TripleO::Endpoint @@ -247,6 +306,7 @@ resources: EndpointName: NovaAdmin EndpointMap: { get_param: EndpointMap } IP: {get_param: NovaApiVirtualIP} + CloudName: {get_param: CloudName} UriSuffix: '/v2/%(tenant_id)s' NovaV3Internal: type: OS::TripleO::Endpoint @@ -254,6 +314,7 @@ resources: EndpointName: NovaInternal EndpointMap: { get_param: EndpointMap } IP: {get_param: NovaApiVirtualIP} + CloudName: {get_param: CloudName} UriSuffix: '/v3' NovaV3Public: type: OS::TripleO::Endpoint @@ -261,6 +322,7 @@ resources: EndpointName: NovaPublic EndpointMap: { get_param: EndpointMap } IP: {get_param: PublicVirtualIP} + CloudName: {get_param: CloudName} UriSuffix: '/v3' NovaV3Admin: type: OS::TripleO::Endpoint @@ -268,6 +330,7 @@ resources: EndpointName: NovaAdmin EndpointMap: { get_param: EndpointMap } IP: {get_param: NovaApiVirtualIP} + CloudName: {get_param: CloudName} UriSuffix: '/v3' NovaEC2Internal: @@ -276,6 +339,7 @@ resources: EndpointName: NovaEC2Internal EndpointMap: { get_param: EndpointMap } IP: {get_param: NovaApiVirtualIP} + CloudName: {get_param: CloudName} UriSuffix: '/services/Cloud' NovaEC2Public: type: OS::TripleO::Endpoint @@ -283,6 +347,7 @@ resources: EndpointName: NovaEC2Public EndpointMap: { get_param: EndpointMap } IP: {get_param: PublicVirtualIP} + CloudName: {get_param: CloudName} UriSuffix: '/services/Cloud' NovaEC2Admin: type: OS::TripleO::Endpoint @@ -290,6 +355,7 @@ resources: EndpointName: NovaEC2Admin EndpointMap: { get_param: EndpointMap } IP: {get_param: NovaApiVirtualIP} + CloudName: {get_param: CloudName} UriSuffix: '/services/Admin' SwiftInternal: @@ -298,6 +364,7 @@ resources: 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 @@ -305,6 +372,7 @@ resources: 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 @@ -312,6 +380,7 @@ resources: 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 @@ -319,18 +388,21 @@ resources: 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: @@ -347,9 +419,13 @@ outputs: 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] } |