6a9d2aa493
2017-07-20 14:39:54.305432 | manifests/pacemaker/service.pp:207:WARNING: arrow should be on the right operand's line 2017-07-20 14:39:54.305595 | manifests/repo/debian/debian.pp:54:WARNING: arrow should be on the right operand's line Change-Id: Ia70ad9caa46221ab68edbba32d001dd4c08e6e6f
214 lines
5.7 KiB
Puppet
214 lines
5.7 KiB
Puppet
# == Class: openstack_extras::pacemaker::service
|
|
#
|
|
# Configures Pacemaker resource for a specified service and
|
|
# overrides its service provider to Pacemaker.
|
|
# Assumes there is a service already exists in the Puppet catalog.
|
|
# For example, the one, such as nova-api, heat-engine, neutron-agent-l3
|
|
# and so on, created by other core Puppet modules for Openstack.
|
|
#
|
|
# === Parameters
|
|
#
|
|
# [*ensure*]
|
|
# (optional) The state of the service provided by Pacemaker
|
|
# Defaults to present
|
|
#
|
|
# [*ocf_root_path*]
|
|
# (optional) The path for OCF scripts
|
|
# Defaults to /usr/lib/ocf
|
|
#
|
|
# [*primitive_class*]
|
|
# (optional) The class of Pacemaker resource (primitive)
|
|
# Defaults to ocf
|
|
#
|
|
# [*primitive_provider*]
|
|
# (optional) The provider of OCF scripts
|
|
# Defaults to pacemaker
|
|
#
|
|
# [*primitive_type*]
|
|
# (optional) The type of the primitive (OCF file name).
|
|
# Used with the other parameters as a full path to OCF script:
|
|
# primitive_class/primitive_provider/primitive_type
|
|
# resided at ocf_root_path/resource.d
|
|
# Defaults to false
|
|
#
|
|
# [*parameters*]
|
|
# (optional) The hash of parameters for a primitive
|
|
# Defaults to false
|
|
#
|
|
# [*operations*]
|
|
# (optional) The hash of operations for a primitive
|
|
# Defaults to false
|
|
#
|
|
# [*metadata*]
|
|
# (optional) The hash of metadata for a primitive
|
|
# Defaults to false
|
|
#
|
|
# [*ms_metadata*]
|
|
# (optional) The hash of ms_metadata for a primitive
|
|
# Defaults to false
|
|
#
|
|
# [*use_handler*]
|
|
# (optional) The handler (wrapper script) for OCF script
|
|
# Could be useful for debug and informational purposes.
|
|
# It sets some default values like OCF_ROOT in order to
|
|
# simplify debugging of OCF scripts
|
|
# Defaults to true
|
|
#
|
|
# [*handler_root_path*]
|
|
# (optional) The path for a handler script
|
|
# Defaults to /usr/local/bin
|
|
#
|
|
# [*ocf_script_template*]
|
|
# (optional) ERB template for OCF script for Pacemaker
|
|
# resource
|
|
# Defaults to false
|
|
#
|
|
# [*ocf_script_file*]
|
|
# (optional) OCF file for Pacemaker resource
|
|
# Defaults to false
|
|
#
|
|
# [*create_primitive*]
|
|
# (optional) Controls Pacemaker primitive creation
|
|
# Defaults to true
|
|
#
|
|
# [*clone*]
|
|
# (optional) Create a cloned primitive
|
|
# Defaults to false
|
|
#
|
|
# === Examples
|
|
#
|
|
# Will create resource and ensure Pacemaker provider for
|
|
# 'some-api-service' with the given OCF scripte template and
|
|
# parameters:
|
|
#
|
|
# $metadata = {
|
|
# 'resource-stickiness' => '1'
|
|
# }
|
|
# $operations = {
|
|
# 'monitor' => {
|
|
# 'interval' => '20',
|
|
# 'timeout' => '30',
|
|
# },
|
|
# 'start' => {
|
|
# 'timeout' => '60',
|
|
# },
|
|
# 'stop' => {
|
|
# 'timeout' => '60',
|
|
# },
|
|
# }
|
|
# $ms_metadata = {
|
|
# 'interleave' => true,
|
|
# }
|
|
#
|
|
# openstack_extras::pacemaker::service { 'some-api-service' :
|
|
# primitive_type => 'some-api-service',
|
|
# metadata => $metadata,
|
|
# ms_metadata => $ms_metadata,
|
|
# operations => $operations,
|
|
# clone => true,
|
|
# ocf_script_template => 'some_module/some_api_service.ocf.erb',
|
|
# }
|
|
#
|
|
define openstack_extras::pacemaker::service (
|
|
$ensure = 'present',
|
|
$ocf_root_path = '/usr/lib/ocf',
|
|
$primitive_class = 'ocf',
|
|
$primitive_provider = 'pacemaker',
|
|
$primitive_type = false,
|
|
$parameters = false,
|
|
$operations = false,
|
|
$metadata = false,
|
|
$ms_metadata = false,
|
|
$use_handler = true,
|
|
$handler_root_path = '/usr/local/bin',
|
|
$ocf_script_template = false,
|
|
$ocf_script_file = false,
|
|
$create_primitive = true,
|
|
$clone = false,
|
|
) {
|
|
|
|
$service_name = $title
|
|
$primitive_name = "p_${service_name}"
|
|
$ocf_script_name = "${service_name}-ocf-file"
|
|
$ocf_handler_name = "ocf_handler_${service_name}"
|
|
|
|
$ocf_dir_path = "${ocf_root_path}/resource.d"
|
|
$ocf_script_path = "${ocf_dir_path}/${primitive_provider}/${$primitive_type}"
|
|
$ocf_handler_path = "${handler_root_path}/${ocf_handler_name}"
|
|
|
|
Service<| title == $service_name |> {
|
|
provider => 'pacemaker',
|
|
}
|
|
|
|
Service<| name == $service_name |> {
|
|
provider => 'pacemaker',
|
|
}
|
|
|
|
if $create_primitive {
|
|
cs_primitive { $primitive_name :
|
|
ensure => $ensure,
|
|
primitive_class => $primitive_class,
|
|
primitive_type => $primitive_type,
|
|
provided_by => $primitive_provider,
|
|
parameters => $parameters,
|
|
operations => $operations,
|
|
metadata => $metadata,
|
|
ms_metadata => $ms_metadata,
|
|
}
|
|
|
|
$clone_name="${primitive_name}-clone"
|
|
if $clone {
|
|
cs_clone { $clone_name :
|
|
ensure => present,
|
|
primitive => $primitive_name,
|
|
require => Cs_primitive[$primitive_name]
|
|
}
|
|
}
|
|
else {
|
|
cs_clone { $clone_name :
|
|
ensure => absent,
|
|
require => Cs_primitive[$primitive_name]
|
|
}
|
|
}
|
|
}
|
|
|
|
if $ocf_script_template or $ocf_script_file {
|
|
file { $ocf_script_name :
|
|
ensure => $ensure,
|
|
path => $ocf_script_path,
|
|
mode => '0755',
|
|
owner => 'root',
|
|
group => 'root',
|
|
}
|
|
|
|
if $ocf_script_template {
|
|
File[$ocf_script_name] {
|
|
content => template($ocf_script_template),
|
|
}
|
|
} elsif $ocf_script_file {
|
|
File[$ocf_script_name] {
|
|
source => "puppet:///modules/${ocf_script_file}",
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
if ($primitive_class == 'ocf') and ($use_handler) {
|
|
file { $ocf_handler_name :
|
|
ensure => present,
|
|
path => $ocf_handler_path,
|
|
owner => 'root',
|
|
group => 'root',
|
|
mode => '0700',
|
|
content => template('openstack_extras/ocf_handler.erb'),
|
|
}
|
|
}
|
|
|
|
File<| title == $ocf_script_name |>
|
|
-> Cs_primitive<| title == $primitive_name |>
|
|
File<| title == $ocf_script_name |> ~> Service[$service_name]
|
|
Cs_primitive<| title == $primitive_name |> -> Service[$service_name]
|
|
File<| title == $ocf_handler_name |> -> Service[$service_name]
|
|
|
|
}
|