default: 'br-ex'
description: Interface where virtual ip will be assigned.
type: string
- CorosyncAuthKey:
- description: Auth encryption key for corosync
- type: string
Debug:
default: ''
description: Set to True to enable debugging on all services.
default: true
description: Whether to use Galera instead of regular MariaDB.
type: boolean
+ EnablePacemaker:
+ default: true
+ description: If enabled services will be monitored by Pacemaker; it
+ will manage VIPs as well, in place of Keepalived.
+ type: boolean
ExtraConfig:
default: {}
description: |
NtpServer:
type: string
default: ''
+ PcsdPassword:
+ type: string
+ description: The password for the 'pcsd' user.
PublicVirtualInterface:
default: 'br-ex'
description: >
default: true
description: Whether to use Galera instead of regular MariaDB.
type: boolean
+ EnablePacemaker:
+ default: true
+ description: If enabled services will be monitored by Pacemaker; it
+ will manage VIPs as well, in place of Keepalived.
+ type: boolean
ExtraConfig:
default: {}
description: |
HeatAuthEncryptionKey:
type: OS::Heat::RandomString
- CorosyncAuthKey:
+ PcsdPassword:
type: OS::Heat::RandomString
properties:
- length: 128
+ length: 16
Controller:
type: OS::Heat::ResourceGroup
CloudName: {get_param: CloudName}
ControlVirtualInterface: {get_param: ControlVirtualInterface}
ControllerExtraConfig: {get_param: controllerExtraConfig}
- CorosyncAuthKey: {get_resource: CorosyncAuthKey}
Debug: {get_param: Debug}
EnableGalera: {get_param: EnableGalera}
+ EnablePacemaker: {get_param: EnablePacemaker}
ExtraConfig: {get_param: ExtraConfig}
Flavor: {get_param: OvercloudControlFlavor}
GlancePort: {get_param: GlancePort}
NeutronTunnelTypes: {get_param: NeutronTunnelTypes}
NovaPassword: {get_param: NovaPassword}
NtpServer: {get_param: NtpServer}
+ PcsdPassword: {get_resource: PcsdPassword}
PublicVirtualInterface: {get_param: PublicVirtualInterface}
RabbitPassword: {get_param: RabbitPassword}
RabbitUserName: {get_param: RabbitUserName}
default: 'br-ex'
description: Interface where virtual ip will be assigned.
type: string
- CorosyncAuthKey:
- description: Auth encryption key for corosync
- type: string
Debug:
default: ''
description: Set to True to enable debugging on all services.
default: true
description: Whether to use Galera instead of regular MariaDB.
type: boolean
+ EnablePacemaker:
+ default: true
+ description: If enabled services will be monitored by Pacemaker; it
+ will manage VIPs as well, in place of Keepalived.
+ type: boolean
ExtraConfig:
default: {}
description: |
NtpServer:
type: string
default: ''
+ PcsdPassword:
+ type: string
+ description: The password for the 'pcsd' user.
PublicVirtualInterface:
default: 'br-ex'
description: >
bootstack_nodeid: {get_attr: [Controller, name]}
controller_host: {get_attr: [Controller, networks, ctlplane, 0]}
controller_virtual_ip: {get_param: VirtualIP}
- corosync_auth_key: {get_param: CorosyncAuthKey}
neutron_enable_tunneling: {get_param: NeutronEnableTunnelling}
heat.watch_server_url:
list_join:
- {get_param: VirtualIP}
- ':5000/v2.0/'
enable_galera: {get_param: EnableGalera}
+ enable_pacemaker: {get_param: EnablePacemaker}
mysql_innodb_buffer_pool_size: {get_param: MysqlInnodbBufferPoolSize}
mysql_root_password: {get_param: MysqlRootPassword}
mysql_cluster_name:
- - 'mysql://nova:unset@'
- {get_param: VirtualIP}
- '/nova'
+ pcsd_password: {get_param: PcsdPassword}
rabbit_hosts:
str_replace:
template: '["host"]'
controller_host: {get_input: controller_host} #local-ipv4
# Pacemaker
- corosync::authkey: {get_input: corosync_auth_key}
- corosync::bind_address: {get_input: controller_host}
+ enable_pacemaker: {get_input: enable_pacemaker}
+ hacluster_pwd: {get_input: pcsd_password}
# Swift
swift::proxy::proxy_local_net_ip: {get_input: controller_host}
heat::engine::trusts_delegated_roles: []
# pacemaker
-corosync::authkey_source: 'string'
-corosync::multicast_address: broadcast
+pacemaker::corosync::cluster_name: 'tripleo_cluster'
+pacemaker::corosync::manage_fw: false
mysql::server::manage_config_file: true
if hiera('step') >= 1 {
$controller_node_ips = split(hiera('controller_node_ips'), ',')
+ $enable_pacemaker = str2bool(hiera('enable_pacemaker'))
+ $enable_keepalived = !$enable_pacemaker
+
class { '::tripleo::loadbalancer' :
controller_hosts => $controller_node_ips,
}
- class { '::corosync':
- quorum_members => $controller_node_ips,
- }
- corosync::service { 'pacemaker':
- version => '0',
- }
- service { 'pacemaker':
- ensure => running,
- require => Service['corosync'],
- }
- cs_property { 'stonith-enabled':
- value => 'false',
- }
- cs_property { 'no-quorum-policy':
- value => 'ignore',
+ if $enable_pacemaker {
+ $pacemaker_cluster_members = regsubst(hiera('controller_node_ips'), ',', ' ', 'G')
+ if $::hostname == downcase(hiera('bootstrap_nodeid')) {
+ $pacemaker_master = true
+ } else {
+ $pacemaker_master = false
+ }
+ user { 'hacluster':
+ ensure => present,
+ } ->
+ class { '::pacemaker':
+ hacluster_pwd => hiera('hacluster_pwd'),
+ } ->
+ class { '::pacemaker::corosync':
+ cluster_members => $pacemaker_cluster_members,
+ setup_cluster => $pacemaker_master,
+ }
+ class { '::pacemaker::stonith':
+ disable => true,
+ }
}
}