Yanis Guenane 615e77f82c sensu: Start sensu-server prior to sensu-api
To avoid being bit by https://github.com/sensu/sensu/issues/815
we enforce sensu-server to start before sensu-api.

Change-Id: I9b6735f3d13773b3e03339c373f26e8bb0e54db9
2015-03-15 19:16:30 +01:00

134 lines
3.7 KiB
Puppet

#
# Copyright (C) 2014 eNovance SAS <licensing@enovance.com>
#
# Licensed under the Apache License, Version 2.0 (the "License"); you may
# not use this file except in compliance with the License. You may obtain
# a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations
# under the License.
#
# [*checks*]
# (optionnal) Hash of checks and their respective options
# Defaults to {}.
# Example :
# $checks = {
# 'ntp' => {
# 'command' => '/etc/sensu/plugins/check-ntp.sh'},
# 'http' => {
# 'command' => '/etc/sensu/plugins/check-http.sh'},
# }
#
# [*handlers*]
# (optionnal) Hash of handlers and their respective options
# Defaults to {}.
# Example :
# $handlers = {
# 'mail' => {
# 'command' => 'mail -s "Sensu Alert" contact@example.com'},
# }
#
# [*plugins*]
# (optionnal) Hash of handlers and their respective options
# Defaults to {}.
# Example :
# $plugins = {
# 'http://www.example.com/ntp.sh' => {
# 'type' => 'url',
# 'install_path' => '/etc/sensu/plugins',
# }
# }
#
# [*manage_sensu_plugins*]
# (optionnal) A boolean that determines if the Sensu plugins resources should be exported
# from this node
# Defaults to 'false'
#
# [*sensu_api_ip*]
# (optionnal) IP address to bind the sensu_api to
# Defaults to '%{::ipaddress}'
#
# [*sensu_api_port*]
# (optionnal) Port to bind the sensu_api to
# Defaults to '4568'
#
# [*uchiwa_ip*]
# (optionnal) IP address to bind uchiwa to
# Defaults to '%{::ipaddress}'
#
# [*uchiwa_port*]
# (optionnal) Port to bind uchiwa to
# Defaults to '3000'
#
# [*firewall_settings*]
# (optional) Allow to add custom parameters to firewall rules
# Should be an hash.
# Default to {}
#
class cloud::monitoring::server::sensu (
$checks = {},
$handlers = {},
$plugins = {},
$manage_sensu_plugins = false,
$sensu_api_ip = $::ipaddress,
$sensu_api_port = '4568',
$uchiwa_ip = $::ipaddress,
$uchiwa_port = '3000',
$firewall_settings = {},
) {
include cloud::params
Service['sensu-server'] -> Service['sensu-api'] -> Service['uchiwa']
Service['sensu-server'] -> Sensu::Plugin <<| |>>
include cloud::monitoring::agent::sensu
create_resources('sensu::check', $checks)
create_resources('sensu::handler', $handlers)
if $manage_sensu_plugins {
create_resources('@@sensu::plugin', $plugins)
}
include ::uchiwa
uchiwa::api { 'OpenStack' :
host => $sensu_api_ip,
port => $sensu_api_port,
}
if $::cloud::manage_firewall {
cloud::firewall::rule{ '100 allow sensu_dashboard access':
port => $uchiwa_port,
extras => $firewall_settings,
}
cloud::firewall::rule{ '100 allow sensu_api access':
port => $sensu_api_port,
extras => $firewall_settings,
}
}
@@haproxy::balancermember{"${::fqdn}-sensu_dashboard":
listening_service => 'sensu_dashboard',
server_names => $::hostname,
ipaddresses => $uchiwa_ip,
ports => $uchiwa_port,
options => 'check inter 2000 rise 2 fall 5'
}
@@haproxy::balancermember{"${::fqdn}-sensu_api":
listening_service => 'sensu_api',
server_names => $::hostname,
ipaddresses => $sensu_api_ip,
ports => $sensu_api_port,
options => 'check inter 2000 rise 2 fall 5'
}
}