Add IPv6 Support to Isolated Networks
This change adds a new set of network templates with IPv6 subnets that can be used instead of the existing IPv4 networks. Each network can use either the IPv4 or IPv6 template, and the Neutron subnet will be created with the specified IP version. The default addresses used for the IPv6 networks use the fd00::/8 prefix for the internal isolated networks (this range is reserved for private use similar to 10.0.0.0/8), and 2001:db8:fd00:1000::/64 is used as an example default for the External network (2001:db8::/32 are the documentation addresses [RFC3849]), but this would ordinarily be a globally addressable subnet. These parameters may be overridden in an environment file. This change will require updates to the OpenStack Puppet Modules to support IPv6 addresses in some of the hieradata values. Many of the OPM modules already have IPv6 support to support IPv6 deployments in Packstack, but some OPM packages that apply only to Instack/TripleO deployments need to be updated. IPv6 addresses used in URLs need to be surrounded by brackets in order to differentiate IP address from port number. This change adds a new output to the network/ports resources for ip_address_uri, which is an IP address with brackets in the case of IPv6, and a raw IP address without brackets for IPv4 ports. This change also updates some URLs which are constructed in Heat. This has been tested and problems were found with Puppet not accepting IPv6 addresses. This is addressed in the latest Puppet. Additional changes were required to make this work with Ceph. IPv6 tunnel endpoints with Open vSwitch are not yet supported (although support is coming soon), so this review leaves the Tenant network as an isolated IPv4 network for the time being. Change-Id: Ie7a742bdf1db533edda2998a53d28528f80ef8e2
This commit is contained in:
parent
07e99fef9b
commit
321e605a0a
49
environments/network-isolation-v6.yaml
Normal file
49
environments/network-isolation-v6.yaml
Normal 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
|
@ -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': {
|
||||
|
@ -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
61
network/external_v6.yaml
Normal 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}
|
61
network/internal_api_v6.yaml
Normal file
61
network/internal_api_v6.yaml
Normal 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}
|
@ -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:
|
||||
|
@ -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:
|
||||
|
@ -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:
|
||||
|
68
network/ports/external_v6.yaml
Normal file
68
network/ports/external_v6.yaml
Normal 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]}
|
@ -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}]}
|
||||
|
@ -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:
|
||||
|
@ -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:
|
||||
|
63
network/ports/internal_api_v6.yaml
Normal file
63
network/ports/internal_api_v6.yaml
Normal 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]}
|
@ -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:
|
||||
|
@ -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:
|
||||
|
54
network/ports/management_v6.yaml
Normal file
54
network/ports/management_v6.yaml
Normal 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]}
|
@ -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}
|
||||
|
@ -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}
|
||||
|
@ -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:
|
||||
|
@ -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:
|
||||
|
@ -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:
|
||||
|
@ -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:
|
||||
|
@ -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:
|
||||
|
63
network/ports/storage_mgmt_v6.yaml
Normal file
63
network/ports/storage_mgmt_v6.yaml
Normal 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]}
|
63
network/ports/storage_v6.yaml
Normal file
63
network/ports/storage_v6.yaml
Normal 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]}
|
@ -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:
|
||||
|
@ -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:
|
||||
|
63
network/ports/tenant_v6.yaml
Normal file
63
network/ports/tenant_v6.yaml
Normal 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]}
|
@ -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
65
network/ports/vip_v6.yaml
Normal 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]}
|
61
network/storage_mgmt_v6.yaml
Normal file
61
network/storage_mgmt_v6.yaml
Normal 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
61
network/storage_v6.yaml
Normal 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
61
network/tenant_v6.yaml
Normal 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}
|
@ -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:
|
||||
|
@ -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
|
||||
|
@ -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:
|
||||
|
@ -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
|
||||
|
@ -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}
|
||||
|
@ -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
|
||||
|
Loading…
x
Reference in New Issue
Block a user