Merge "Add IPv6 Support to Isolated Networks"

This commit is contained in:
Jenkins 2016-03-05 02:20:16 +00:00 committed by Gerrit Code Review
commit 00e47eaf5b
39 changed files with 1009 additions and 30 deletions

View File

@ -0,0 +1,49 @@
# Enable the creation of IPv6 Neutron networks for isolated Overcloud
# traffic and configure each role to assign ports (related
# to that role) on these networks.
resource_registry:
OS::TripleO::Network::External: ../network/external_v6.yaml
OS::TripleO::Network::InternalApi: ../network/internal_api_v6.yaml
OS::TripleO::Network::StorageMgmt: ../network/storage_mgmt_v6.yaml
OS::TripleO::Network::Storage: ../network/storage_v6.yaml
# IPv4 until OVS and Neutron support IPv6 tunnel endpoints
OS::TripleO::Network::Tenant: ../network/tenant.yaml
# Port assignments for the VIPs
OS::TripleO::Network::Ports::ExternalVipPort: ../network/ports/external_v6.yaml
OS::TripleO::Network::Ports::InternalApiVipPort: ../network/ports/internal_api_v6.yaml
OS::TripleO::Network::Ports::StorageVipPort: ../network/ports/storage_v6.yaml
OS::TripleO::Network::Ports::StorageMgmtVipPort: ../network/ports/storage_mgmt_v6.yaml
OS::TripleO::Network::Ports::RedisVipPort: ../network/ports/vip_v6.yaml
# Port assignments for the controller role
OS::TripleO::Controller::Ports::ExternalPort: ../network/ports/external_v6.yaml
OS::TripleO::Controller::Ports::InternalApiPort: ../network/ports/internal_api_v6.yaml
OS::TripleO::Controller::Ports::StoragePort: ../network/ports/storage_v6.yaml
OS::TripleO::Controller::Ports::StorageMgmtPort: ../network/ports/storage_mgmt_v6.yaml
OS::TripleO::Controller::Ports::TenantPort: ../network/ports/tenant.yaml
# Port assignments for the compute role
OS::TripleO::Compute::Ports::InternalApiPort: ../network/ports/internal_api_v6.yaml
OS::TripleO::Compute::Ports::StoragePort: ../network/ports/storage_v6.yaml
OS::TripleO::Compute::Ports::TenantPort: ../network/ports/tenant.yaml
# Port assignments for the ceph storage role
OS::TripleO::CephStorage::Ports::StoragePort: ../network/ports/storage_v6.yaml
OS::TripleO::CephStorage::Ports::StorageMgmtPort: ../network/ports/storage_mgmt_v6.yaml
# Port assignments for the swift storage role
OS::TripleO::SwiftStorage::Ports::InternalApiPort: ../network/ports/internal_api_v6.yaml
OS::TripleO::SwiftStorage::Ports::StoragePort: ../network/ports/storage_v6.yaml
OS::TripleO::SwiftStorage::Ports::StorageMgmtPort: ../network/ports/storage_mgmt_v6.yaml
# Port assignments for the block storage role
OS::TripleO::BlockStorage::Ports::InternalApiPort: ../network/ports/internal_api_v6.yaml
OS::TripleO::BlockStorage::Ports::StoragePort: ../network/ports/storage_v6.yaml
OS::TripleO::BlockStorage::Ports::StorageMgmtPort: ../network/ports/storage_mgmt_v6.yaml
parameter_defaults:
# Enable IPv6 for MongoDB. This is required when MongoDB is using an IPv6 IP.
MongoDbIPv6: True
# Enable various IPv6 features in Nova.
NovaIPv6: True

View File

@ -173,7 +173,10 @@ def template_endpoint_items(config):
def generate_endpoint_map_template(config):
return collections.OrderedDict([
('heat_template_version', '2015-04-30'),
('description', 'A map of OpenStack endpoints.'),
('description', 'A map of OpenStack endpoints. Since the endpoints '
'are URLs, we need to have brackets around IPv6 IP addresses. The '
'inputs to these parameters come from net_ip_uri_map, which will '
'include these brackets in IPv6 addresses.'),
('parameters', template_parameters(config)),
('outputs', {
'endpoint_map': {

View File

@ -3,7 +3,10 @@
### by the script build_endpoint_map.py
heat_template_version: '2015-04-30'
description: A map of OpenStack endpoints.
description: A map of OpenStack endpoints. Since the endpoints are URLs,
we need to have brackets around IPv6 IP addresses. The inputs to these
parameters come from net_ip_uri_map, which will include these brackets
in IPv6 addresses.
parameters:
AodhApiVirtualIP: {type: string, default: ''}
CeilometerApiVirtualIP: {type: string, default: ''}

61
network/external_v6.yaml Normal file
View File

@ -0,0 +1,61 @@
heat_template_version: 2015-04-30
description: >
External network. Public traffic, Neutron l3router for floating IPs/SNAT, etc.
parameters:
# the defaults here work for static IP assignment (IPAM) only
ExternalNetCidr:
# OpenStack uses the EUI-64 address format, which requires a /64 prefix
default: '2001:db8:fd00:1000::/64'
description: Cidr for the external network.
type: string
ExternalNetValueSpecs:
default: {'provider:physical_network': 'external', 'provider:network_type': 'flat'}
description: Value specs for the external network.
type: json
ExternalNetAdminStateUp:
default: false
description: This admin state of of the network.
type: boolean
ExternalNetShared:
default: false
description: Whether this network is shared across all tenants.
type: boolean
ExternalNetName:
default: external
description: The name of the external network.
type: string
ExternalSubnetName:
default: external_subnet
description: The name of the external subnet in Neutron.
type: string
ExternalAllocationPools:
default: [{'start': '2001:db8:fd00:1000::10', 'end': '2001:db8:fd00:1000:ffff:ffff:ffff:fffe'}]
description: Ip allocation pool range for the external network.
type: json
resources:
ExternalNetwork:
type: OS::Neutron::Net
properties:
admin_state_up: {get_param: ExternalNetAdminStateUp}
name: {get_param: ExternalNetName}
shared: {get_param: ExternalNetShared}
value_specs: {get_param: ExternalNetValueSpecs}
ExternalSubnet:
type: OS::Neutron::Subnet
properties:
ip_version: 6
ipv6_address_mode: slaac
ipv6_ra_mode: slaac
cidr: {get_param: ExternalNetCidr}
name: {get_param: ExternalSubnetName}
network: {get_resource: ExternalNetwork}
allocation_pools: {get_param: ExternalAllocationPools}
outputs:
OS::stack_id:
description: Neutron external network
value: {get_resource: ExternalNetwork}

View File

@ -0,0 +1,61 @@
heat_template_version: 2015-04-30
description: >
Internal API network. Used for most APIs, Database, RPC.
parameters:
# the defaults here work for static IP assignment (IPAM) only
InternalApiNetCidr:
# OpenStack uses the EUI-64 address format, which requires a /64 prefix
default: 'fd00:fd00:fd00:2000::/64'
description: Cidr for the internal API network.
type: string
InternalApiNetValueSpecs:
default: {'provider:physical_network': 'internal_api', 'provider:network_type': 'flat'}
description: Value specs for the internal API network.
type: json
InternalApiNetAdminStateUp:
default: false
description: This admin state of of the network.
type: boolean
InternalApiNetShared:
default: false
description: Whether this network is shared across all tenants.
type: boolean
InternalApiNetName:
default: internal_api
description: The name of the internal API network.
type: string
InternalApiSubnetName:
default: internal_api_subnet
description: The name of the internal API subnet in Neutron.
type: string
InternalApiAllocationPools:
default: [{'start': 'fd00:fd00:fd00:2000::10', 'end': 'fd00:fd00:fd00:2000:ffff:ffff:ffff:fffe'}]
description: Ip allocation pool range for the internal API network.
type: json
resources:
InternalApiNetwork:
type: OS::Neutron::Net
properties:
admin_state_up: {get_param: InternalApiNetAdminStateUp}
name: {get_param: InternalApiNetName}
shared: {get_param: InternalApiNetShared}
value_specs: {get_param: InternalApiNetValueSpecs}
InternalApiSubnet:
type: OS::Neutron::Subnet
properties:
ip_version: 6
ipv6_address_mode: slaac
ipv6_ra_mode: slaac
cidr: {get_param: InternalApiNetCidr}
name: {get_param: InternalApiSubnetName}
network: {get_resource: InternalApiNetwork}
allocation_pools: {get_param: InternalApiAllocationPools}
outputs:
OS::stack_id:
description: Neutron internal network
value: {get_resource: InternalApiNetwork}

View File

@ -45,6 +45,9 @@ outputs:
ip_address:
description: Virtual IP network IP
value: {get_attr: [VipPort, fixed_ips, 0, ip_address]}
ip_address_uri:
description: Virtual IP network IP (for compatibility with vip_v6.yaml)
value: {get_attr: [VipPort, fixed_ips, 0, ip_address]}
ip_subnet:
description: IP/Subnet CIDR for the ctlplane network.
value:

View File

@ -48,6 +48,9 @@ outputs:
ip_address:
description: external network IP
value: {get_attr: [ExternalPort, fixed_ips, 0, ip_address]}
ip_address_uri:
description: external network IP (for compatibility with external_v6.yaml)
value: {get_attr: [ExternalPort, fixed_ips, 0, ip_address]}
ip_subnet:
description: IP/Subnet CIDR for the external network IP
value:

View File

@ -33,6 +33,9 @@ outputs:
ip_address:
description: external network IP
value: {get_param: [IPPool, {get_param: ExternalNetName}, {get_param: NodeIndex}]}
ip_address_uri:
description: external network IP (for compatibility with IPv6)
value: {get_param: [IPPool, {get_param: ExternalNetName}, {get_param: NodeIndex}]}
ip_subnet:
description: IP/Subnet CIDR for the external network IP
value:

View File

@ -0,0 +1,68 @@
heat_template_version: 2015-04-30
description: >
Creates a port on the external network. The IP address will be chosen
automatically if FixedIPs is empty.
parameters:
ExternalNetName:
description: Name of the external neutron network
default: external
type: string
PortName:
description: Name of the port
default: ''
type: string
ControlPlaneIP: # Here for compatability with noop.yaml
description: IP address on the control plane
default: ''
type: string
ControlPlaneNetwork: # Here for compatibility with ctlplane_vip.yaml
description: The name of the undercloud Neutron control plane
default: ctlplane
type: string
FixedIPs:
description: >
Control the IP allocation for the VIP port. E.g.
[{'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:
ExternalPort:
type: OS::Neutron::Port
properties:
network: {get_param: ExternalNetName}
name: {get_param: PortName}
fixed_ips: {get_param: FixedIPs}
replacement_policy: AUTO
outputs:
ip_address:
description: external network IP
value: {get_attr: [ExternalPort, fixed_ips, 0, ip_address]}
ip_address_uri:
description: external network IP with brackets suitable for a URL
value:
list_join:
- ''
- - '['
- {get_attr: [ExternalPort, fixed_ips, 0, ip_address]}
- ']'
ip_subnet:
# FIXME: this assumes a 2 digit subnet CIDR (need more heat functions?)
description: IP/Subnet CIDR for the external network IP
value:
list_join:
- ''
- - {get_attr: [ExternalPort, fixed_ips, 0, ip_address]}
- '/'
- {get_attr: [ExternalPort, subnets, 0, cidr, -2]}
- {get_attr: [ExternalPort, subnets, 0, cidr, -1]}

View File

@ -32,3 +32,6 @@ outputs:
ip_address:
description: network IP
value: {get_param: [ServiceVips, {get_param: ServiceName}]}
ip_address_uri:
description: network IP (for compatibility with IPv6)
value: {get_param: [ServiceVips, {get_param: ServiceName}]}

View File

@ -43,6 +43,10 @@ outputs:
ip_address:
description: internal API network IP
value: {get_attr: [InternalApiPort, fixed_ips, 0, ip_address]}
ip_address_uri:
description: |
internal API network IP (for compatibility with internal_api_v6.yaml)
value: {get_attr: [InternalApiPort, fixed_ips, 0, ip_address]}
ip_subnet:
description: IP/Subnet CIDR for the internal API network IP
value:

View File

@ -33,6 +33,9 @@ outputs:
ip_address:
description: internal API network IP
value: {get_param: [IPPool, {get_param: InternalApiNetName}, {get_param: NodeIndex}]}
ip_address_uri:
description: internal API network IP (for compatibility with internal_api_v6.yaml)
value: {get_param: [IPPool, {get_param: InternalApiNetName}, {get_param: NodeIndex}]}
ip_subnet:
description: IP/Subnet CIDR for the internal API network IP
value:

View File

@ -0,0 +1,63 @@
heat_template_version: 2015-04-30
description: >
Creates a port on the internal_api network.
parameters:
InternalApiNetName:
description: Name of the internal API neutron network
default: internal_api
type: string
PortName:
description: Name of the port
default: ''
type: string
ControlPlaneIP: # Here for compatability with noop.yaml
description: IP address on the control plane
default: ''
type: string
FixedIPs:
description: >
Control the IP allocation for the VIP port. E.g.
[{'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:
InternalApiPort:
type: OS::Neutron::Port
properties:
network: {get_param: InternalApiNetName}
name: {get_param: PortName}
fixed_ips: {get_param: FixedIPs}
replacement_policy: AUTO
outputs:
ip_address:
description: internal API network IP
value: {get_attr: [InternalApiPort, fixed_ips, 0, ip_address]}
ip_address_uri:
description: internal api network IP with brackets suitable for a URL
value:
list_join:
- ''
- - '['
- {get_attr: [InternalApiPort, fixed_ips, 0, ip_address]}
- ']'
ip_subnet:
# FIXME: this assumes a 2 digit subnet CIDR (need more heat functions?)
description: IP/Subnet CIDR for the internal API network IP
value:
list_join:
- ''
- - {get_attr: [InternalApiPort, fixed_ips, 0, ip_address]}
- '/'
- {get_attr: [InternalApiPort, subnets, 0, cidr, -2]}
- {get_attr: [InternalApiPort, subnets, 0, cidr, -1]}

View File

@ -36,6 +36,9 @@ outputs:
ip_address:
description: management network IP
value: {get_attr: [ManagementPort, fixed_ips, 0, ip_address]}
ip_address_uri:
description: management network IP (for compatibility with management_v6.yaml)
value: {get_attr: [ManagementPort, fixed_ips, 0, ip_address]}
ip_subnet:
description: IP/Subnet CIDR for the management network IP
value:

View File

@ -33,6 +33,9 @@ outputs:
ip_address:
description: management network IP
value: {get_param: [IPPool, {get_param: ManagementNetName}, {get_param: NodeIndex}]}
ip_address_uri:
description: management network IP (for compatibility with management_v6.yaml)
value: {get_param: [IPPool, {get_param: ManagementNetName}, {get_param: NodeIndex}]}
ip_subnet:
description: IP/Subnet CIDR for the management network IP
value:

View File

@ -0,0 +1,54 @@
heat_template_version: 2015-10-15
description: >
Creates a port on the management network. The IP address will be chosen
automatically if FixedIPs is empty.
parameters:
ManagementNetName:
description: Name of the management neutron network
default: management
type: string
PortName:
description: Name of the port
default: ''
type: string
ControlPlaneIP: # Here for compatibility with noop.yaml
description: IP address on the control plane
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:
ManagementPort:
type: OS::Neutron::Port
properties:
network: {get_param: ManagementNetName}
name: {get_param: PortName}
replacement_policy: AUTO
outputs:
ip_address:
description: management network IP
value: {get_attr: [ManagementPort, fixed_ips, 0, ip_address]}
ip_address_uri:
description: management network IP with brackets suitable for a URL
value:
list_join:
- ''
- - '['
- {get_attr: [ManagementPort, fixed_ips, 0, ip_address]}
- ']'
ip_subnet:
description: IP/Subnet CIDR for the management network IP
value:
list_join:
- ''
- - {get_attr: [ManagementPort, fixed_ips, 0, ip_address]}
- '/'
- {str_split: ['/', {get_attr: [ManagementPort, subnets, 0, cidr]}, 1]}

View File

@ -7,21 +7,45 @@ parameters:
ExternalIp:
default: ''
type: string
ExternalIpUri:
default: ''
type: string
description: IP address with brackets in case of IPv6
InternalApiIp:
default: ''
type: string
InternalApiIpUri:
default: ''
type: string
description: IP address with brackets in case of IPv6
StorageIp:
default: ''
type: string
StorageIpUri:
default: ''
type: string
description: IP address with brackets in case of IPv6
StorageMgmtIp:
default: ''
type: string
StorageMgmtIpUri:
default: ''
type: string
description: IP address with brackets in case of IPv6
TenantIp:
default: ''
type: string
TenantIpUri:
default: ''
type: string
description: IP address with brackets in case of IPv6
ManagementIp:
default: ''
type: string
ManagementIpUri:
default: ''
type: string
description: IP address with brackets in case of IPv6
outputs:
net_ip_map:
@ -36,3 +60,15 @@ outputs:
storage_mgmt: {get_param: StorageMgmtIp}
tenant: {get_param: TenantIp}
management: {get_param: ManagementIp}
net_ip_uri_map:
description: >
A Hash containing a mapping of netowrk names to assigned IPs for a
specific machine with brackets around IPv6 addresses for use in URLs.
value:
ctlplane: {get_param: ControlPlaneIp}
external: {get_param: ExternalIpUri}
internal_api: {get_param: InternalApiIpUri}
storage: {get_param: StorageIpUri}
storage_mgmt: {get_param: StorageMgmtIpUri}
tenant: {get_param: TenantIpUri}
management: {get_param: ManagementIpUri}

View File

@ -24,18 +24,33 @@ parameters:
ExternalIp:
default: ''
type: string
ExternalIpUri:
default: ''
type: string
InternalApiIp:
default: ''
type: string
InternalApiIpUri:
default: ''
type: string
StorageIp:
default: ''
type: string
StorageIpUri:
default: ''
type: string
StorageMgmtIp:
default: ''
type: string
StorageMgmtIpUri:
default: ''
type: string
TenantIp:
default: ''
type: string
TenantIpUri:
default: ''
type: string
outputs:
net_ip_map:
@ -48,3 +63,13 @@ outputs:
internal_api: {get_param: InternalApiNetworkVip}
storage: {get_param: StorageNetworkVip}
storage_mgmt: {get_param: StorageMgmtNetworkVip}
net_ip_uri_map:
description: >
A Hash containing a mapping of netowrk names to assigned IPs for a
specific machine with brackets around IPv6 addresses for use in URLs.
value:
ctlplane: {get_param: ControlPlaneIP}
external: {get_param: ExternalNetworkVip}
internal_api: {get_param: InternalApiNetworkVip}
storage: {get_param: StorageNetworkVip}
storage_mgmt: {get_param: StorageMgmtNetworkVip}

View File

@ -44,6 +44,9 @@ outputs:
ip_address:
description: pass thru network IP
value: {get_param: ControlPlaneIP}
ip_address_uri:
description: pass thru network IP (for compatibility with vip_v6.yaml)
value: {get_param: ControlPlaneIP}
ip_subnet:
description: IP/Subnet CIDR for the pass thru network IP
value:

View File

@ -43,6 +43,9 @@ outputs:
ip_address:
description: storage network IP
value: {get_attr: [StoragePort, fixed_ips, 0, ip_address]}
ip_address_uri:
description: storage network IP (for compatibility with storage_v6.yaml)
value: {get_attr: [StoragePort, fixed_ips, 0, ip_address]}
ip_subnet:
description: IP/Subnet CIDR for the storage network IP
value:

View File

@ -33,6 +33,9 @@ outputs:
ip_address:
description: storage network IP
value: {get_param: [IPPool, {get_param: StorageNetName}, {get_param: NodeIndex}]}
ip_address_uri:
description: storage network IP (for compatibility with storage_v6.yaml)
value: {get_param: [IPPool, {get_param: StorageNetName}, {get_param: NodeIndex}]}
ip_subnet:
description: IP/Subnet CIDR for the storage network IP
value:

View File

@ -43,6 +43,10 @@ outputs:
ip_address:
description: storage_mgmt network IP
value: {get_attr: [StorageMgmtPort, fixed_ips, 0, ip_address]}
ip_address_uri:
description: |
storage_mgmt network IP (for compatibility with storage_mgmt_v6.yaml)
value: {get_attr: [StorageMgmtPort, fixed_ips, 0, ip_address]}
ip_subnet:
description: IP/Subnet CIDR for the storage_mgmt network IP
value:

View File

@ -33,6 +33,9 @@ outputs:
ip_address:
description: storage MGMT network IP
value: {get_param: [IPPool, {get_param: StorageMgmtNetName}, {get_param: NodeIndex}]}
ip_address_uri:
description: storage MGMT network IP (for compatibility with storage_mgmt_v6.yaml)
value: {get_param: [IPPool, {get_param: StorageMgmtNetName}, {get_param: NodeIndex}]}
ip_subnet:
description: IP/Subnet CIDR for the storage MGMT network IP
value:

View File

@ -0,0 +1,63 @@
heat_template_version: 2015-04-30
description: >
Creates a port on the storage_mgmt API network.
parameters:
StorageMgmtNetName:
description: Name of the storage_mgmt API neutron network
default: storage_mgmt
type: string
PortName:
description: Name of the port
default: ''
type: string
ControlPlaneIP: # Here for compatability with noop.yaml
description: IP address on the control plane
default: ''
type: string
FixedIPs:
description: >
Control the IP allocation for the VIP port. E.g.
[{'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:
StorageMgmtPort:
type: OS::Neutron::Port
properties:
network: {get_param: StorageMgmtNetName}
name: {get_param: PortName}
fixed_ips: {get_param: FixedIPs}
replacement_policy: AUTO
outputs:
ip_address:
description: storage_mgmt network IP
value: {get_attr: [StorageMgmtPort, fixed_ips, 0, ip_address]}
ip_address_uri:
description: storage_mgmt network IP with brackets suitable for a URI
value:
list_join:
- ''
- - '['
- {get_attr: [StorageMgmtPort, fixed_ips, 0, ip_address]}
- ']'
ip_subnet:
# FIXME: this assumes a 2 digit subnet CIDR (need more heat functions?)
description: IP/Subnet CIDR for the storage_mgmt network IP
value:
list_join:
- ''
- - {get_attr: [StorageMgmtPort, fixed_ips, 0, ip_address]}
- '/'
- {get_attr: [StorageMgmtPort, subnets, 0, cidr, -2]}
- {get_attr: [StorageMgmtPort, subnets, 0, cidr, -1]}

View File

@ -0,0 +1,63 @@
heat_template_version: 2015-04-30
description: >
Creates a port on the storage network.
parameters:
StorageNetName:
description: Name of the storage neutron network
default: storage
type: string
PortName:
description: Name of the port
default: ''
type: string
ControlPlaneIP: # Here for compatability with noop.yaml
description: IP address on the control plane
default: ''
type: string
FixedIPs:
description: >
Control the IP allocation for the VIP port. E.g.
[{'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:
StoragePort:
type: OS::Neutron::Port
properties:
network: {get_param: StorageNetName}
name: {get_param: PortName}
fixed_ips: {get_param: FixedIPs}
replacement_policy: AUTO
outputs:
ip_address:
description: storage network IP
value: {get_attr: [StoragePort, fixed_ips, 0, ip_address]}
ip_address_uri:
description: storage network IP with brackets suitable for a URL
value:
list_join:
- ''
- - '['
- {get_attr: [StoragePort, fixed_ips, 0, ip_address]}
- ']'
ip_subnet:
# FIXME: this assumes a 2 digit subnet CIDR (need more heat functions?)
description: IP/Subnet CIDR for the storage network IP
value:
list_join:
- ''
- - {get_attr: [StoragePort, fixed_ips, 0, ip_address]}
- '/'
- {get_attr: [StoragePort, subnets, 0, cidr, -2]}
- {get_attr: [StoragePort, subnets, 0, cidr, -1]}

View File

@ -43,6 +43,9 @@ outputs:
ip_address:
description: tenant network IP
value: {get_attr: [TenantPort, fixed_ips, 0, ip_address]}
ip_address_uri:
description: tenant network IP (for compatibility with tenant_v6.yaml)
value: {get_attr: [TenantPort, fixed_ips, 0, ip_address]}
ip_subnet:
description: IP/Subnet CIDR for the tenant network IP
value:

View File

@ -33,6 +33,9 @@ outputs:
ip_address:
description: tenant network IP
value: {get_param: [IPPool, {get_param: TenantNetName}, {get_param: NodeIndex}]}
ip_address_uri:
description: tenant network IP (for compatibility with tenant_v6.yaml)
value: {get_param: [IPPool, {get_param: TenantNetName}, {get_param: NodeIndex}]}
ip_subnet:
description: IP/Subnet CIDR for the tenant network IP
value:

View File

@ -0,0 +1,63 @@
heat_template_version: 2015-04-30
description: >
Creates a port on the tenant network.
parameters:
TenantNetName:
description: Name of the tenant neutron network
default: tenant
type: string
PortName:
description: Name of the port
default: ''
type: string
ControlPlaneIP: # Here for compatability with noop.yaml
description: IP address on the control plane
default: ''
type: string
FixedIPs:
description: >
Control the IP allocation for the VIP port. E.g.
[{'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:
TenantPort:
type: OS::Neutron::Port
properties:
network: {get_param: TenantNetName}
name: {get_param: PortName}
fixed_ips: {get_param: FixedIPs}
replacement_policy: AUTO
outputs:
ip_address:
description: tenant network IP
value: {get_attr: [TenantPort, fixed_ips, 0, ip_address]}
ip_address_uri:
description: tenant network IP with brackets suitable for a URL
value:
list_join:
- ''
- - '['
- {get_attr: [TenantPort, fixed_ips, 0, ip_address]}
- ']'
ip_subnet:
# FIXME: this assumes a 2 digit subnet CIDR (need more heat functions?)
description: IP/Subnet CIDR for the tenant network IP
value:
list_join:
- ''
- - {get_attr: [TenantPort, fixed_ips, 0, ip_address]}
- '/'
- {get_attr: [TenantPort, subnets, 0, cidr, -2]}
- {get_attr: [TenantPort, subnets, 0, cidr, -1]}

View File

@ -45,6 +45,9 @@ outputs:
ip_address:
description: Virtual IP network IP
value: {get_attr: [VipPort, fixed_ips, 0, ip_address]}
ip_address_uri:
description: Virtual IP network IP (for compatibility with vip.yaml)
value: {get_attr: [VipPort, fixed_ips, 0, ip_address]}
ip_subnet:
description: IP/Subnet CIDR for the network associated with this IP
value:

65
network/ports/vip_v6.yaml Normal file
View File

@ -0,0 +1,65 @@
heat_template_version: 2015-04-30
description: >
Creates a port for a VIP on the isolated network NetworkName.
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
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
ControlPlaneNetwork:
description: The name of the undercloud Neutron control plane
default: ctlplane
type: string
FixedIPs:
description: >
Control the IP allocation for the VIP port. E.g.
[{'ip_address':'1.2.3.4'}]
default: []
type: json
resources:
VipPort:
type: OS::Neutron::Port
properties:
network: {get_param: NetworkName}
name: {get_param: PortName}
fixed_ips: {get_param: FixedIPs}
replacement_policy: AUTO
outputs:
ip_address:
description: Virtual IP network IP
value: {get_attr: [VipPort, fixed_ips, 0, ip_address]}
ip_address_uri:
description: Virtual IP with brackets suitable for a URL
value:
list_join:
- ''
- - '['
- {get_attr: [VipPort, fixed_ips, 0, ip_address]}
- ']'
ip_subnet:
# FIXME: this assumes a 2 digit subnet CIDR (need more heat functions?)
description: IP/Subnet CIDR for the network associated with this IP
value:
list_join:
- ''
- - {get_attr: [VipPort, fixed_ips, 0, ip_address]}
- '/'
- {get_attr: [VipPort, subnets, 0, cidr, -2]}
- {get_attr: [VipPort, subnets, 0, cidr, -1]}

View File

@ -0,0 +1,61 @@
heat_template_version: 2015-04-30
description: >
Storage management network. Storage replication, etc.
parameters:
# the defaults here work for static IP assignment (IPAM) only
StorageMgmtNetCidr:
# OpenStack uses the EUI-64 address format, which requires a /64 prefix
default: 'fd00:fd00:fd00:4000::/64'
description: Cidr for the storage management network.
type: string
StorageMgmtNetValueSpecs:
default: {'provider:physical_network': 'storage_mgmt', 'provider:network_type': 'flat'}
description: Value specs for the storage_mgmt network.
type: json
StorageMgmtNetAdminStateUp:
default: false
description: This admin state of of the network.
type: boolean
StorageMgmtNetShared:
default: false
description: Whether this network is shared across all tenants.
type: boolean
StorageMgmtNetName:
default: storage_mgmt
description: The name of the Storage management network.
type: string
StorageMgmtSubnetName:
default: storage_mgmt_subnet
description: The name of the Storage management subnet in Neutron.
type: string
StorageMgmtAllocationPools:
default: [{'start': 'fd00:fd00:fd00:4000::10', 'end': 'fd00:fd00:fd00:4000:ffff:ffff:ffff:fffe'}]
description: Ip allocation pool range for the storage mgmt network.
type: json
resources:
StorageMgmtNetwork:
type: OS::Neutron::Net
properties:
admin_state_up: {get_param: StorageMgmtNetAdminStateUp}
name: {get_param: StorageMgmtNetName}
shared: {get_param: StorageMgmtNetShared}
value_specs: {get_param: StorageMgmtNetValueSpecs}
StorageMgmtSubnet:
type: OS::Neutron::Subnet
properties:
ip_version: 6
ipv6_address_mode: slaac
ipv6_ra_mode: slaac
cidr: {get_param: StorageMgmtNetCidr}
name: {get_param: StorageMgmtSubnetName}
network: {get_resource: StorageMgmtNetwork}
allocation_pools: {get_param: StorageMgmtAllocationPools}
outputs:
OS::stack_id:
description: Neutron storage management network
value: {get_resource: StorageMgmtNetwork}

61
network/storage_v6.yaml Normal file
View File

@ -0,0 +1,61 @@
heat_template_version: 2015-04-30
description: >
Storage network.
parameters:
# the defaults here work for static IP assignment (IPAM) only
StorageNetCidr:
# OpenStack uses the EUI-64 address format, which requires a /64 prefix
default: 'fd00:fd00:fd00:3000::/64'
description: Cidr for the storage network.
type: string
StorageNetValueSpecs:
default: {'provider:physical_network': 'storage', 'provider:network_type': 'flat'}
description: Value specs for the storage network.
type: json
StorageNetAdminStateUp:
default: false
description: This admin state of of the network.
type: boolean
StorageNetShared:
default: false
description: Whether this network is shared across all tenants.
type: boolean
StorageNetName:
default: storage
description: The name of the storage network.
type: string
StorageSubnetName:
default: storage_subnet
description: The name of the storage subnet in Neutron.
type: string
StorageAllocationPools:
default: [{'start': 'fd00:fd00:fd00:3000::10', 'end': 'fd00:fd00:fd00:3000:ffff:ffff:ffff:fffe'}]
description: Ip allocation pool range for the storage network.
type: json
resources:
StorageNetwork:
type: OS::Neutron::Net
properties:
admin_state_up: {get_param: StorageNetAdminStateUp}
name: {get_param: StorageNetName}
shared: {get_param: StorageNetShared}
value_specs: {get_param: StorageNetValueSpecs}
StorageSubnet:
type: OS::Neutron::Subnet
properties:
ip_version: 6
ipv6_address_mode: slaac
ipv6_ra_mode: slaac
cidr: {get_param: StorageNetCidr}
name: {get_param: StorageSubnetName}
network: {get_resource: StorageNetwork}
allocation_pools: {get_param: StorageAllocationPools}
outputs:
OS::stack_id:
description: Neutron storage network
value: {get_resource: StorageNetwork}

61
network/tenant_v6.yaml Normal file
View File

@ -0,0 +1,61 @@
heat_template_version: 2015-04-30
description: >
Tenant IPv6 network.
parameters:
# the defaults here work for static IP assignment (IPAM) only
TenantNetCidr:
# OpenStack uses the EUI-64 address format, which requires a /64 prefix
default: 'fd00:fd00:fd00:5000::/64'
description: Cidr for the tenant network.
type: string
TenantNetValueSpecs:
default: {'provider:physical_network': 'tenant', 'provider:network_type': 'flat'}
description: Value specs for the tenant network.
type: json
TenantNetAdminStateUp:
default: false
description: This admin state of of the network.
type: boolean
TenantNetShared:
default: false
description: Whether this network is shared across all tenants.
type: boolean
TenantNetName:
default: tenant
description: The name of the tenant network.
type: string
TenantSubnetName:
default: tenant_subnet
description: The name of the tenant subnet in Neutron.
type: string
TenantAllocationPools:
default: [{'start': 'fd00:fd00:fd00:5000::10', 'end': 'fd00:fd00:fd00:5000:ffff:ffff:ffff:fffe'}]
description: Ip allocation pool range for the tenant network.
type: json
resources:
TenantNetwork:
type: OS::Neutron::Net
properties:
admin_state_up: {get_param: TenantNetAdminStateUp}
name: {get_param: TenantNetName}
shared: {get_param: TenantNetShared}
value_specs: {get_param: TenantNetValueSpecs}
TenantSubnet:
type: OS::Neutron::Subnet
properties:
ip_version: 6
ipv6_address_mode: slaac
ipv6_ra_mode: slaac
cidr: {get_param: TenantNetCidr}
name: {get_param: TenantSubnetName}
network: {get_resource: TenantNetwork}
allocation_pools: {get_param: TenantAllocationPools}
outputs:
OS::stack_id:
description: Neutron tenant network
value: {get_resource: TenantNetwork}

View File

@ -249,6 +249,10 @@ parameters:
type: number
default: 1
description: The number of neutron dhcp agents to schedule per network
NovaIPv6:
default: false
description: Enable IPv6 features in Nova
type: boolean
NovaPassword:
description: The password for the nova service account, used by nova-api.
type: string
@ -261,6 +265,10 @@ parameters:
default: false
description: Should MongoDb journaling be disabled
type: boolean
MongoDbIPv6:
default: false
description: Enable IPv6 if MongoDB VIP is IPv6
type: boolean
PublicVirtualFixedIPs:
default: []
description: >
@ -857,20 +865,20 @@ resources:
type: OS::TripleO::EndpointMap
properties:
CloudName: {get_param: CloudName}
CeilometerApiVirtualIP: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, CeilometerApiNetwork]}]}
AodhApiVirtualIP: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, AodhApiNetwork]}]}
CinderApiVirtualIP: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, CinderApiNetwork]}]}
GlanceApiVirtualIP: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, GlanceApiNetwork]}]}
GlanceRegistryVirtualIP: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, GlanceRegistryNetwork]}]}
HeatApiVirtualIP: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, HeatApiNetwork]}]}
KeystoneAdminApiVirtualIP: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, KeystoneAdminApiNetwork]}]}
KeystonePublicApiVirtualIP: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, KeystonePublicApiNetwork]}]}
MysqlVirtualIP: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, MysqlNetwork]}]}
NeutronApiVirtualIP: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, NeutronApiNetwork]}]}
NovaApiVirtualIP: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, NovaApiNetwork]}]}
SaharaApiVirtualIP: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, SaharaApiNetwork]}]}
SwiftProxyVirtualIP: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, SwiftProxyNetwork]}]}
PublicVirtualIP: {get_attr: [VipMap, net_ip_map, external]}
CeilometerApiVirtualIP: {get_attr: [VipMap, net_ip_uri_map, {get_param: [ServiceNetMap, CeilometerApiNetwork]}]}
AodhApiVirtualIP: {get_attr: [VipMap, net_ip_uri_map, {get_param: [ServiceNetMap, AodhApiNetwork]}]}
CinderApiVirtualIP: {get_attr: [VipMap, net_ip_uri_map, {get_param: [ServiceNetMap, CinderApiNetwork]}]}
GlanceApiVirtualIP: {get_attr: [VipMap, net_ip_uri_map, {get_param: [ServiceNetMap, GlanceApiNetwork]}]}
GlanceRegistryVirtualIP: {get_attr: [VipMap, net_ip_uri_map, {get_param: [ServiceNetMap, GlanceRegistryNetwork]}]}
HeatApiVirtualIP: {get_attr: [VipMap, net_ip_uri_map, {get_param: [ServiceNetMap, HeatApiNetwork]}]}
KeystoneAdminApiVirtualIP: {get_attr: [VipMap, net_ip_uri_map, {get_param: [ServiceNetMap, KeystoneAdminApiNetwork]}]}
KeystonePublicApiVirtualIP: {get_attr: [VipMap, net_ip_uri_map, {get_param: [ServiceNetMap, KeystonePublicApiNetwork]}]}
MysqlVirtualIP: {get_attr: [VipMap, net_ip_uri_map, {get_param: [ServiceNetMap, MysqlNetwork]}]}
NeutronApiVirtualIP: {get_attr: [VipMap, net_ip_uri_map, {get_param: [ServiceNetMap, NeutronApiNetwork]}]}
NovaApiVirtualIP: {get_attr: [VipMap, net_ip_uri_map, {get_param: [ServiceNetMap, NovaApiNetwork]}]}
SaharaApiVirtualIP: {get_attr: [VipMap, net_ip_uri_map, {get_param: [ServiceNetMap, SaharaApiNetwork]}]}
SwiftProxyVirtualIP: {get_attr: [VipMap, net_ip_uri_map, {get_param: [ServiceNetMap, SwiftProxyNetwork]}]}
PublicVirtualIP: {get_attr: [VipMap, net_ip_uri_map, external]}
Controller:
type: OS::Heat::ResourceGroup
@ -965,9 +973,11 @@ resources:
NeutronDhcpAgentsPerNetwork: {get_param: NeutronDhcpAgentsPerNetwork}
NeutronNetworkType: {get_param: NeutronNetworkType}
NeutronTunnelTypes: {get_param: NeutronTunnelTypes}
NovaIPv6: {get_param: NovaIPv6}
NovaPassword: {get_param: NovaPassword}
NtpServer: {get_param: NtpServer}
MongoDbNoJournal: {get_param: MongoDbNoJournal}
MongoDbIPv6: {get_param: MongoDbIPv6}
PcsdPassword: {get_resource: PcsdPassword}
PublicVirtualInterface: {get_param: PublicVirtualInterface}
RabbitPassword: {get_param: RabbitPassword}
@ -980,6 +990,7 @@ resources:
SnmpdReadonlyUserName: {get_param: SnmpdReadonlyUserName}
SnmpdReadonlyUserPassword: {get_param: SnmpdReadonlyUserPassword}
RedisVirtualIP: {get_attr: [RedisVirtualIP, ip_address]}
RedisVirtualIPUri: {get_attr: [RedisVirtualIP, ip_address_uri]}
SwiftHashSuffix: {get_param: SwiftHashSuffix}
SwiftMountCheck: {get_param: SwiftMountCheck}
SwiftMinPartHours: {get_param: SwiftMinPartHours}
@ -995,11 +1006,13 @@ resources:
AodhApiVirtualIP: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, AodhApiNetwork]}]}
CinderApiVirtualIP: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, CinderApiNetwork]}]}
HeatApiVirtualIP: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, HeatApiNetwork]}]}
HeatApiVirtualIPUri: {get_attr: [VipMap, net_ip_uri_map, {get_param: [ServiceNetMap, HeatApiNetwork]}]}
GlanceApiVirtualIP: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, GlanceApiNetwork]}]}
GlanceRegistryVirtualIP: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, GlanceRegistryNetwork]}]}
NovaApiVirtualIP: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, NovaApiNetwork]}]}
SwiftProxyVirtualIP: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, SwiftProxyNetwork]}]}
MysqlVirtualIP: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, MysqlNetwork]}]}
MysqlVirtualIPUri: {get_attr: [VipMap, net_ip_uri_map, {get_param: [ServiceNetMap, MysqlNetwork]}]}
KeystoneAdminApiVirtualIP: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, KeystoneAdminApiNetwork]}]}
KeystonePublicApiVirtualIP: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, KeystonePublicApiNetwork]}]}
NeutronApiVirtualIP: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, NeutronApiNetwork]}]}
@ -1128,7 +1141,7 @@ resources:
'%stackname%': {get_param: 'OS::stack_name'}
ServiceNetMap: {get_param: ServiceNetMap}
EndpointMap: {get_attr: [EndpointMap, endpoint_map]}
MysqlVirtualIP: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, MysqlNetwork]}]}
MysqlVirtualIPUri: {get_attr: [VipMap, net_ip_uri_map, {get_param: [ServiceNetMap, MysqlNetwork]}]}
ExtraConfig: {get_param: ExtraConfig}
BlockStorageExtraConfig: {get_param: BlockStorageExtraConfig}
CloudDomain: {get_param: CloudDomain}
@ -1315,9 +1328,13 @@ resources:
properties:
ControlPlaneIp: {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]}
ExternalIp: {get_attr: [PublicVirtualIP, ip_address]}
ExternalIpUri: {get_attr: [PublicVirtualIP, ip_address_uri]}
InternalApiIp: {get_attr: [InternalApiVirtualIP, ip_address]}
InternalApiIpUri: {get_attr: [InternalApiVirtualIP, ip_address_uri]}
StorageIp: {get_attr: [StorageVirtualIP, ip_address]}
StorageIpUri: {get_attr: [StorageVirtualIP, ip_address_uri]}
StorageMgmtIp: {get_attr: [StorageMgmtVirtualIP, ip_address]}
StorageMgmtIpUri: {get_attr: [StorageMgmtVirtualIP, ip_address_uri]}
# No tenant or management VIP required
VipConfig:

View File

@ -177,11 +177,17 @@ resources:
properties:
ControlPlaneIp: {get_attr: [CephStorage, networks, ctlplane, 0]}
ExternalIp: {get_attr: [ExternalPort, ip_address]}
ExternalIpUri: {get_attr: [ExternalPort, ip_address_uri]}
InternalApiIp: {get_attr: [InternalApiPort, ip_address]}
InternalApiIpUri: {get_attr: [InternalApiPort, ip_address_uri]}
StorageIp: {get_attr: [StoragePort, ip_address]}
StorageIpUri: {get_attr: [StoragePort, ip_address_uri]}
StorageMgmtIp: {get_attr: [StorageMgmtPort, ip_address]}
StorageMgmtIpUri: {get_attr: [StorageMgmtPort, ip_address_uri]}
TenantIp: {get_attr: [TenantPort, ip_address]}
TenantIpUri: {get_attr: [TenantPort, ip_address_uri]}
ManagementIp: {get_attr: [ManagementPort, ip_address]}
ManagementIpUri: {get_attr: [ManagementPort, ip_address_uri]}
NetIpSubnetMap:
type: OS::TripleO::Network::Ports::NetIpSubnetMap

View File

@ -110,7 +110,7 @@ parameters:
GlanceApiVirtualIP:
type: string
default: ''
MysqlVirtualIP:
MysqlVirtualIPUri:
type: string
default: ''
NetworkDeploymentActions:
@ -229,11 +229,17 @@ resources:
properties:
ControlPlaneIp: {get_attr: [BlockStorage, networks, ctlplane, 0]}
ExternalIp: {get_attr: [ExternalPort, ip_address]}
ExternalIpUri: {get_attr: [ExternalPort, ip_address_uri]}
InternalApiIp: {get_attr: [InternalApiPort, ip_address]}
InternalApiIpUri: {get_attr: [InternalApiPort, ip_address_uri]}
StorageIp: {get_attr: [StoragePort, ip_address]}
StorageIpUri: {get_attr: [StoragePort, ip_address_uri]}
StorageMgmtIp: {get_attr: [StorageMgmtPort, ip_address]}
StorageMgmtIpUri: {get_attr: [StorageMgmtPort, ip_address_uri]}
TenantIp: {get_attr: [TenantPort, ip_address]}
TenantIpUri: {get_attr: [TenantPort, ip_address_uri]}
ManagementIp: {get_attr: [ManagementPort, ip_address]}
ManagementIpUri: {get_attr: [ManagementPort, ip_address_uri]}
NetworkDeployment:
type: OS::TripleO::SoftwareDeployment
@ -252,7 +258,7 @@ resources:
config: {get_resource: BlockStorageConfig}
input_values:
debug: {get_param: Debug}
cinder_dsn: {list_join: ['', ['mysql+pymysql://cinder:', {get_param: CinderPassword}, '@', {get_param: MysqlVirtualIP} , '/cinder']]}
cinder_dsn: {list_join: ['', ['mysql+pymysql://cinder:', {get_param: CinderPassword}, '@', {get_param: MysqlVirtualIPUri} , '/cinder']]}
snmpd_readonly_user_name: {get_param: SnmpdReadonlyUserName}
snmpd_readonly_user_password: {get_param: SnmpdReadonlyUserPassword}
cinder_lvm_loop_device_size:

View File

@ -409,11 +409,17 @@ resources:
properties:
ControlPlaneIp: {get_attr: [NovaCompute, networks, ctlplane, 0]}
ExternalIp: {get_attr: [ExternalPort, ip_address]}
ExternalIpUri: {get_attr: [ExternalPort, ip_address_uri]}
InternalApiIp: {get_attr: [InternalApiPort, ip_address]}
InternalApiIpUri: {get_attr: [InternalApiPort, ip_address_uri]}
StorageIp: {get_attr: [StoragePort, ip_address]}
StorageIpUri: {get_attr: [StoragePort, ip_address_uri]}
StorageMgmtIp: {get_attr: [StorageMgmtPort, ip_address]}
StorageMgmtIpUri: {get_attr: [StorageMgmtPort, ip_address_uri]}
TenantIp: {get_attr: [TenantPort, ip_address]}
TenantIpUri: {get_attr: [TenantPort, ip_address_uri]}
ManagementIp: {get_attr: [ManagementPort, ip_address]}
ManagementIpUri: {get_attr: [ManagementPort, ip_address_uri]}
NetworkConfig:
type: OS::TripleO::Compute::Net::SoftwareConfig

View File

@ -553,6 +553,10 @@ parameters:
description: |
Whether to create cron job for purging soft deleted rows in Nova database.
type: boolean
NovaIPv6:
default: false
description: Enable IPv6 features in Nova
type: boolean
NovaPassword:
description: The password for the nova service and db account, used by nova-api.
type: string
@ -565,6 +569,10 @@ parameters:
default: false
description: Should MongoDb journaling be disabled
type: boolean
MongoDbIPv6:
default: false
description: Enable IPv6 if Mongo DB VIP is IPv6
type: boolean
NtpServer:
default: ''
description: Comma-separated list of ntp servers
@ -612,6 +620,10 @@ parameters:
RedisVirtualIP:
type: string
default: '' # Has to be here because of the ignored empty value bug
RedisVirtualIPUri:
type: string
default: '' # Has to be here because of the ignored empty value bug
description: An IP address which is wrapped in brackets in case of IPv6
SnmpdReadonlyUserName:
default: ro_snmp_user
description: The user name for SNMPd with readonly rights running on all Overcloud nodes
@ -667,6 +679,9 @@ parameters:
HeatApiVirtualIP:
type: string
default: ''
HeatApiVirtualIPUri:
type: string
default: ''
GlanceApiVirtualIP:
type: string
default: ''
@ -676,6 +691,9 @@ parameters:
MysqlVirtualIP:
type: string
default: ''
MysqlVirtualIPUri:
type: string
default: ''
KeystoneAdminApiVirtualIP:
type: string
default: ''
@ -832,11 +850,17 @@ resources:
properties:
ControlPlaneIp: {get_attr: [Controller, networks, ctlplane, 0]}
ExternalIp: {get_attr: [ExternalPort, ip_address]}
ExternalIpUri: {get_attr: [ExternalPort, ip_address_uri]}
InternalApiIp: {get_attr: [InternalApiPort, ip_address]}
InternalApiIpUri: {get_attr: [InternalApiPort, ip_address_uri]}
StorageIp: {get_attr: [StoragePort, ip_address]}
StorageIpUri: {get_attr: [StoragePort, ip_address_uri]}
StorageMgmtIp: {get_attr: [StorageMgmtPort, ip_address]}
StorageMgmtIpUri: {get_attr: [StorageMgmtPort, ip_address_uri]}
TenantIp: {get_attr: [TenantPort, ip_address]}
TenantIpUri: {get_attr: [TenantPort, ip_address_uri]}
ManagementIp: {get_attr: [ManagementPort, ip_address]}
ManagementIpUri: {get_attr: [ManagementPort, ip_address_uri]}
NetIpSubnetMap:
type: OS::TripleO::Network::Ports::NetIpSubnetMap
@ -912,19 +936,19 @@ resources:
list_join:
- ''
- - 'http://'
- {get_param: HeatApiVirtualIP}
- {get_param: HeatApiVirtualIPUri}
- ':8003'
heat.metadata_server_url:
list_join:
- ''
- - 'http://'
- {get_param: HeatApiVirtualIP}
- {get_param: HeatApiVirtualIPUri}
- ':8000'
heat.waitcondition_server_url:
list_join:
- ''
- - 'http://'
- {get_param: HeatApiVirtualIP}
- {get_param: HeatApiVirtualIPUri}
- ':8000/v1/waitcondition'
heat_auth_encryption_key: {get_param: HeatAuthEncryptionKey}
heat_enable_db_purge: {get_param: HeatEnableDBPurge}
@ -955,7 +979,7 @@ resources:
- - 'mysql+pymysql://cinder:'
- {get_param: CinderPassword}
- '@'
- {get_param: MysqlVirtualIP}
- {get_param: MysqlVirtualIPUri}
- '/cinder'
glance_port: {get_param: [EndpointMap, GlanceInternal, port]}
glance_password: {get_param: GlancePassword}
@ -972,7 +996,7 @@ resources:
- - 'mysql+pymysql://glance:'
- {get_param: GlancePassword}
- '@'
- {get_param: MysqlVirtualIP}
- {get_param: MysqlVirtualIPUri}
- '/glance'
heat_password: {get_param: HeatPassword}
heat_stack_domain_admin_password: {get_param: HeatStackDomainAdminPassword}
@ -982,7 +1006,7 @@ resources:
- - 'mysql+pymysql://heat:'
- {get_param: HeatPassword}
- '@'
- {get_param: MysqlVirtualIP}
- {get_param: MysqlVirtualIPUri}
- '/heat'
keystone_ca_certificate: {get_param: KeystoneCACertificate}
keystone_signing_key: {get_param: KeystoneSigningKey}
@ -998,7 +1022,7 @@ resources:
- - 'mysql+pymysql://keystone:'
- {get_param: AdminToken}
- '@'
- {get_param: MysqlVirtualIP}
- {get_param: MysqlVirtualIPUri}
- '/keystone'
keystone_identity_uri: { get_param: [EndpointMap, KeystoneAdmin, uri_no_suffix] }
keystone_auth_uri: {get_param: [EndpointMap, KeystoneInternal, uri] }
@ -1105,7 +1129,7 @@ resources:
- - 'mysql+pymysql://neutron:'
- {get_param: NeutronPassword}
- '@'
- {get_param: MysqlVirtualIP}
- {get_param: MysqlVirtualIPUri}
- '/ovs_neutron?charset=utf8'
neutron_internal_url: { get_param: [ EndpointMap, NeutronInternal, uri ] }
neutron_public_url: { get_param: [ EndpointMap, NeutronPublic, uri ] }
@ -1120,7 +1144,7 @@ resources:
list_join:
- ''
- - 'redis://'
- {get_param: RedisVirtualIP}
- {get_param: RedisVirtualIPUri}
- ':6379'
ceilometer_dsn:
list_join:
@ -1128,11 +1152,12 @@ resources:
- - 'mysql+pymysql://ceilometer:'
- {get_param: CeilometerPassword}
- '@'
- {get_param: MysqlVirtualIP}
- {get_param: MysqlVirtualIPUri}
- '/ceilometer'
snmpd_readonly_user_name: {get_param: SnmpdReadonlyUserName}
snmpd_readonly_user_password: {get_param: SnmpdReadonlyUserPassword}
nova_enable_db_purge: {get_param: NovaEnableDBPurge}
nova_ipv6: {get_param: NovaIPv6}
nova_password: {get_param: NovaPassword}
nova_dsn:
list_join:
@ -1140,7 +1165,7 @@ resources:
- - 'mysql+pymysql://nova:'
- {get_param: NovaPassword}
- '@'
- {get_param: MysqlVirtualIP}
- {get_param: MysqlVirtualIPUri}
- '/nova'
nova_api_dsn:
list_join:
@ -1160,6 +1185,7 @@ resources:
rabbit_client_use_ssl: {get_param: RabbitClientUseSSL}
rabbit_client_port: {get_param: RabbitClientPort}
mongodb_no_journal: {get_param: MongoDbNoJournal}
mongodb_ipv6: {get_param: MongoDbIPv6}
# We need to force this into quotes or hiera will return integer causing
# the puppet module validation regexp to fail.
# Remove when: https://github.com/puppetlabs/puppetlabs-rabbitmq/pull/401
@ -1412,6 +1438,7 @@ resources:
# MongoDB
mongodb::server::bind_ip: {get_input: mongo_db_network}
mongodb::server::nojournal: {get_input: mongodb_no_journal}
mongodb::server::ipv6: {get_input: mongodb_ipv6}
# MySQL
admin_password: {get_input: admin_password}
enable_galera: {get_input: enable_galera}
@ -1532,6 +1559,7 @@ resources:
nova::rabbit_port: {get_input: rabbit_client_port}
nova::upgrade_level_compute: {get_input: upgrade_level_nova_compute}
nova::debug: {get_input: debug}
nova::use_ipv6: {get_input: nova_ipv6}
nova::api::auth_uri: {get_input: keystone_auth_uri}
nova::api::identity_uri: {get_input: keystone_identity_uri}
nova::api::api_bind_address: {get_input: nova_api_network}

View File

@ -198,11 +198,17 @@ resources:
properties:
ControlPlaneIp: {get_attr: [SwiftStorage, networks, ctlplane, 0]}
ExternalIp: {get_attr: [ExternalPort, ip_address]}
ExternalIpUri: {get_attr: [ExternalPort, ip_address_uri]}
InternalApiIp: {get_attr: [InternalApiPort, ip_address]}
InternalApiIpUri: {get_attr: [InternalApiPort, ip_address_uri]}
StorageIp: {get_attr: [StoragePort, ip_address]}
StorageIpUri: {get_attr: [StoragePort, ip_address_uri]}
StorageMgmtIp: {get_attr: [StorageMgmtPort, ip_address]}
StorageMgmtIpUri: {get_attr: [StorageMgmtPort, ip_address_uri]}
TenantIp: {get_attr: [TenantPort, ip_address]}
TenantIpUri: {get_attr: [TenantPort, ip_address_uri]}
ManagementIp: {get_attr: [ManagementPort, ip_address]}
ManagementIpUri: {get_attr: [ManagementPort, ip_address_uri]}
NetworkDeployment:
type: OS::TripleO::SoftwareDeployment