class heartbeat {

package { "heartbeat":
ensure => installed,
require => Yumrepo["extras"],
}

service { "heartbeat":
hasstatus => true,
hasrestart => true,
}

}

define heartbeat::hacf (
$logfacility = 'local0' $bcast = 'bond0',,
$keepalive = '1', $auto_failback = 'on',
$deadtime = '10', $hosts,
$warntime = '3', $ping,
$initdead = '30', $crm = true
){

file { "/etc/ha.d/ha.cf":
mode => 0644,
content => template("heartbeat/ha.cf.erb"),
notify => Service["heartbeat"],
}

}

define heartbeat::haresources ( $node, $ipaddr, $service = '') {

file { "/etc/ha.d/haresources":
mode => 0644,
replace => false,
content => template("heartbeat/haresources.erb"),
}

# Run the conversion file to create cib.xml for heartbeat v2.
# the haresources2cib.py script checks for cib.xml.

exec { "/usr/lib/heartbeat/haresources2cib.py":
creates => "/var/lib/heartbeat/crm/cib.xml",
require => File["/etc/ha.d/haresources"],
}

}

define heartbeat::authkeys ($signature = 'sha1', $password = 'Hash This!") {

file { "/etc/ha.d/authkeys":
mode => 0600,
content => template("heartbeat/authkeys.erb"),
notify => Service["heartbeat"],
}

}

##### Templates:
ha.cf.erb:
logfacility <%= logfacility %>

keepalive <%= keepalive %>
deadtime <%= deadtime %>
warntime <%= warntime %>
initdead <%= initdead %>

bcast <%= bcast %>
auto_failback <%= auto_failback %>

node <% hosts.each {|h| -%><%= h %> <% } %>
ping <% ping.each {|p| -%><%= p %> <% } %>

crm <%= crm %>

authkeys.erb:
<% require 'digest/md5'-%>auth 1
1 <%= signature %> <% hash = Digest::MD5.hexdigest(password) -%><%= hash %>