Merge "Remove Redis VirtualIP from params and build it from Neutron::Port"

This commit is contained in:
Jenkins 2015-06-17 22:11:27 +00:00 committed by Gerrit Code Review
commit 19c9618cad
7 changed files with 116 additions and 7 deletions

View File

@ -0,0 +1,46 @@
heat_template_version: 2015-04-30
description: >
Creates a port for a VIP on the undercloud ctlplane network.
parameters:
NetworkName:
description: # Here for compatibility with isolated networks
default: ctlplane
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
type: string
ControlPlaneNetwork:
description: The name of the undercloud Neutron control plane
default: ctlplane
type: string
resources:
VipPort:
type: OS::Neutron::Port
properties:
network: {get_param: ControlPlaneNetwork}
name: {get_param: PortName}
replacement_policy: AUTO
outputs:
ip_address:
description: Virtual IP network IP
value: {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 internal API network 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

@ -7,10 +7,18 @@ parameters:
ControlPlaneIP:
description: IP address on the control plane
type: string
ControlPlaneNetwork:
description: Name of the control plane network
default: ctlplane
type: string
PortName:
description: Name of the port
default: ''
type: string
NetworkName:
description: # Here for compatability with vip.yaml
default: ''
type: string
ControlPlaneSubnetCidr: # Override this via parameter_defaults
default: '24'
description: The subnet CIDR of the control plane network.

41
network/ports/vip.yaml Normal file
View File

@ -0,0 +1,41 @@
heat_template_version: 2015-04-30
description: >
Creates a port for a VIP on the isolated network NetworkName.
parameters:
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
type: string
resources:
VipPort:
type: OS::Neutron::Port
properties:
network: {get_param: NetworkName}
name: {get_param: PortName}
replacement_policy: AUTO
outputs:
ip_address:
description: Virtual IP network IP
value: {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 internal API network 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

@ -68,5 +68,8 @@ resource_registry:
# Cinder backend config for the controller role
OS::TripleO::Controller::CinderBackend: extraconfig/controller/noop.yaml
# Port assignments for service virtual IPs for the controller role
OS::TripleO::Controller::Ports::RedisVipPort: network/ports/ctlplane_vip.yaml
parameter_defaults:
EnablePackageInstall: false

View File

@ -61,3 +61,6 @@ resource_registry:
OS::TripleO::BlockStorage::Ports::InternalApiPort: network/ports/noop.yaml
OS::TripleO::BlockStorage::Ports::StoragePort: network/ports/noop.yaml
OS::TripleO::BlockStorage::Ports::StorageMgmtPort: network/ports/noop.yaml
# Port assignments for service virtual IPs for the controller role
OS::TripleO::Controller::Ports::RedisVipPort: network/ports/noop.yaml

View File

@ -394,9 +394,6 @@ parameters:
Specifies the interface where the public-facing virtual ip will be assigned.
This should be int_public when a VLAN is being used.
type: string
RedisVirtualIP:
type: string
default: '' # Has to be here because of the ignored empty value bug
SSLCertificate:
default: ''
description: If set, the contents of an SSL certificate .crt file for encrypting SSL endpoints.
@ -688,7 +685,7 @@ resources:
RabbitClientPort: {get_param: RabbitClientPort}
SnmpdReadonlyUserName: {get_param: SnmpdReadonlyUserName}
SnmpdReadonlyUserPassword: {get_param: SnmpdReadonlyUserPassword}
RedisVirtualIP: {get_param: RedisVirtualIP}
RedisVirtualIP: {get_attr: [RedisVirtualIP, ip_address]}
SSLCertificate: {get_param: SSLCertificate}
SSLKey: {get_param: SSLKey}
SSLCACertificate: {get_param: SSLCACertificate}
@ -917,6 +914,15 @@ resources:
fixed_ips: {get_param: ControlFixedIPs}
replacement_policy: AUTO
RedisVirtualIP:
depends_on: Networks
type: OS::TripleO::Controller::Ports::RedisVipPort
properties:
ControlPlaneIP: {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]}
ControlPlaneNetwork: {get_param: NeutronControlPlaneID}
PortName: redis_virtual_ip
NetworkName: {get_param: [ServiceNetMap, RedisNetwork]}
# same as external
PublicVirtualIP:
type: OS::Neutron::Port
@ -979,7 +985,7 @@ resources:
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]}]}
redis_vip: {get_attr: [RedisVirtualIP, ip_address]}
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

View File

@ -254,8 +254,10 @@ if hiera('step') >= 2 {
require => Class['::redis'],
}
$redis_vip = hiera('redis_vip')
pacemaker::resource::ip { 'vip-redis':
ip_address => $redis_vip,
if $redis_vip and $redis_vip != $control_vip {
pacemaker::resource::ip { 'vip-redis':
ip_address => $redis_vip,
}
}
pacemaker::constraint::base { 'redis-master-then-vip-redis':
constraint_type => 'order',