Add virtual IPs for split out networks
This patch adds VIPs for the internal_api, storage, and storage management networks. For puppet these are persisted into a local vip-config hieradata file which is then used by puppet-tripleo's loadbalancer module to apply per-service VIP settings. Change-Id: I909c3bdc9d17a8e15351f4797287769e3f76c849
This commit is contained in:
parent
a3a88cd3c0
commit
36a2aa0dd2
@ -26,6 +26,8 @@ resource_registry:
|
||||
|
||||
# TripleO overcloud networks
|
||||
OS::TripleO::Network: network/networks.yaml
|
||||
OS::TripleO::VipConfig: puppet/vip-config.yaml
|
||||
|
||||
|
||||
OS::TripleO::Network::External: network/noop.yaml
|
||||
OS::TripleO::Network::InternalApi: network/noop.yaml
|
||||
|
@ -24,6 +24,7 @@ resource_registry:
|
||||
|
||||
# TripleO overcloud networks
|
||||
OS::TripleO::Network: network/networks.yaml
|
||||
OS::TripleO::VipConfig: vip-config.yaml
|
||||
|
||||
OS::TripleO::Network::External: network/noop.yaml
|
||||
OS::TripleO::Network::InternalApi: network/noop.yaml
|
||||
|
@ -680,17 +680,17 @@ resources:
|
||||
Debug: {get_param: Debug}
|
||||
ExtraConfig: {get_param: ExtraConfig}
|
||||
Flavor: {get_param: OvercloudComputeFlavor}
|
||||
GlanceHost: {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]}
|
||||
GlanceHost: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, GlanceApiNetwork]}]}
|
||||
GlancePort: {get_param: GlancePort}
|
||||
GlanceProtocol: {get_param: GlanceProtocol}
|
||||
Image: {get_param: NovaImage}
|
||||
ImageUpdatePolicy: {get_param: ImageUpdatePolicy}
|
||||
KeyName: {get_param: KeyName}
|
||||
KeystoneHost: {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]}
|
||||
KeystoneHost: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, KeystonePublicApiNetwork]}]}
|
||||
NeutronBridgeMappings: {get_param: NeutronBridgeMappings}
|
||||
NeutronEnableTunnelling: {get_param: NeutronEnableTunnelling}
|
||||
NeutronFlatNetworks: {get_param: NeutronFlatNetworks}
|
||||
NeutronHost: {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]}
|
||||
NeutronHost: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, NeutronApiNetwork]}]}
|
||||
NeutronNetworkType: {get_param: NeutronNetworkType}
|
||||
NeutronTunnelTypes: {get_param: NeutronTunnelTypes}
|
||||
NeutronNetworkVLANRanges: {get_param: NeutronNetworkVLANRanges}
|
||||
@ -705,7 +705,7 @@ resources:
|
||||
# L3 HA and Failover is not relevant for Computes, should be removed
|
||||
NeutronAllowL3AgentFailover: {get_param: NeutronAllowL3AgentFailover}
|
||||
NeutronL3HA: {get_param: NeutronL3HA}
|
||||
NovaApiHost: {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]}
|
||||
NovaApiHost: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, NovaApiNetwork]}]}
|
||||
NovaComputeDriver: {get_param: NovaComputeDriver}
|
||||
NovaComputeExtraConfig: {get_param: NovaComputeExtraConfig}
|
||||
NovaComputeLibvirtType: {get_param: NovaComputeLibvirtType}
|
||||
@ -713,7 +713,7 @@ resources:
|
||||
NovaPublicIP: {get_attr: [PublicVirtualIP, fixed_ips, 0, ip_address]}
|
||||
NovaPassword: {get_param: NovaPassword}
|
||||
NtpServer: {get_param: NtpServer}
|
||||
RabbitHost: {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]}
|
||||
RabbitHost: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, RabbitMqNetwork]}]}
|
||||
RabbitPassword: {get_param: RabbitPassword}
|
||||
RabbitUserName: {get_param: RabbitUserName}
|
||||
RabbitClientUseSSL: {get_param: RabbitClientUseSSL}
|
||||
@ -843,6 +843,7 @@ resources:
|
||||
fixed_ips: {get_param: ControlFixedIPs}
|
||||
replacement_policy: AUTO
|
||||
|
||||
# same as external
|
||||
PublicVirtualIP:
|
||||
type: OS::Neutron::Port
|
||||
depends_on: Networks
|
||||
@ -852,6 +853,66 @@ resources:
|
||||
fixed_ips: {get_param: PublicVirtualFixedIPs}
|
||||
replacement_policy: AUTO
|
||||
|
||||
InternalApiVirtualIP:
|
||||
depends_on: Networks
|
||||
type: OS::TripleO::Controller::Ports::InternalApiPort
|
||||
properties:
|
||||
ControlPlaneIP: {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]}
|
||||
PortName: internal_api_virtual_ip
|
||||
|
||||
StorageVirtualIP:
|
||||
depends_on: Networks
|
||||
type: OS::TripleO::Controller::Ports::StoragePort
|
||||
properties:
|
||||
ControlPlaneIP: {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]}
|
||||
PortName: storage_virtual_ip
|
||||
|
||||
StorageMgmtVirtualIP:
|
||||
depends_on: Networks
|
||||
type: OS::TripleO::Controller::Ports::StorageMgmtPort
|
||||
properties:
|
||||
ControlPlaneIP: {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]}
|
||||
PortName: storage_management_virtual_ip
|
||||
|
||||
VipMap:
|
||||
type: OS::TripleO::Network::Ports::NetIpMap
|
||||
properties:
|
||||
ExternalIp: {get_attr: [PublicVirtualIP, fixed_ips, 0, ip_address]}
|
||||
InternalApiIp: {get_attr: [InternalApiVirtualIP, ip_address]}
|
||||
StorageIp: {get_attr: [StorageVirtualIP, ip_address]}
|
||||
StorageMgmtIp: {get_attr: [StorageMgmtVirtualIP, ip_address]}
|
||||
# No tenant VIP required
|
||||
|
||||
VipConfig:
|
||||
type: OS::TripleO::VipConfig
|
||||
|
||||
VipDeployment:
|
||||
type: OS::Heat::StructuredDeployments
|
||||
properties:
|
||||
config: {get_resource: VipConfig}
|
||||
servers: {get_attr: [Controller, attributes, nova_server_resource]}
|
||||
input_values:
|
||||
# service VIP mappings
|
||||
keystone_admin_api_vip: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, KeystoneAdminApiNetwork]}]}
|
||||
keystone_public_api_vip: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, KeystonePublicApiNetwork]}]}
|
||||
neutron_api_vip: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, NeutronApiNetwork]}]}
|
||||
cinder_api_vip: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, CinderApiNetwork]}]}
|
||||
glance_api_vip: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, GlanceApiNetwork]}]}
|
||||
glance_registry_vip: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, GlanceRegistryNetwork]}]}
|
||||
swift_proxy_vip: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, SwiftProxyNetwork]}]}
|
||||
nova_api_vip: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, NovaApiNetwork]}]}
|
||||
nova_metadata_vip: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, NovaMetadataNetwork]}]}
|
||||
ceilometer_api_vip: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, CeilometerApiNetwork]}]}
|
||||
heat_api_vip: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, HeatApiNetwork]}]}
|
||||
horizon_vip: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, HorizonNetwork]}]}
|
||||
redis_vip: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, RedisNetwork]}]}
|
||||
mysql_vip: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, MysqlNetwork]}]}
|
||||
rabbit_vip: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, RabbitMqNetwork]}]}
|
||||
# direct configuration of Virtual IPs for each network
|
||||
internal_api_virtual_ip: {get_attr: [InternalApiVirtualIP, ip_address]}
|
||||
storage_virtual_ip: {get_attr: [StorageVirtualIP, ip_address]}
|
||||
storage_mgmt_virtual_ip: {get_attr: [StorageMgmtVirtualIP, ip_address]}
|
||||
|
||||
ControllerBootstrapNodeConfig:
|
||||
type: OS::TripleO::BootstrapNode::SoftwareConfig
|
||||
properties:
|
||||
@ -1003,5 +1064,5 @@ outputs:
|
||||
list_join:
|
||||
- ''
|
||||
- - http://
|
||||
- {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]}
|
||||
- {get_attr: [PublicVirtualIP, fixed_ips, 0, ip_address]}
|
||||
- :5000/v2.0/
|
||||
|
38
puppet/vip-config.yaml
Normal file
38
puppet/vip-config.yaml
Normal file
@ -0,0 +1,38 @@
|
||||
heat_template_version: 2015-04-30
|
||||
|
||||
description: >
|
||||
Configure hieradata for service -> virtual IP mappings.
|
||||
|
||||
resources:
|
||||
VipConfigImpl:
|
||||
type: OS::Heat::StructuredConfig
|
||||
properties:
|
||||
group: os-apply-config
|
||||
config:
|
||||
hiera:
|
||||
datafiles:
|
||||
vip_data:
|
||||
mapped_data:
|
||||
keystone_admin_api_vip: {get_input: keystone_admin_api_vip}
|
||||
keystone_public_api_vip: {get_input: keystone_public_api_vip}
|
||||
neutron_api_vip: {get_input: neutron_api_vip}
|
||||
cinder_api_vip: {get_input: cinder_api_vip}
|
||||
glance_api_vip: {get_input: glance_api_vip}
|
||||
glance_registry_vip: {get_input: glance_registry_vip}
|
||||
swift_proxy_vip: {get_input: swift_proxy_vip}
|
||||
nova_api_vip: {get_input: nova_api_vip}
|
||||
nova_metadata_vip: {get_input: nova_metadata_vip}
|
||||
ceilometer_api_vip: {get_input: ceilometer_api_vip}
|
||||
heat_api_vip: {get_input: heat_api_vip}
|
||||
horizon_vip: {get_input: horizon_vip}
|
||||
redis_vip: {get_input: redis_vip}
|
||||
mysql_vip: {get_input: mysql_vip}
|
||||
mysql_vip: {get_input: mysql_vip}
|
||||
tripleo::loadbalancer::internal_api_virtual_ip: {get_input: internal_api_virtual_ip}
|
||||
tripleo::loadbalancer::storage_virtual_ip: {get_input: storage_virtual_ip}
|
||||
tripleo::loadbalancer::storage_mgmt_virtual_ip: {get_input: storage_mgmt_virtual_ip}
|
||||
|
||||
outputs:
|
||||
OS::stack_id:
|
||||
description: The VipConfigImpl resource.
|
||||
value: {get_resource: VipConfigImpl}
|
16
vip-config.yaml
Normal file
16
vip-config.yaml
Normal file
@ -0,0 +1,16 @@
|
||||
heat_template_version: 2015-04-30
|
||||
|
||||
description: >
|
||||
Configure hieradata for service -> virtual IP mappings.
|
||||
|
||||
resources:
|
||||
VipConfigImpl:
|
||||
type: OS::Heat::StructuredConfig
|
||||
properties:
|
||||
group: os-apply-config
|
||||
# by default does nothing
|
||||
|
||||
outputs:
|
||||
OS::stack_id:
|
||||
description: The VipConfigImpl resource.
|
||||
value: {get_resource: VipConfigImpl}
|
Loading…
x
Reference in New Issue
Block a user