50 lines
1.3 KiB
Puppet
50 lines
1.3 KiB
Puppet
notice('MODULAR: cluster.pp')
|
|
|
|
if !(hiera('role') in hiera('corosync_roles')) {
|
|
fail('The node role is not in corosync roles')
|
|
}
|
|
|
|
prepare_network_config(hiera_hash('network_scheme'))
|
|
|
|
$corosync_nodes = corosync_nodes(
|
|
get_nodes_hash_by_roles(
|
|
hiera_hash('network_metadata'),
|
|
hiera('corosync_roles')
|
|
),
|
|
'mgmt/corosync'
|
|
)
|
|
|
|
class { 'cluster':
|
|
internal_address => get_network_role_property('mgmt/corosync', 'ipaddr'),
|
|
corosync_nodes => $corosync_nodes,
|
|
}
|
|
|
|
pcmk_nodes { 'pacemaker' :
|
|
nodes => $corosync_nodes,
|
|
add_pacemaker_nodes => false,
|
|
}
|
|
|
|
Service <| title == 'corosync' |> {
|
|
subscribe => File['/etc/corosync/service.d'],
|
|
require => File['/etc/corosync/corosync.conf'],
|
|
}
|
|
|
|
Service['corosync'] -> Pcmk_nodes<||>
|
|
Pcmk_nodes<||> -> Service<| provider == 'pacemaker' |>
|
|
|
|
# Sometimes during first start pacemaker can not connect to corosync
|
|
# via IPC due to pacemaker and corosync processes are run under different users
|
|
if($::operatingsystem == 'Ubuntu') {
|
|
$pacemaker_run_uid = 'hacluster'
|
|
$pacemaker_run_gid = 'haclient'
|
|
|
|
file {'/etc/corosync/uidgid.d/pacemaker':
|
|
content =>"uidgid {
|
|
uid: ${pacemaker_run_uid}
|
|
gid: ${pacemaker_run_gid}
|
|
}"
|
|
}
|
|
|
|
File['/etc/corosync/corosync.conf'] -> File['/etc/corosync/uidgid.d/pacemaker'] -> Service <| title == 'corosync' |>
|
|
}
|