Merge "Allow for usage of pre-allocated IPs for the controller nodes" into stable/liberty

This commit is contained in:
Jenkins 2016-01-06 00:41:54 +00:00 committed by Gerrit Code Review
commit dea98553e1
20 changed files with 379 additions and 19 deletions

View File

@ -1,14 +1,37 @@
resource_registry:
OS::TripleO::Network::Ports::NetVipMap: ../network/ports/net_vip_map_external.yaml
OS::TripleO::Network::Ports::ExternalVipPort: ../network/ports/noop.yaml
OS::TripleO::Network::Ports::InternalApiVipPort: ../network/ports/noop.yaml
OS::TripleO::Network::Ports::StorageVipPort: ../network/ports/noop.yaml
OS::TripleO::Network::Ports::StorageMgmtVipPort: ../network/ports/noop.yaml
OS::TripleO::Network::Ports::RedisVipPort: ../network/ports/from_service.yaml
OS::TripleO::Controller::Ports::ExternalPort: ../network/ports/external_from_pool.yaml
OS::TripleO::Controller::Ports::InternalApiPort: ../network/ports/internal_api_from_pool.yaml
OS::TripleO::Controller::Ports::StoragePort: ../network/ports/storage_from_pool.yaml
OS::TripleO::Controller::Ports::StorageMgmtPort: ../network/ports/storage_mgmt_from_pool.yaml
OS::TripleO::Controller::Ports::TenantPort: ../network/ports/tenant_from_pool.yaml
parameter_defaults:
# When using an external loadbalancer set the following in parameter_defaults
# to control your VIPs (currently one per network)
# NOTE: we will eventually move to one VIP per service
#
# ControlNetworkVip:
# ExternalNetworkVip:
# InternalApiNetworkVip:
# StorageNetworkVip:
# StorageMgmtNetworkVip:
EnableLoadBalancer: false
ControlPlaneIP: 192.0.2.251
ExternalNetworkVip: 10.0.0.251
InternalApiNetworkVip: 172.16.2.251
StorageNetworkVip: 172.16.1.251
StorageMgmtNetworkVip: 172.16.3.251
ServiceVips:
redis: 172.16.2.252
ControllerIPs:
external:
- 10.0.0.253
internal_api:
- 172.16.2.253
storage:
- 172.16.1.253
storage_mgmt:
- 172.16.3.253
tenant:
- 172.16.0.253
EnableLoadBalancer: false

View File

@ -8,6 +8,13 @@ resource_registry:
OS::TripleO::Network::Storage: ../network/storage.yaml
OS::TripleO::Network::Tenant: ../network/tenant.yaml
# Port assignments for the VIPs
OS::TripleO::Network::Ports::ExternalVipPort: ../network/ports/external.yaml
OS::TripleO::Network::Ports::InternalApiVipPort: ../network/ports/internal_api.yaml
OS::TripleO::Network::Ports::StorageVipPort: ../network/ports/storage.yaml
OS::TripleO::Network::Ports::StorageMgmtVipPort: ../network/ports/storage_mgmt.yaml
OS::TripleO::Network::Ports::RedisVipPort: ../network/ports/vip.yaml
# Port assignments for the controller role
OS::TripleO::Controller::Ports::ExternalPort: ../network/ports/external.yaml
OS::TripleO::Controller::Ports::InternalApiPort: ../network/ports/internal_api.yaml
@ -33,6 +40,3 @@ resource_registry:
OS::TripleO::BlockStorage::Ports::InternalApiPort: ../network/ports/internal_api.yaml
OS::TripleO::BlockStorage::Ports::StoragePort: ../network/ports/storage.yaml
OS::TripleO::BlockStorage::Ports::StorageMgmtPort: ../network/ports/storage_mgmt.yaml
# Port assignments for service virtual IPs for the controller role
OS::TripleO::Controller::Ports::RedisVipPort: ../network/ports/vip.yaml

View File

@ -5,6 +5,10 @@ description: >
The IP address will be chosen automatically if FixedIPs is empty.
parameters:
ServiceName: # Here for compatibility with from_service.yaml
description: Name of the service to lookup
default: ''
type: string
NetworkName:
description: # Here for compatibility with isolated networks
default: ctlplane

View File

@ -27,6 +27,12 @@ parameters:
[{'ip_address':'1.2.3.4'}]
default: []
type: json
IPPool: # Here for compatibility with from_pool.yaml
default: {}
type: json
NodeIndex: # Here for compatibility with from_pool.yaml
default: 0
type: number
resources:

View File

@ -0,0 +1,45 @@
heat_template_version: 2015-04-30
description: >
Returns an IP from a network mapped list of IPs
parameters:
ExternalNetName:
description: Name of the external 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
default: ''
type: string
IPPool:
default: {}
description: A network mapped list of IPs
type: json
NodeIndex:
default: 0
description: Index of the IP to get from Pool
type: number
ExternalNetCidr:
default: '10.0.0.0/24'
description: Cidr for the external network.
type: string
outputs:
ip_address:
description: external network IP
value: {get_param: [IPPool, {get_param: ExternalNetName}, {get_param: NodeIndex}]}
ip_subnet:
# FIXME: this assumes a 2 digit subnet CIDR (need more heat functions?)
description: IP/Subnet CIDR for the external network IP
value:
list_join:
- ''
- - {get_param: [IPPool, {get_param: ExternalNetName}, {get_param: NodeIndex}]}
- '/'
- {get_param: [ExternalNetCidr, -2]}
- {get_param: [ExternalNetCidr, -1]}

View File

@ -0,0 +1,34 @@
heat_template_version: 2015-04-30
description: >
Returns an IP from a service mapped list of IPs
parameters:
ServiceName:
description: Name of the service to lookup
default: ''
type: string
NetworkName: # Here for compatability with ctlplane_vip.yaml
description: Name of the network where the VIP will be created
default: ctlplane
type: string
PortName: # Here for compatability with ctlplane_vip.yaml
description: Name of the port
default: ''
type: string
ControlPlaneIP: # Here for compatability with ctlplane_vip.yaml
description: IP address on the control plane
default: ''
type: string
ControlPlaneNetwork: # Here for compatability with ctlplane_vip.yaml
description: The name of the undercloud Neutron control plane
default: ctlplane
type: string
ServiceVips:
default: {}
type: json
outputs:
ip_address:
description: network IP
value: {get_param: [ServiceVips, {get_param: ServiceName}]}

View File

@ -16,6 +16,12 @@ parameters:
description: IP address on the control plane
default: ''
type: string
IPPool: # Here for compatibility with from_pool.yaml
default: {}
type: json
NodeIndex: # Here for compatibility with from_pool.yaml
default: 0
type: number
resources:

View File

@ -0,0 +1,45 @@
heat_template_version: 2015-04-30
description: >
Returns an IP from a network mapped list of IPs
parameters:
InternalApiNetName:
description: Name of the internal API 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
default: ''
type: string
IPPool:
default: {}
description: A network mapped list of IPs
type: json
NodeIndex:
default: 0
description: Index of the IP to get from Pool
type: number
InternalApiNetCidr:
default: '172.16.2.0/24'
description: Cidr for the internal API network.
type: string
outputs:
ip_address:
description: internal API network IP
value: {get_param: [IPPool, {get_param: InternalApiNetName}, {get_param: NodeIndex}]}
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_param: [IPPool, {get_param: InternalApiNetName}, {get_param: NodeIndex}]}
- '/'
- {get_param: [InternalApiNetCidr, -2]}
- {get_param: [InternalApiNetCidr, -1]}

View File

@ -2,7 +2,7 @@ heat_template_version: 2015-04-30
parameters:
# Set these via parameter defaults to configure external VIPs
ControlNetworkVip:
ControlPlaneIP:
default: ''
type: string
ExternalNetworkVip:
@ -43,7 +43,7 @@ outputs:
A Hash containing a mapping of network names to assigned IPs
for a specific machine.
value:
ctlplane: {get_param: ControlNetworkVip}
ctlplane: {get_param: ControlPlaneIP}
external: {get_param: ExternalNetworkVip}
internal_api: {get_param: InternalApiNetworkVip}
storage: {get_param: StorageNetworkVip}

View File

@ -4,6 +4,10 @@ description: >
Returns the control plane port (provisioning network) as the ip_address.
parameters:
ServiceName: # Here for compatibility with from_service.yaml
description: Name of the service to lookup
default: ''
type: string
ControlPlaneIP:
description: IP address on the control plane
type: string
@ -27,6 +31,14 @@ parameters:
default: '24'
description: The subnet CIDR of the control plane network.
type: string
IPPool: # Here for compatibility with from_pool.yaml
default: {}
description: A network mapped list of IPs
type: json
NodeIndex: # Here for compatibility with from_pool.yaml
default: 0
description: Index of the IP to get from Pool
type: number
outputs:
ip_address:

View File

@ -16,6 +16,12 @@ parameters:
description: IP address on the control plane
default: ''
type: string
IPPool: # Here for compatibility with from_pool.yaml
default: {}
type: json
NodeIndex: # Here for compatibility with from_pool.yaml
default: 0
type: number
resources:

View File

@ -0,0 +1,45 @@
heat_template_version: 2015-04-30
description: >
Returns an IP from a network mapped list of IPs
parameters:
StorageNetName:
description: Name of the storage 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
default: ''
type: string
IPPool:
default: {}
description: A network mapped list of IPs
type: json
NodeIndex:
default: 0
description: Index of the IP to get from Pool
type: number
StorageNetCidr:
default: '172.16.1.0/24'
description: Cidr for the storage network.
type: string
outputs:
ip_address:
description: storage network IP
value: {get_param: [IPPool, {get_param: StorageNetName}, {get_param: NodeIndex}]}
ip_subnet:
# FIXME: this assumes a 2 digit subnet CIDR (need more heat functions?)
description: IP/Subnet CIDR for the storage network IP
value:
list_join:
- ''
- - {get_param: [IPPool, {get_param: StorageNetName}, {get_param: NodeIndex}]}
- '/'
- {get_param: [StorageNetCidr, -2]}
- {get_param: [StorageNetCidr, -1]}

View File

@ -16,6 +16,12 @@ parameters:
description: IP address on the control plane
default: ''
type: string
IPPool: # Here for compatibility with from_pool.yaml
default: {}
type: json
NodeIndex: # Here for compatibility with from_pool.yaml
default: 0
type: number
resources:

View File

@ -0,0 +1,45 @@
heat_template_version: 2015-04-30
description: >
Returns an IP from a network mapped list of IPs
parameters:
StorageMgmtNetName:
description: Name of the storage MGMT 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
default: ''
type: string
IPPool:
default: {}
description: A network mapped list of IPs
type: json
NodeIndex:
default: 0
description: Index of the IP to get from Pool
type: number
StorageMgmtNetCidr:
default: '172.16.3.0/24'
description: Cidr for the storage MGMT network.
type: string
outputs:
ip_address:
description: storage MGMT network IP
value: {get_param: [IPPool, {get_param: StorageMgmtNetName}, {get_param: NodeIndex}]}
ip_subnet:
# FIXME: this assumes a 2 digit subnet CIDR (need more heat functions?)
description: IP/Subnet CIDR for the storage MGMT network IP
value:
list_join:
- ''
- - {get_param: [IPPool, {get_param: StorageMgmtNetName}, {get_param: NodeIndex}]}
- '/'
- {get_param: [StorageMgmtNetCidr, -2]}
- {get_param: [StorageMgmtNetCidr, -1]}

View File

@ -16,6 +16,12 @@ parameters:
description: IP address on the control plane
default: ''
type: string
IPPool: # Here for compatibility with from_pool.yaml
default: {}
type: json
NodeIndex: # Here for compatibility with from_pool.yaml
default: 0
type: number
resources:

View File

@ -0,0 +1,45 @@
heat_template_version: 2015-04-30
description: >
Returns an IP from a network mapped list of IPs
parameters:
TenantNetName:
description: Name of the tenant 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
default: ''
type: string
IPPool:
default: {}
description: A network mapped list of IPs
type: json
NodeIndex:
default: 0
description: Index of the IP to get from Pool
type: number
TenantNetCidr:
default: '172.16.0.0/24'
description: Cidr for the tenant network.
type: string
outputs:
ip_address:
description: tenant network IP
value: {get_param: [IPPool, {get_param: TenantNetName}, {get_param: NodeIndex}]}
ip_subnet:
# FIXME: this assumes a 2 digit subnet CIDR (need more heat functions?)
description: IP/Subnet CIDR for the tenant network IP
value:
list_join:
- ''
- - {get_param: [IPPool, {get_param: TenantNetName}, {get_param: NodeIndex}]}
- '/'
- {get_param: [TenantNetCidr, -2]}
- {get_param: [TenantNetCidr, -1]}

View File

@ -5,6 +5,10 @@ description: >
The IP address will be chosen automatically if FixedIPs is empty.
parameters:
ServiceName: # Here for compatibility with from_service.yaml
description: Name of the service to lookup
default: ''
type: string
NetworkName:
description: Name of the network where the VIP will be created
default: internal_api

View File

@ -67,6 +67,13 @@ resource_registry:
OS::TripleO::Network::Ports::NetIpSubnetMap: network/ports/net_ip_subnet_map.yaml
OS::TripleO::Network::Ports::NetIpListMap: network/ports/net_ip_list_map.yaml
# Port assignments for the VIPs
OS::TripleO::Network::Ports::ExternalVipPort: network/ports/noop.yaml
OS::TripleO::Network::Ports::InternalApiVipPort: network/ports/noop.yaml
OS::TripleO::Network::Ports::StorageVipPort: network/ports/noop.yaml
OS::TripleO::Network::Ports::StorageMgmtVipPort: network/ports/noop.yaml
OS::TripleO::Network::Ports::RedisVipPort: network/ports/ctlplane_vip.yaml
# Port assignments for the controller role
OS::TripleO::Controller::Ports::ExternalPort: network/ports/noop.yaml
OS::TripleO::Controller::Ports::InternalApiPort: network/ports/noop.yaml
@ -93,9 +100,6 @@ resource_registry:
OS::TripleO::BlockStorage::Ports::StoragePort: network/ports/noop.yaml
OS::TripleO::BlockStorage::Ports::StorageMgmtPort: network/ports/noop.yaml
# Port assignments for service virtual IPs for the controller role
OS::TripleO::Controller::Ports::RedisVipPort: network/ports/ctlplane_vip.yaml
# Service Endpoint Mappings
OS::TripleO::Endpoint: network/endpoints/endpoint.yaml
OS::TripleO::EndpointMap: network/endpoints/endpoint_map.yaml

View File

@ -1173,17 +1173,18 @@ resources:
RedisVirtualIP:
depends_on: Networks
type: OS::TripleO::Controller::Ports::RedisVipPort
type: OS::TripleO::Network::Ports::RedisVipPort
properties:
ControlPlaneIP: {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]}
ControlPlaneNetwork: {get_param: NeutronControlPlaneID}
PortName: redis_virtual_ip
NetworkName: {get_param: [ServiceNetMap, RedisNetwork]}
ServiceName: redis
# The public VIP is on the External net, falls back to ctlplane
PublicVirtualIP:
depends_on: Networks
type: OS::TripleO::Controller::Ports::ExternalPort
type: OS::TripleO::Network::Ports::ExternalVipPort
properties:
ControlPlaneIP: {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]}
ControlPlaneNetwork: {get_param: NeutronControlPlaneID}
@ -1192,21 +1193,21 @@ resources:
InternalApiVirtualIP:
depends_on: Networks
type: OS::TripleO::Controller::Ports::InternalApiPort
type: OS::TripleO::Network::Ports::InternalApiVipPort
properties:
ControlPlaneIP: {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]}
PortName: internal_api_virtual_ip
StorageVirtualIP:
depends_on: Networks
type: OS::TripleO::Controller::Ports::StoragePort
type: OS::TripleO::Network::Ports::StorageVipPort
properties:
ControlPlaneIP: {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]}
PortName: storage_virtual_ip
StorageMgmtVirtualIP:
depends_on: Networks
type: OS::TripleO::Controller::Ports::StorageMgmtPort
type: OS::TripleO::Network::Ports::StorageMgmtVipPort
properties:
ControlPlaneIP: {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]}
PortName: storage_management_virtual_ip

View File

@ -85,6 +85,15 @@ parameters:
description: |
Controller specific hiera configuration data to inject into the cluster.
type: json
ControllerIPs:
default: {}
description: >
A network mapped list of IPs to assign to Controllers in the following form:
{
"internal_api": ["a.b.c.d", "e.f.g.h"],
...
}
type: json
ControlVirtualInterface:
default: 'br-ex'
description: Interface where virtual ip will be assigned.
@ -660,26 +669,36 @@ resources:
ExternalPort:
type: OS::TripleO::Controller::Ports::ExternalPort
properties:
IPPool: {get_param: ControllerIPs}
NodeIndex: {get_param: NodeIndex}
ControlPlaneIP: {get_attr: [Controller, networks, ctlplane, 0]}
InternalApiPort:
type: OS::TripleO::Controller::Ports::InternalApiPort
properties:
IPPool: {get_param: ControllerIPs}
NodeIndex: {get_param: NodeIndex}
ControlPlaneIP: {get_attr: [Controller, networks, ctlplane, 0]}
StoragePort:
type: OS::TripleO::Controller::Ports::StoragePort
properties:
IPPool: {get_param: ControllerIPs}
NodeIndex: {get_param: NodeIndex}
ControlPlaneIP: {get_attr: [Controller, networks, ctlplane, 0]}
StorageMgmtPort:
type: OS::TripleO::Controller::Ports::StorageMgmtPort
properties:
IPPool: {get_param: ControllerIPs}
NodeIndex: {get_param: NodeIndex}
ControlPlaneIP: {get_attr: [Controller, networks, ctlplane, 0]}
TenantPort:
type: OS::TripleO::Controller::Ports::TenantPort
properties:
IPPool: {get_param: ControllerIPs}
NodeIndex: {get_param: NodeIndex}
ControlPlaneIP: {get_attr: [Controller, networks, ctlplane, 0]}
NetIpMap: