This change adds a new *_from_pool.yaml meant to return an IP from a list instead of allocating a Neutron port, useful to pick an IP from a pre-defined list and making it possible to configure, for example an external balancer in advance (or dns), with the future IPs of the controller nodes. The list of IPs is provided via parameter_defaults (in the ControllerIPs struct) using ControllerIPs param. Also some additional VipPort types are created for the *VirtualIP resources. The VIPs were previously created using the same port resource used by the nodes, but when deploying with an external balancer we want the VIP resource to be nooped instead. Change-Id: Id3d4f12235501ae77200430a2dc022f378dce336changes/97/222497/32
parent
3e8010dc85
commit
22b4acf454
@ -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
|
||||
|
@ -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]}
|
@ -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}]}
|
@ -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]}
|
@ -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]}
|
@ -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]}
|
@ -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]}
|
Loading…
Reference in new issue