Version information
This version is compatible with:
- Puppet Enterprise 2019.8.x, 2019.7.x, 2019.5.x, 2019.4.x, 2019.3.x, 2019.2.x, 2019.1.x, 2019.0.x, 2018.1.x, 2017.3.x, 2017.2.x, 2016.4.x
- Puppet >= 4.10.0 < 7.0.0
- , , , , , , , ,
This module has been deprecated by its author since Jun 3rd 2024.
The author has suggested puppet-icinga2 as its replacement.
Start using this module
Documentation
Icinga 2 Puppet Module
Table of Contents
- Overview
- Module Description - What the module does and why it is useful
- Setup - The basics of getting started with icinga2
- Usage - Configuration options and additional functionality
- Reference - An under-the-hood peek at what the module is doing and how
- Development - Guide for contributing to the module
Overview
Icinga 2 is a widely used open source monitoring software. This Puppet module helps with installing and managing configuration of Icinga 2 on multiple operating systems.
v2.0.0
- Requires Icinga 2 v2.8.0 or higher.
- Feature
api
:- Default for parameter
pki
was changed toicinga2
. - Parameters
ssl_key_path
,ssl_cert_path
,ssl_csr_path
andssl_ca_path
removed. - Deprecated value
ca
of parameterpki
is removed. - Parameter ssl_crl_path was renamed to ssl_crl.
- Default for parameter
- Feature
idopgsql
- Parameter
password
is required now. - Parameter default for
host
is set tolocalhost
- Parameter
- Feature
idomysql
- Parameter
password
is required now. - Parameter default for
host
is set tolocalhost
- Remove parameter
pki
.- Puppet as key, cert or cacert source isn't supported anymore.
- However to use these create file resources with tag to
icinga2::config::file
and source to one of the facts icinga2_puppet_hostcert, icinga2_puppet_hostprivkey, icinga2_puppet_localcacert
- Key and certs now are stored into the certs directory named
IdoMysqlConnection_ido-mysql
by default.
- Parameter
- Feature
elasticsearch
- Remove parameter
pki
.- Puppet as key, cert or cacert source isn't supported anymore.
- However to use these create file resources with tag to
icinga2::config::file
and source to one of the facts icinga2_puppet_hostcert, icinga2_puppet_hostprivkey, icinga2_puppet_localcacert
- Key and certs now are stored into the certs directory and named
ElasticsearchWriter_elasticsearch
by default.
- Remove parameter
- Feature
influxdb
- Remove parameter
pki
.- Puppet as key, cert or cacert source isn't supported anymore.
- However to use these create file resources with tag to
icinga2::config::file
and source to one of the facts icinga2_puppet_hostcert, icinga2_puppet_hostprivkey, icinga2_puppet_localcacert
- Key and certs now are stored into the certs directory named
InfluxdbWriter_influxdb
by default.
- Remove parameter
- compatlogger
- Object removed
- Class
icinga2::pki::ca
- Parameters
ssl_key_path
,ssl_csr_path
andssl_cacert_path
removed. Now the location is at/var/lib/icinga2/certs
on Linux hosts andC:/ProgramData/icinga2/var/lib/icinga2/certs
.
- Parameters
Module Description
This module installs and configures Icinga 2 on your Linux or Windows hosts.
By default it uses packages provided by your distribution's repository or Chocolatey on Windows.
The module can also be configured to use packages.icinga.com as the primary repository, which enables you to install Icinga 2 versions that are newer than the ones provided by your distribution's vendor. All features and objects available in Icinga 2 can be enabled and configured with this module.
Setup
What the Icinga 2 Puppet module supports
- Installation of packages
- Configuration of features
- Configuration of objects (also apply rules)
- Service
- MySQL / PostgreSQL Database Schema Import
- Repository Management
- Certification Authority
Dependencies
This module supports:
- [puppet] >= 4.10 < 7.0.0
And depends on:
- puppetlabs/stdlib >= 4.16.0 < 7.0.0
- If Puppet 6 is used a stdlib 5.1 or higher is required, see https://github.com/Icinga/puppet-icinga2/issues/505
- puppetlabs/concat >= 2.1.0 < 7.0.0
Depending on your setup following modules may also be required:
- puppetlabs/apt >= 6.0.0
- puppetlabs/chocolatey >= 3.1.0
- puppet/zypprepo >= 2.2.1
- [puppetlabs/yumrepo_core] >= 1.0.0
- If Puppet 6 is used
Limitations
This module has been tested on:
- Ruby >= 1.9
- Debian 8, 9
- Ubuntu 16.04, 18.04
- CentOS/RHEL 6, 7
- Fedora 29
- FreeBSD 10, 11
- SLES 12
- Windows Server 2012 R2, 2016
Other operating systems or versions may work but have not been tested.
Usage
Installing Icinga 2
The default class icinga2
installs and configures a basic installation of Icinga 2. The features checker
, mainlog
and notification
are enabled by default.
By default, your distribution's packages are used to install Icinga 2. On Windows systems we use the Chocolatey package manager.
Use the manage_repo
parameter to configure the official packages.icinga.com repositories.
class { '::icinga2':
manage_repo => true,
}
Info: If you are using the Icinga Web 2 Puppet module on the same server, make sure to disable the repository management for one of the modules!
Since version 2.0.0 you're able via hiera to overload which repository will be used for installation, e.g. for icinga on YUM based operating systems:
---
icinga2::repo:
baseurl: 'http://myhost.example.org/epel/%{facts.os.release.major}/release/'
proxy: http://proxy.example.org:3128
You can also change or set every other parameter of the underlying resources, supported for operating system families:
- RedHat, resource type: yumrepo
- Debian, define resource: apt::source
- SuSE, resource type: zypprepo
- a workaround is implemented to use a parameter proxy also to download the gpg key thru a proxy, see https://github.com/Icinga/puppet-icinga2/issues/397.
If you want to manage the version of Icinga 2, you have to disable the package management of this module and handle packages in your own Puppet code. The attribute manage_repo is also disabled automattically and you have to manage a repository within icinga in front of the package resource, i.e. for a RedHat system:
yumrepo { 'icinga-stable-release':
baseurl => "http://packages.icinga.com/epel/${::operatingsystemmajrelease}/release/",
descr => 'ICINGA (stable release for epel)',
enabled => 1,
gpgcheck => 1,
gpgkey => 'http://packages.icinga.com/icinga.key',
before => Package['icinga2'],
}
package { 'icinga2':
ensure => latest,
notify => Class['icinga2'],
}
class { '::icinga2':
manage_package => false,
}
Note: Be careful with this option: Setting manage_package
to false means that this module will not install any package at
all, including IDO packages!
Enabling Features
There are two options how you can enable features:
A default set of features is set with the features
parameter in the ::icinga2
class:
class { '::icinga2':
manage_repo => true,
features => ['checker', 'mainlog', 'command'],
}
To enable a feature and change its configuration, declare the specified feature class:
class { '::icinga2::feature::graphite':
host => '10.10.0.15',
port => 2003,
enable_send_thresholds => true,
enable_send_metadata => true,
}
Make sure that you enable features either in the ::icinga2
class or by declaring the feature class.
Setting up Icinga IDO
The IDO feature can be enabled either in combination with MySQL or PostgreSQL.
Depending on your database you need to enable the feature icinga2::feature::idomysql
or icinga2::feature::idopgsql
.
Both features are capable of importing the base schema into the database, however this is disabled by default. Updating the database schema to another version is currently not supported.
The IDO features require a pre-existing database and a user with permissions to create schema and edit data.
MySQL
When using MySQL we recommend the puppetlabs/mysql Puppet module to install the database server, create a database and manage user permissions. Here's an example how you create a MySQL database with the corresponding user with permissions by using the puppetlabs/mysql module:
include ::icinga2
include ::mysql::server
mysql::db { 'icinga2':
user => 'icinga2',
password => 'supersecret',
host => '127.0.0.1',
grant => ['SELECT', 'INSERT', 'UPDATE', 'DELETE', 'DROP', 'CREATE VIEW', 'CREATE', 'INDEX', 'EXECUTE', 'ALTER'],
}
class{ '::icinga2::feature::idomysql':
user => 'icinga2',
password => 'supersecret',
database => 'icinga2',
import_schema => true,
require => Mysql::Db['icinga2'],
}
PostgreSQL
For PostgreSQL we recommend the puppetlabs/puppetlabs-postgresql module. You can install the server, create databases and manage user permissions with the module. Here's an example on how to use it in combination with Icinga 2:
include ::icinga2
include ::postgresql::server
postgresql::server::db { 'icinga2':
user => 'icinga2',
password => postgresql_password('icinga2', 'supersecret'),
}
class{ '::icinga2::feature::idopgsql':
user => 'icinga2',
password => 'supersecret',
database => 'icinga2',
import_schema => true,
require => Postgresql::Server::Db['icinga2'],
}
Clustering Icinga 2
Icinga 2 can run in three different roles:
- in a master zone which is on top of the hierarchy
- in a satellite zone which is a child of a satellite or master zone
- a standalone client node/zone which works as an agent connected to master and/or satellite zones
To learn more about Icinga 2 Clustering, follow the official docs on distributed monitoring. The following examples show how these roles can be configured using this Puppet module.
Master
A Master zone has no parent and is usually also the place where you enable the IDO and notification features. A master sends configurations over the Icinga 2 protocol to satellites and/or clients.
More detailed examples can be found in the examples directory.
This example creates the configuration for a master that has one satellite connected. A global zone is created for templates, and all features of a typical master are enabled.
class { '::icinga2':
confd => false,
features => ['checker','mainlog','notification','statusdata','compatlog','command'],
constants => {
'ZoneName' => 'master',
},
}
class { '::icinga2::feature::api':
accept_commands => true,
# when having multiple masters, you should enable:
# accept_config => true,
endpoints => {
'master.example.org' => {},
'satellite.example.org' => {
'host' => '172.16.2.11'
}
},
zones => {
'master' => {
'endpoints' => ['master.example.org'],
},
'dmz' => {
'endpoints' => ['satellite.example.org'],
'parent' => 'master',
},
}
}
icinga2::object::zone { 'global-templates':
global => true,
}
Satellite
A satellite has a parent zone and one or multiple child zones. Satellites are usually created to distribute the monitoring load or to reach delimited zones in the network. A satellite either executes checks itself or delegates them to a client.
The satellite has fewer features enabled, but executes checks similar to a master. It connects to a master zone, and to a satellite or client below in the hierarchy. As parent acts either the master zone, or another satellite zone.
class { '::icinga2':
confd => false,
features => ['checker','mainlog'],
constants => {
'ZoneName' => 'dmz',
},
}
class { '::icinga2::feature::api':
accept_config => true,
accept_commands => true,
fingerprint => 'D8:98:82:1B:14:8A:6A:89:4B:7A:40:32:50:68:01:99:3D:96:72:72',
endpoints => {
'satellite.example.org' => {},
'master.example.org' => {
'host' => '172.16.1.11',
},
},
zones => {
'master' => {
'endpoints' => ['master.example.org'],
},
'dmz' => {
'endpoints' => ['satellite.example.org'],
'parent' => 'master',
},
}
}
icinga2::object::zone { 'global-templates':
global => true,
}
Client
Icinga 2 runs as a client usually on each of your servers. It receives config or commands from a satellite or master zones and runs the checks that have to be executed locally.
The client is connected to the satellite, which is the direct parent zone.
class { '::icinga2':
confd => false,
features => ['checker','mainlog'],
}
class { '::icinga2::feature::api':
pki => 'none',
accept_config => true,
accept_commands => true,
fingerprint => ''D8:98:82:1B:14:8A:6A:89:4B:7A:40:32:50:68:01:99:3D:96:72:72,
endpoints => {
'NodeName' => {},
'satellite.example.org' => {
'host' => '172.16.2.11',
}
},
zones => {
'ZoneName' => {
'endpoints' => ['NodeName'],
'parent' => 'dmz',
},
'dmz' => {
'endpoints' => ['satellite.example.org'],
}
}
}
icinga2::object::zone { 'global-templates':
global => true,
}
The parameter fingerprint
is optional and new since v2.1.0. It's used to validate the certificate of the master.
A fingerprint can be got by openssl x509 -noout -fingerprint -sha1 -inform pem -in master.crt
on the master host.
Config Objects
With this module you can create almost every object that Icinga 2 knows about. When creating objects some parameters are required. This module sets the same requirements as Icinga 2 does. When creating an object you must set a target for the configuration.
Here are some examples for some object types:
Host
icinga2::object::host { 'srv-web1.fqdn.com':
display_name => 'srv-web1.fqdn.com',
address => '127.0.0.1',
address6 => '::1',
check_command => 'hostalive',
target => '/etc/icinga2/conf.d/srv-web1.fqdn.com.conf',
}
Service
icinga2::object::service { 'uptime':
host_name => 'srv-web1.fqdn.com',
display_name => 'Uptime',
check_command => 'check_uptime',
check_interval => '600m',
groups => ['uptime', 'linux'],
target => '/etc/icinga2/conf.d/uptime.conf',
}
Hostgroup
icinga2::object::hostgroup { 'monitoring-hosts':
display_name => 'Linux Servers',
groups => [ 'linux-servers' ],
target => '/etc/icinga2/conf.d/groups2.conf',
assign => [ 'host.vars.os == linux' ],
}
Parsing Configuration
To generate a valid Icinga 2 configuration all object attributes are parsed. This simple parsing algorithm takes a decision for each attribute, whether part of the string is to be quoted or not, and how an array or dictionary is to be formatted.
Parsing of a single attribute can be disabled by tagging it with -: at the front of the string.
attr => '-:"unparsed string with quotes"'
An array, a hash or a string can be assigned to an object attribute. True and false are also valid values.
Hashes and arrays are created recursively, and all parts – such as single items of an array, keys and its values are parsed separately as strings.
Strings are parsed in chunks, by splitting the original string into separate substrings at specific keywords (operators)
such as +
, -
, in
, &&
, ||
, etc.
NOTICE: This splitting only works for keywords that are surrounded by whitespace, e.g.:
attr => 'string1 + string2 - string3'
The algorithm will loop over the parameter and start by splitting it into 'string1' and 'string2 - string3'. 'string1' will be passed to the sub function 'value_types' and then the algorithm will continue parsing the rest of the string ('string2 - string3'), splitting it, passing it to value_types, etc.
Brackets are parsed for expressions:
attr => '3 * (value1 - value2) / 2'
The parser also detects function calls and will parse all parameters separately.
attr => 'function(param1, param2, ...)'
True and false can be used as either booleans or strings.
attrs => true or attr => 'true'
In Icinga you can write your own lambda functions with {{ ... }}. For Puppet use:
attrs => '{{ ... }}'
The parser analyzes which parts of the string have to be quoted and which do not.
As a general rule, all fragments are quoted except for the following:
- Boolean:
true
,false
- Numbers:
3
or2.5
- Time Intervals:
3m
or2.5h
(s = seconds, m = minutes, h = hours, d = days) - Functions:
{{ ... }}
or function()
{}
- All constants, which are declared in the constants parameter in main class
icinga2
NodeName
- Names of attributes that belong to the same type of object:
- e.g.
name
andcheck_command
for a host object
- e.g.
- All attributes or variables (custom attributes) from the host, service or user contexts:
host.name
,service.check_command
,user.groups
, ...
Assignment with += and -=:
Now it's possible to build an Icinga DSL code snippet like
vars += config
simply use a string with the prefix '+ ', e.g.
vars => '+ config',
The blank between + and the proper string 'config' is imported for the parser because numbers
attr => '+ -14',
are also possible now. For numbers -= can be built, too:
attr => '- -14',
Arrays can also be marked to merge with '+' or reduce by '-' as the first item of the array:
attr => [ '+', item1, item2, ... ]
Result: attr += [ item1, item2, ... ]
attr => [ '-', item1, item2, ... ]
Result: attr -= [ item1, item2, ... ]
That all works for attributes and custom attributes!
Finally dictionaries can be merged when a key '+' is set:
attr => {
'+' => true,
'key1' => 'val1',
}
Result:
attr += {
"key1" = "val1"
}
If 'attr' is a custom attribute this just works since level 3 of the dictionary:
vars => {
'level1' => {
'level2' => {
'level3' => {
'+' => true,
...
},
},
},
},
Parsed to:
vars.level1["level2"] += level3
Now it's also possible to add multiple custom attributes:
vars => [
{
'a' => '1',
'b' => '2',
},
'config',
{
'c' => {
'd' => {
'+' => true,
'e' => '5',
},
},
},
],
And you'll get:
vars.a = "1"
vars.b = "2"
vars += config
vars.c["d"] += {
"e" = "5"
}
Note: Using an Array always means merge '+=' all items to vars.
What isn't supported?
It's not currently possible to use arrays or dictionaries in a string, like
attr => 'array1 + [ item1, item2, ... ]'
Reading objects from hiera data
The following example is for puppet 4 and higher. It shows how icinga2 objects can be read from a hiera datastore. See also examples/objects_from_hiera.pp.
class { 'icinga2':
manage_repo => true,
}
$defaults = lookup('monitoring::defaults')
lookup('monitoring::objects').each |String $object_type, Hash $content| {
$content.each |String $object_name, Hash $object_config| {
ensure_resource(
$object_type,
$object_name,
deep_merge($defaults[$object_type], $object_config))
}
}
The datastore could be like:
---
monitoring::objects:
'icinga2::object::host':
centos7.localdomain:
address: 127.0.0.1
vars:
os: Linux
'icinga2::object::service':
ping4:
check_command: ping4
apply: true
assign:
- host.address
ssh:
check_command: ssh
apply: true
assign:
- host.address && host.vars.os == Linux
monitoring::defaults:
'icinga2::object::host':
import:
- generic-host
target: /etc/icinga2/conf.d/hosts.conf
'icinga2::object::service':
import:
- generic-service
target: /etc/icinga2/conf.d/services.conf
Apply Rules
Some objects can be applied to other objects. To create a simple apply rule you
must set the apply
parameter to true
. If this parameter is set to a string,
this string will be used to build an apply for
loop. A service object always
targets a host object. All other objects need to explicitly set an
apply_target
Apply a SSH service to all Linux hosts:
icinga2::object::service { 'SSH':
target => '/etc/icinga2/conf.d/test.conf',
apply => true,
assign => [ 'host.vars.os == Linux' ],
ignore => [ 'host.vars.os == Windows' ],
display_name => 'Test Service',
check_command => 'ssh',
}
Apply notifications to services:
icinga2::object::notification { 'testnotification':
target => '/etc/icinga2/conf.d/test.conf',
apply => true,
apply_target => 'Service',
assign => [ 'host.vars.os == Linux' ],
ignore => [ 'host.vars.os == Windows' ],
user_groups => ['icingaadmins']
}
Assign all Linux hosts to a hostgroup:
icinga2::object::hostgroup { 'monitoring-hosts':
display_name => 'Linux Servers',
groups => [ 'linux-servers' ],
target => '/etc/icinga2/conf.d/groups2.conf',
assign => [ 'host.vars.os == linux' ],
}
A loop to create HTTP services for all vHosts of a host object:
icinga2::object::service { 'HTTP':
target => '/etc/icinga2/conf.d/http.conf',
apply => 'http_vhost => config in host.vars_http_vhost',
assign => [ 'host.vars.os == Linux' ],
display_name => 'HTTP Service',
check_command => 'http',
}
CA and Certificates
Handling the CA and certificates is an important part of Icinga 2, because the communication between Icinga processes requires SSL/TLS client certificates. This module offers multiple choices to configure this.
CA on your Icinga Master
One of your Icinga masters needs to behave as a CA. With the class
icinga2::pki::ca
you can do the following to fulfill this requirement:
- Use the the
icinga2
CLI to generate a complete new CA
include ::icinga2
class { '::icinga2::pki::ca':
}
- Set a custom content of the CA certificate and key
include ::icinga2
class { '::icinga2::pki::ca':
ca_cert => '-----BEGIN CERTIFICATE----- ...',
ca_key => '-----BEGIN RSA PRIVATE KEY----- ...',
}
- Transfer a CA certificate and key from an existing CA by using the file resource:
include ::icinga2
file { '/var/lib/icinga2/ca/ca.crt':
source => '...',
tag => 'icinga2::config::file',
}
file { '/var/lib/icinga2/ca/ca.key':
source => '...',
tag => 'icinga2::config::file',
}
- Create a new CA with the
icinga2
CLI command and a certificate signed by this new CA. This is useful especially when setting up a new Icinga 2 master.
class { '::icinga2':
constants => {
'TicketSalt' => '5a3d695b8aef8f18452fc494593056a4',
}
}
class { '::icinga2::pki::ca': }
class { '::icinga2::feature::api':
pki => 'none',
endpoints => {
'localhost' => {
'host' => 'localhost',
}
},
zones => {
'master' => {
'endpoints' => ['localhost']
}
}
}
If you are looking for an option to use your Puppet CA, have a look at the Client/Satellite Certificates section.
Client/Satellite Certificates
In addition to the master, each client and satellite needs valid certificates to communicate with other Icinga 2 instances. This module offers following options to create these certificates:
- Use Puppet's CA and its client certificates. This is convenient since you don't need to maintain an additional CA.
include ::icinga2::feature::api
- Use a custom function implemented in this module to generate a certificate. This feature will do the following:
- Generate a key and certificate based on the FQDN of the host
- Save the certificate of another Icinga 2 instance, usually the Icinga master where your Icinga CA is located
- Validate the certificate of the other Icinga 2 instance by it's fingerprint
- Generate a ticket based on the TicketSalt
- Request a signed certificate at your Icinga CA
class { '::icinga2::feature::api':
pki => 'icinga2',
ca_host => 'icinga2-master.example.com',
fingerprint => 'D8:98:82:1B:14:8A:6A:89:4B:7A:40:32:50:68:01:99:3D:96:72:72',
ticket_salt => '5a3d695b8aef8f18452fc494593056a4',
accept_config => true,
accept_commands => true,
endpoints => {
'NodeName' => {},
'icinga2-master.example.com' => {
'host' => '192.168.56.103',
}
},
zones => {
'NodeName' => {
'endpoints' => ['NodeName'],
'parent' => 'master',
},
'master' => {
'endpoints' => ['icinga2-master.example.com']
}
}
}
- Use custom file resources to transfer your own certificate and key
class { '::icinga2::feature::api':
pki => 'none',
}
file { "/var/lib/icinga2/certs/${::fqdn}.crt":
ensure => file,
tag => 'icinga2::config::file',
source => "puppet:///modules/profiles/certificates/${::fqdn}.crt",
}
file { "/var/lib/icinga2/certs/${::fqdn}.key":
ensure => file,
tag => 'icinga2::config::file',
source => "puppet:///modules/profiles/private_keys/${::fqdn}.key",
}
- Set a custom content for the certificate and key
class { '::icinga2::feature::api':
pki => 'none',
ssl_cacert => '-----BEGIN CERTIFICATE----- ...',
ssl_key => '-----BEGIN RSA PRIVATE KEY----- ...',
ssl_cert => '-----BEGIN CERTIFICATE----- ...',
}
- Fine tune TLS / SSL settings
class { '::icinga2::feature::api':
ssl_protocolmin => 'TLSv1.2',
ssl_cipher_list => 'HIGH:MEDIUM:!aNULL:!MD5:!RC4',
}
Custom configuration
Sometimes it's necessary to cover very special configurations, that you cannot handle with this module. In this case you
can use the icinga2::config::file
tag on your file resource. The module collects all file resource types with this
tag and triggers a reload of Icinga 2 on a file change.
include ::icinga2
file { '/etc/icinga2/conf.d/for-loop.conf':
ensure => file,
source => '...',
tag => 'icinga2::config::file',
}
If you want to add custom configuration fragments to existing config files, you can do this with
icinga2::config::fragment
. It adds content into a specified target to the position you set in the order parameter.
You can use also Puppet templates to set the content of the config fragment.
For example, you can add custom functions to existing config files:
include ::icinga2
icinga2::object::service { 'load':
display_name => 'Load',
apply => true,
check_command => 'load',
assign => ['vars.os == Linux'],
target => '/etc/icinga2/conf.d/service_load.conf',
order => 30,
}
icinga2::config::fragment { 'load-function':
target => '/etc/icinga2/conf.d/service_load.conf',
order => 10,
content => 'vars.load_wload1 = {{
if (get_time_period("backup").is_inside) {
return 20
} else {
return 5
}
}}',
}
Reference
- Public classes
- Class: icinga2
- Class: icinga2::feature::checker
- Class: icinga2::feature::mainlog
- Class: icinga2::feature::notification
- Class: icinga2::feature::command
- Class: icinga2::feature::compatlog
- Class: icinga2::feature::graphite
- Class: icinga2::feature::livestatus
- Class: icinga2::feature::opentsdb
- Class: icinga2::feature::perfdata
- Class: icinga2::feature::statusdata
- Class: icinga2::feature::syslog
- Class::icinga2::feature::debuglog
- Class::icinga2::feature::elasticsearch
- Class::icinga2::feature::gelf
- Class::icinga2::feature::influxdb
- Class::icinga2::feature::api
- Class::icinga2::feature::idopgsql
- Class::icinga2::feature::idomysql
- Class::icinga2::pki::ca
- Private classes
- Public defined types
- Defined type: icinga2::object::endpoint
- Defined type: icinga2::object::zone
- Defined type: icinga2::object::apiuser
- Defined type: icinga2::object::checkcommand
- Defined type: icinga2::object::host
- Defined type: icinga2::object::hostgroup
- Defined type: icinga2::object::dependency
- Defined type: icinga2::object::timeperiod
- Defined type: icinga2::object::usergroup
- Defined type: icinga2::object::user
- Defined type: icinga2::object::notificationcommand
- Defined type: icinga2::object::notification
- Defined type: icinga2::object::service
- Defined type: icinga2::object::servicegroup
- Defined type: icinga2::object::scheduleddowntime
- Defined type: icinga2::object::eventcommand
- Defined type: icinga2::object::checkresultreader
- Defined type: icinga2::config::fragment
- Private defined types
Public Classes
Class: icinga2
The default class of this module. It handles the basic installation and configuration of Icinga 2. When you declare this class, Puppet will do the following:
- Install Icinga 2
- Place a default configuration for the Icinga 2 daemon
- Keep the default configuration of the Icinga 2 package
- Start Icinga 2 and enable the service
This class can be declared without adjusting any parameter:
class { '::icinga2': }
Parameters within icinga2
:
ensure
Defines if the service should be running
or stopped
. Defaults to running
enable
If set to true
the Icinga 2 service will start on boot. Defaults to true
.
manage_repo
When set to true
this module will install the packages.icinga.com repository. With this official repo
you can get the latest version of Icinga. When set to false
the operating systems default will be used. As the Icinga
Project does not offer a Chocolatey repository, you will get a warning if you enable this parameter on Windows.
Default is false
. NOTE: will be ignored if manage_package is set to false.
manage_package
If set to false packages aren't managed. Defaults to true
.
manage_service
Lets you decide if the Icinga 2 daemon should be reloaded when configuration files have changed. Defaults to true
features
A list of features to enable by default. Defaults to [checker, mainlog, notification]
purge_features
Define if configuration files for features not managed by Puppet should be purged. Defaults to true.
constants
Hash of constants. Defaults are set in the params class. Your settings will be merged with the defaults.
plugins
A list of the ITL plugins to load. Defaults to [ 'plugins', 'plugins-contrib', 'windows-plugins', 'nscp' ]
.
confd
conf.d
is the directory where Icinga 2 stores its object configuration by default. To disable it,
set this parameter to false
. By default this parameter is true
. It's also possible to assign your
own directory. This directory and must be managed outside of this module as file resource
with tag icinga2::config::file.
Class: icinga2::feature::checker
Enables or disables the checker
feature.
Parameters of icinga2::feature::checker
:
ensure
Either present
or absent
. Defines if the feature checker
should be enabled. Defaults to present
.
concurrent_checks
The maximum number of concurrent checks. Defaults to 512
.
Note: deprecated in Icinga 2.11, replaced by global constant
MaxConcurrentChecks which will be set if you still use concurrent_checks.
Class: icinga2::feature::mainlog
Enables or disables the mainlog
feature.
Parameters of icinga2::feature::mainlog
:
ensure
Either present
or absent
. Defines if the feature mainlog
should be enabled. Defaults to present
.
severity
Sets the severity of the mainlog
feature. Can be set to:
information
notice
warning
debug
Defaults to information
path
Absolute path to the logging file. Default depends on platform:
- Linux:
/var/log/icinga2/icinga2.log
- Windows:
C:/ProgramData/icinga2/var/log/icinga2/icinga2.log
Class: icinga2::feature::notification
Enables or disables the notification
feature.
Parameters of icinga2::feature::notification
:
ensure
Either present
or absent
. Defines if the feature notification
should be enabled. Defaults to present
.
enable_ha
Notifications are load-balanced amongst all nodes in a zone. By default this functionality is enabled. If your nodes should send out notifications independently from any other nodes (this will cause duplicated notifications if not properly handled!), you can set enable_ha to false.
Class: icinga2::feature::command
Enables or disables the command
feature. Notice: The feature is deprecated and will be removed in Icinga 2 2.11.0.
Parameters of icinga2::feature::command
:
ensure
Either present
or absent
. Defines if the feature command
should be enabled. Defaults to present
.
commandpath
Absolute path to the command pipe. Default depends on platform:
- Linux:
/var/run/icinga2/cmd/icinga2.cmd
- Windows:
C:/ProgramData/icinga2/var/run/icinga2/cmd/icinga2.cmd
Class: icinga2::feature::compatlog
Enables or disables the compatlog
feature.
Parameters of icinga2::feature::compatlog
:
ensure
Either present
or absent
. Defines if the feature compatlog
should be enabled. Defaults to present
.
commandpath
Absolute path to the command pipe. Default depends on platform:
- Linux:
/var/run/icinga2/cmd/icinga2.cmd
- Windows:
C:/ProgramData/icinga2/var/run/icinga2/cmd/icinga2.cmd
log_dir
Absolute path to the log directory. Default depends on platform:
- Linux:
/var/log/icinga2/compat
- Windows:
C:/ProgramData/icinga2/var/log/icinga2/compat
rotation_method
Sets how often should the log file be rotated. Valid options are:
HOURLY
DAILY
(Icinga default)WEEKLY
MONTHLY
Class: icinga2::feature::graphite
Enables or disables the graphite
feature.
Parameters of icinga2::feature::graphite
:
ensure
Either present
or absent
. Defines if the feature graphite
should be enabled. Defaults to present
.
host
Graphite Carbon host address. Icinga defaults to 127.0.0.1
.
port
Graphite Carbon port. Icinga defaults to 2003
.
host_name_template
Template for metric path of hosts. Icinga defaults to icinga2.$host.name$.host.$host.check_command$
.
service_name_template
Template for metric path of services. Icinga defaults to icinga2.$host.name$.services.$service.name$.$service.check_command$
.
enable_send_thresholds
Send thresholds as metrics. Icinga defaults to false.
enable_send_metadata
Send metadata as metrics. Icinga defaults to false.
Class: icinga2::feature::livestatus
Enables or disables the livestatus
feature.
Parameters of icinga2::feature::livestatus
:
ensure
Either present
or absent
. Defines if the feature livestatus
should be enabled. Defaults to present
.
socket_type
Specifies the socket type. Can be either 'tcp' or 'unix'. Icinga defaults to 'unix'
bind_host
IP address to listen for connections. Only valid when socket_type is tcp
. Icinga defaults to 127.0.0.1
bind_port
Port to listen for connections. Only valid when socket_type is tcp
. Icinga defaults to 6558
socket_path
Specifies the path to the UNIX socket file. Only valid when socket_type is unix
. Default depends on platform:
- Linux:
/var/run/icinga2/cmd/livestatus
- Windows:
C:/ProgramData/icinga2/var/run/icinga2/cmd/livestatus
compat_log_path
Required for historical table queries. Requires CompatLogger
feature to be enabled. Default depends platform:
Linux: var/icinga2/log/icinga2/compat
Windows: C:/ProgramData/icinga2/var/log/icinga2/compat
Class: icinga2::feature::opentsdb
Enables or disables the opentsdb
feature.
Parameters of icinga2::feature::opentsdb
:
ensure
Either present
or absent
. Defines if the feature opentsdb
should be enabled. Defaults to present
.
host
OpenTSDB host address. Icinga defaults to 127.0.0.1
port
OpenTSDB port. Icinga defaults to 4242
enable_ha
Enable the high availability functionality. Only valid in a cluster setup. Icinga defaults to false.
Class: icinga2::feature::perfdata
Enables or disables the perfdata
feature.
Parameters of icinga2::feature::perfdata
:
ensure
Either present
or absent
. Defines if the feature perfdata
should be enabled. Defaults to present
.
host_perfdata_path
Absolute path to the perfdata file for hosts. Default depends on platform:
- Linux:
/var/spool/icinga2/host-perfdata
- Windows:
C:/ProgramData/icinga2/var/spool/icinga2/host-perfdata
service_perfdata_path
Absolute path to the perfdata file for services. Default depends on platform:
- Linux:
/var/spool/icinga2/service-perfdata
- Windows:
C:/ProgramData/icinga2/var/spool/icinga2/service-perfdata
host_temp_path
Path to the temporary host file. Defaults depends on platform:
- Linux:
/var/spool/icinga2/tmp/host-perfdata
- Windows:
C:/ProgramData/icinga2/var/spool/icinga2/tmp/host-perfdata
service_temp_path
Path to the temporary service file. Defaults depends on platform:
- Linux:
/var/spool/icinga2/tmp/host-perfdata
- Windows:
C:/ProgramData/icinga2/var/spool/icinga2/tmp/host-perfdata
host_format_template
Host Format template for the performance data file. Icinga defaults to a template that's suitable for use with PNP4Nagios.
service_format_template
Service Format template for the performance data file. Icinga defaults to a template that's suitable for use with PNP4Nagios.
rotation_interval
Rotation interval for the files specified in {host,service}_perfdata_path
. Can be written in minutes or seconds,
i.e. 1m
or 15s
. Icinga defaults to 30s
enable_ha
Enable the high availability functionality. Only valid in a cluster setup. Icinga defaults to false.
Class: icinga2::feature::statusdata
Enables or disables the statusdata
feature. The feature is deprecated and will be removed in Icinga 2 2.11.0.
Parameters of icinga2::feature::statusdata
:
ensure
Either present
or absent
. Defines if the feature statusdata
should be enabled. Defaults to present
.
status_path
Absolute path to the status.dat file. Defaults depend on platform:
- Linux:
/var/cache/icinga2/status.dat
- Windows:
C:/ProgramData/icinga2/var/cache/icinga2/status.dat
object_path
Absolute path to the object.cache file. Defaults depend on platform:
- Linux:
/var/cache/icinga2/object.cache
- Windows:
C:/ProgramData/icinga2/var/cache/icinga2/object.cache
update_interval
Interval in seconds to update both status files. You can also specify it in minutes with the letter m or in seconds
with s. Icinga defaults to 15s
Class: icinga2::feature::syslog
Enables or disables the syslog
feature.
Parameters of icinga2::feature::syslog
:
ensure
Either present
or absent
. Defines if the feature syslog
should be enabled. Defaults to present
.
severity
Set severity level for logging to syslog. Available options are:
information
notice
warning
(Icinga default)critical
debug
facility
Defines the facility to use for syslog entries. This can be a facility constant like FacilityDaemon. Available options are:
FacilityAuth
FacilityAuthPriv
FacilityCron
FacilityDaemon
FacilityFtp
FacilityKern
FacilityLocal0
FacilityLocal1
FacilityLocal2
FacilityLocal3
FacilityLocal4
FacilityLocal5
FacilityLocal6
FacilityLocal7
FacilityLpr
FacilityMail
FacilityNews
FacilitySyslog
FacilityUser
(Icinga default)FacilityUucp
Class: icinga2::feature::debuglog
Enables or disables the debuglog
feature.
Parameters of icinga2::feature::debuglog
:
ensure
Either present
or absent
. Defines if the feature debuglog
should be enabled. Defaults to present
.
path
Absolute path to the log file. Default depends on platform:
- Linux:
/var/log/icinga2/debug.log
- Windows:
C:/ProgramData/icinga2/var/log/icinga2/debug.log
Class: icinga2::feature::elasticsearch
Enables or disables the elasticsearch
feature.
Parameters of icinga2::feature::elasticsearch
:
ensure
Either present
or absent
. Defines if the feature elasticsearch
should be enabled. Defaults to present
.
host
Elasticsearch host address. Icinga defaults to 127.0.0.1
port
Elasticsearch HTTP port. Icinga defaults to 9200
index
Elasticsearch index name. Icinga defaults to icinga2
username
Elasticsearch user name.
password
Elasticsearch user password.
enable_ssl
Either enable or disable SSL. Other SSL parameters are only affected if this is set to true
. Defaults to false
.
ssl_ca_cert
CA certificate to validate the remote host.
ssl_cert
Host certificate to present to the remote host for mutual verification.
ssl_key
Host key to accompany the ssl_cert.
enable_send_perfdata
Whether to send check performance data metrics. Icinga defaults to false
.
flush_interval
How long to buffer data points before transferring to Elasticsearch. Icinga defaults to 10s
flush_threshold
How many data points to buffer before forcing a transfer to Elasticsearch. Icinga defaults to 1024
enable_ha
Enable the high availability functionality. Only valid in a cluster setup. Icinga defaults to false.
Class: icinga2::feature::gelf
Enables or disables the gelf
feature.
Parameters of icinga2::feature::gelf
:
ensure
Either present
or absent
. Defines if the feature gelf
should be enabled. Defaults to present
.
host
GELF receiver host address. Icinga defaults to 127.0.0.1
port
GELF receiver port. Icinga defaults to 12201
source
Source name for this instance. Icinga defaults to icinga2
enable_send_perfdata
Enable performance data for CHECK RESULT events. Icinga defaults to false
.
enable_ha
Enable the high availability functionality. Only valid in a cluster setup. Icinga defaults to false.
Class: icinga2::feature::influxdb
Enables or disables the influxdb
feature.
Parameters of icinga2::feature::influxdb
:
ensure
Either present
or absent
. Defines if the feature influxdb
should be enabled. Defaults to present
.
host
InfluxDB host address. Icinga defaults to 127.0.0.1
.
port
InfluxDB HTTP port. Icinga defaults to 8086
.
database
InfluxDB database name. Icinga defaults to icinga2
.
username
InfluxDB user name.
password
InfluxDB user password.
enable_ssl
Either enable or disable SSL. Other SSL parameters are only affected if this is set to true
. Icinga defaults to false
.
ssl_ca_cert
CA certificate to validate the remote host.
ssl_cert
Host certificate to present to the remote host for mutual verification.
ssl_key
Host key to accompany the ssl_cert.
host_measurement
The value of this is used for the measurement setting in host_template. Defaults to $host.check_command$
.
host_tags
Tags defined in this hash will be set in the host_template.
class { '::icinga2::feature::influxdb':
host_measurement => '$host.check_command$',
host_tags => { hostname => '$host.name$' },
}
service_measurement
The value of this is used for the measurement setting in host_template. Defaults to $service.check_command$
.
service_tags
Tags defined in this hash will be set in the service_template.
class { '::icinga2::feature::influxdb':
service_measurement => '$service.check_command$',
service_tags => { hostname => '$host.name$', service => '$service.name$' },
}
enable_send_thresholds
Whether to send warn, crit, min & max tagged data. Icinga defaults to false
.
enable_send_metadata
Whether to send check metadata e.g. states, execution time, latency etc. Icinga defaults to false
.
flush_interval
How long to buffer data points before transferring to InfluxDB. Icinga defaults to 10s
.
flush_threshold
How many data points to buffer before forcing a transfer to InfluxDB. Icinga defaults to 1024
.
enable_ha
Enable the high availability functionality. Only valid in a cluster setup. Icinga defaults to false.
Class: icinga2::feature::api
Enables or disables the api
feature.
Parameters of icinga2::feature::api
:
ensure
Either present
or absent
. Defines if the feature api
should be enabled. Defaults to present
.
pki
Provides multiple sources for the certificate and key.
puppet
Copies the key, cert and CA cert from the Puppet ssl directory to the Icinga cert directory.- Linux:
/var/lib/icinga2/certs
- Windows:
C:/ProgramData/icinga2/var/lib/icinga2/certs
- Linux:
icinga2
Uses the icinga2 CLI to generate a Certificate and Key The ticket is generated on the Puppet master by using the configured 'ticket_salt' in a custom function.none
Does nothing and you either have to manage the files yourself as file resources or use thessl_key
,ssl_cert
,ssl_cacert
parameters.
ssl_key
The private key in a base64 encoded string to store in cert directory. This parameter requires pki to be set to 'none'.
ssl_cert
The certificate in a base64 encoded string to store in cert directory This parameter requires pki to be set to 'none'.
ssl_cacert
The CA root certificate in a base64 encoded string to store in cert directory. This parameter requires pki to be set to 'none'.
ssl_crl
Optional location of the certificate revocation list.
accept_config
Accept zone configuration. Defaults to false
accept_commands
Accept remote commands. Defaults to false
max_anonymous_clients
Limit the number of anonymous client connections (not configured endpoints and signing requests).
ca_host
This host will be connected to request the certificate. Set this if you use the icinga2
pki.
ca_port
Port of the ca_host
. Defaults to 5665
fingerprint
Fingerprint of the CA host certificate for validation. Requires pki is set to icinga2
.
You can get the fingerprint via openssl x509 -noout -fingerprint -sha1 -inform pem -in [certificate-file.crt]
on your CA host.
ticket_salt
Salt to use for ticket generation. The salt is stored to api.conf if none
or ca
is chosen for pki
.
Defaults to constant TicketSalt
.
endpoints
Hash to configure endpoint objects. Defaults to { 'NodeName' => {} }
. NodeName
is a Icinga 2 constant.
zones
Hash to configure zone objects. Defaults to { 'ZoneName' => {'endpoints' => ['NodeName']} }
. ZoneName
and NodeName
are Icinga 2 constants.
ssl_protocolmin
Minimal TLS version to require. Default undef (e.g. TLSv1.2
)
ssl_handshake_timeout
TLS Handshake timeout. Icinga defaults to 10s.
ssl_cipher_list
List of allowed TLS ciphers, to fine tune encryption. Default undef (e.g. HIGH:MEDIUM:!aNULL:!MD5:!RC4
)
bind_host
The IP address the api listener will be bound to. (e.g. 0.0.0.0)
bind_port
The port the api listener will be bound to. (e.g. 5665)
access_control_allow_origin
Specifies an array of origin URLs that may access the API.
access_control_allow_credentials
Indicates whether or not the actual request can be made using credentials. Defaults to true
.
access_control_allow_headers
Used in response to a preflight request to indicate which HTTP headers can be used when making the actual request.
Defaults to Authorization
.
access_control_allow_methods
Used in response to a preflight request to indicate which HTTP methods can be used when making the actual request.
Defaults to GET, POST, PUT, DELETE
.
environment
Used as suffix in TLS SNI extension name; default from constant ApiEnvironment, which is empty.
Class: icinga2::feature::idopgsql
Enables or disables the ido-pgsql
feature.
Parameters of icinga2::feature::idopgsql
:
ensure
Either present
or absent
. Defines if the feature ido-pgsql
should be enabled. Defaults to present
.
host
PostgreSQL database host address. Defaults to localhost
.
port
PostgreSQL database port. Defaults to 5432
.
user
PostgreSQL database user with read/write permission to the icinga database. Icinga defaults to icinga
.
password
PostgreSQL database user's password.
database
PostgreSQL database name. Icinga defaults to icinga
table_prefix
PostgreSQL database table prefix. Icinga defaults to icinga_
import_schema
Whether to import the PostgreSQL schema or not. Defaults to false
Class: icinga2::feature::idomysql
Enables or disables the gelf
feature.
Parameters of icinga2::feature::idomysql
:
ensure
Either present
or absent
. Defines if the feature ido-mysql
should be enabled. Defaults to present
.
host
MySQL database host address. Icinga defaults to localhost
.
port
MySQL database port. Icinga defaults to 3306
.
socket_path
MySQL socket path.
user
MySQL database user with read/write permission to the icinga database. Icinga defaults to icinga
.
password
MySQL database user's password.
database
MySQL database name. Icinga defaults to icinga
.
enable_ssl
Either enable or disable SSL. Other SSL parameters are only affected if this is set to 'true'. Icinga defaults to 'false'.
ssl_key
MySQL SSL client key file path. Only valid if ssl is set to none
.
ssl_cert
MySQL SSL certificate file path. Only valid if ssl is set to none
.
ssl_ca
MySQL SSL certificate authority certificate file path. Only valid if ssl is set to none
.
ssl_capath
MySQL SSL trusted SSL CA certificates in PEM format directory path. Only valid if ssl is enabled.
ssl_cipher
MySQL SSL list of allowed ciphers. Only valid if ssl is enabled.
table_prefix
MySQL database table prefix. Icinga defaults to icinga_
.
instance_name
Unique identifier for the local Icinga 2 instance. Icinga defaults to default
.
instance_description
Description for the Icinga 2 instance.
enable_ha
Enable the high availability functionality. Only valid in a cluster setup. Icinga defaults to true
.
failover_timeout
Set the fail-over timeout in a HA cluster. Must not be lower than 60s. Icinga defaults to 60s
.
cleanup
Hash with items for historical table cleanup.
categories
Array of information types that should be written to the database.
import_schema
Whether to import the MySQL schema or not. Defaults to false
.
Class: icinga2::pki::ca
This class provides multiple ways to create the CA used by Icinga 2. By default it will create a CA by using the Icinga 2 CLI. If you want to use your own CA you will either have to transfer it by using a file resource or you can set the content of your certificate and key in this class.
Parameters of icinga2::pki::ca
:
ca_cert
Content of the CA certificate. If this is unset, a certificate will be generated with the Icinga 2 CLI.
ca_key
Content of the CA key. If this is unset, a key will be generated with the Icinga 2 CLI.
Private Classes
Class: icinga2::repo
Installs the packages.icinga.com repository. Depending on your operating system puppetlabs/apt or puppetlabs/chocolatey are required.
Class: icinga2::install
Handles the installation of the Icinga 2 package.
Class: icinga2::config
Installs basic configuration files required to run Icinga 2.
Class: icinga2::service
Starts/stops and enables/disables the service.
Public defined types
Defined type: icinga2::object::endpoint
ensure
Set to present enables the endpoint object, absent disables it. Defaults to present.
endpoint_name
Set the Icinga 2 name of the endpoint object. Defaults to title of the define resource.
host
Optional. The IP address of the remote Icinga 2 instance.
port
The service name/port of the remote Icinga 2 instance. Defaults to 5665.
log_duration
Duration for keeping replay logs on connection loss. Defaults to 1d
(86400 seconds). Attribute is specified in seconds.
If log_duration
is set to 0
, replaying logs is disabled. You could also specify the value in human readable format
like 10m
for 10 minutes or 1h
for one hour.
target
Destination config file to store in this object. File will be declared at the first time.
order
String or integer to set the position in the target file, sorted alpha numeric. Defaults to 40.
Defined type: icinga2::object::zone
ensure
Set to present enables the zone object, absent disables it. Defaults to present
zone_name
Set the name of the zone object. Defaults to the title of the define resource.
endpoints
List of endpoints that belong to this zone.
parent
Parent zone to this zone.
global
If set to true
, a global zone is defined and the parameter endpoints and parent are ignored. Defaults to false
.
target
Destination config file to store in this object. File will be declared at the first time.
order
String or integer to control the position in the target file, sorted alpha numeric. Defauts to 45.
Defined type: icinga2::object::apiuser
ensure
Set to present enables the apiuser object, absent disables it. Defaults to present.
apiuser_name
Set the name of the apiuser object. Defaults to title of the define resource.
password
Password string.
client_cn
Optional. Client Common Name (CN).
permissions
Array of permissions. Either as string or dictionary with the keys permission and filter. The latter must be specified as function.
target
Destination config file to store in this object. File will be declared at the first time.
order
String or integer to control the position in the target file, sorted alpha numeric. Defaults to 30.
Examples
permissions = [ "*" ]
permissions = [ "objects/query/Host", "objects/query/Service" ]
permissions = [
{
permission = "objects/query/Host"
filter = {{ regex("^Linux", host.vars.os) }}
},
{
permission = "objects/query/Service"
filter = {{ regex("^Linux", service.vars.os) }}
}
]
Defined type: icinga2::object::checkcommand
ensure
Set to present enables the checkcommand object, absent disables it. Defaults to present.
checkcommand_name
Title of the CheckCommand object.
import
Sorted List of templates to include. Defaults to an empty list.
command
The command. This can either be an array of individual command arguments. Alternatively a string can be specified in
which case the shell interpreter (usually /bin/sh) takes care of parsing the command. When using the arguments
attribute this must be an array. Can be specified as function for advanced implementations.
env
A dictionary of macros which should be exported as environment variables prior to executing the command.
vars
A dictionary containing custom attributes that are specific to this service, a string to do operations on this dictionary or an array for multiple use of custom attributes.
timeout
The command timeout in seconds. Defaults to 60
seconds.
arguments
A dictionary of command arguments.
target
Destination config file to store in this object. File will be declared the first time.
order
String or integer to set the position in the target file, sorted alpha numeric. Defaults to 15.
Defined type: icinga2::object::host
ensure
Set to present enables the host object, absent disables it. Defaults to present.
host_name
Hostname of the Host object.
import
Sorted List of templates to include. Defaults to an empty list.
display_name
A short description of the host (e.g. displayed by external interfaces instead of the name if set).
address
The host's address v4.
address6
The host's address v6.
vars
A dictionary containing custom attributes that are specific to this service, a string to do operations on this dictionary or an array for multiple use of custom attributes.
groups
A list of host groups this host belongs to.
check_command
The name of the check command.
max_check_attempts
The number of times a host is re-checked before changing into a hard state. Defaults to 3
check_period
The name of a time period which determines when this host should be checked. Not set by default.
check_timeout
Check command timeout in seconds. Overrides the CheckCommand's timeout attribute.
check_interval
The check interval (in seconds). This interval is used for checks when the host is in a HARD state. Defaults to 5
minutes.
retry_interval
The retry interval (in seconds). This interval is used for checks when the host is in a SOFT state. Defaults to 1
minute.
enable_notifications
Whether notifications are enabled. Defaults to true
enable_active_checks
Whether active checks are enabled. Defaults to true
enable_passive_checks
Whether passive checks are enabled. Defaults to true
enable_event_handle
Enables event handlers for this host. Defaults to true
enable_flapping
Whether flap detection is enabled. Defaults to false
enable_perfdata
Whether performance data processing is enabled. Defaults to true
event_command
The name of an event command that should be executed every time the host's state changes or the host is in a SOFT state.
flapping_threshold_low
Flapping lower bound in percent for a host to be considered not flapping. Icinga defaults to 25.0.
flapping_threshold_low
Flapping upper bound in percent for a host to be considered flapping. Icinga defaults to 30.0.
volatile
The volatile setting enables always HARD state types if NOT-OK state changes occur.
zone
The zone this object is a member of.
command_endpoint
The endpoint where commands are executed on.
notes
Notes for the host.
notes_url
Url for notes for the host (for example, in notification commands).
action_url
Url for actions for the host (for example, an external graphing tool).
icon_image
Icon image for the host. Used by external interfaces only.
icon_image_alt
Icon image description for the host. Used by external interface only.
template
Set to true creates a template instead of an object. Defaults to false
target
Destination config file to store in this object. File will be declared the first time.
order
String or integer to set the position in the target file, sorted alpha numeric. Defaults to 50.
Defined type: icinga2::object::hostgroup
ensure
Set to present enables the hostgroup object, absent disables it. Defaults to present.
display_name
A short description of the host group.
groups
An array of nested group names.
assign
Assign host group members using the group assign rules.
target
Destination config file to store in this object. File will be declared at the first time.
order
String or integer to set the position in the target file, sorted alpha numeric. Defaults to 55.
Defined type: icinga2::object::dependency
ensure
Set to present enables the dependency object, absent disabled it. Defaults to present
dependency_name
Set the Icinga 2 name of the dependency object. Defaults to title
of the define resource.
parent_host_name
The parent host.
parent_service_name
The parent service. If omitted, this dependency object is treated as host dependency.
child_host_name
The child host.
child_service_name
The child service. If omitted, this dependency object is treated as host dependency.
disable_checks
Whether to disable checks when this dependency fails. Defaults to false
disable_notifications
Whether to disable notifications when this dependency fails. Defaults to true
ignore_soft_states
Whether to ignore soft states for the reachability calculation. Defaults to true
period
Time period during which this dependency is enabled.
states
A list of state filters when this dependency should be OK. Defaults to [ OK, Warning ] for services and [ Up ] for hosts.
apply
Dispose an apply instead an object if set to 'true'. Value is taken as statement, i.e. 'vhost => config in host.vars.vhosts'. Defaults to false.
prefix
Set dependency_name as prefix in front of 'apply for'. Only effects if apply is a string. Defaults to false.
apply_target
An object type on which to target the apply rule. Valid values are Host
and Service
. Defaults to Host
.
assign
Assign user group members using the group assign rules.
ignore
Exclude users using the group ignore rules.
template
Set to true creates a template instead of an object. Defaults to false
import
Sorted List of templates to include. Defaults to an empty list.
target
Destination config file to store in this object. File will be declared the first time.
order
String or integer to set the position in the target file, sorted alpha numeric. Defaults to 70.
Defined type: icinga2::object::timeperiod
ensure
Set to present enables the timeperiod object, absent disabled it. Defaults to present
timeperiod_name
Set the Icinga 2 name of the timeperiod object. Defaults to title
of the define resource.
display_name
A short description of the time period.
import
Sorted List of templates to include. Defaults to [ "legacy-timeperiod" ].
ranges
A dictionary containing information which days and durations apply to this timeperiod.
prefer_includes
Boolean whether to prefer timeperiods includes or excludes. Default to true
excludes
An array of timeperiods, which should exclude from your timerange.
includes
An array of timeperiods, which should include into your timerange
template
Set to true creates a template instead of an object. Defaults to false
target
Destination config file to store this object in. File will be declared on the first run.
order
String or integer to control the position in the target file, sorted alpha numeric. Defaults to 35.
Defined type: icinga2::object::usergroup
ensure
Set to present enables the usergroup object, absent disables it. Defaults to present
usergroup_name
Set the Icinga 2 name of the usergroup object. Defaults to title
of the define resource.
user_name
Set the Icinga 2 name of the user object. Defaults to title of the define resource.
display_name
A short description of the service group.
groups
An array of nested group names.
assign
Assign user group members using the group assign rules.
ignore
Exclude users using the group ignore rules.
template
Set to true creates a template instead of an object. Defaults to false
import
Sorted List of templates to include. Defaults to an empty list.
target
Destination config file to store in this object. File will be declared the first time.
order
String or integer to set the position in the target file, sorted alpha numeric. Defaults to 80.
Defined type: icinga2::object::user
ensure
Set to present enables the user object, absent disables it. Defaults to present
display_name
A short description of the user.
email
An email string for this user. Useful for notification commands.
pager
A pager string for this user. Useful for notification commands.
vars
A dictionary containing custom attributes that are specific to this service, a string to do operations on this dictionary or an array for multiple use of custom attributes.
groups
An array of group names.
enable_notifications
Whether notifications are enabled for this user.
period
The name of a time period which determines when a notification for this user should be triggered. Not set by default.
types
A set of type filters when this notification should be triggered. By default everything is matched.
states
A set of state filters when this notification should be triggered. By default everything is matched.
template
Set to true creates a template instead of an object. Defaults to false
import
Sorted List of templates to include. Defaults to an empty list.
target
Destination config file to store in this object. File will be declared the first time.
order
String or integer to set the position in the target file, sorted alpha numeric. Defaults to 75.
Defined type: icinga2::object::notificationcommand
ensure
Set to present enables the notificationcommand object, absent disabled it. Defaults to present.
notificationcommand_name
Set the Icinga 2 name of the notificationcommand object. Defaults to title
of the define resource.
execute
The "execute" script method takes care of executing the notification. The default template "plugin-notification-command" which is imported into all CheckCommand objects takes care of this setting.
command
The command. This can either be an array of individual command arguments. Alternatively a string can be specified in which case the shell interpreter (usually /bin/sh) takes care of parsing the command.
env
A dictionary of macros which should be exported as environment variables prior to executing the command.
vars
A dictionary containing custom attributes that are specific to this service, a string to do operations on this dictionary or an array for multiple use of custom attributes.
timeout
The command timeout in seconds. Defaults to 60
seconds.
arguments
A dictionary of command arguments.
template
Set to true creates a template instead of an object. Defaults to false
import
Sorted List of templates to include. Defaults to an empty list.
target
Destination config file to store in this object. File will be declared the first time.
order
String or integer to set the position in the target file, sorted alpha numeric. Defaults to 25.
Defined type: icinga2::object::notification
ensure
Set to present enables the notification object, absent disables it. Defaults to present
notification_name
Set the Icinga 2 name of the notification object. Defaults to title
of the define resource.
host_name
The name of the host this notification belongs to.
service_name
The short name of the service this notification belongs to. If omitted, this notification object is treated as host notification.
vars
A dictionary containing custom attributes that are specific to this service, a string to do operations on this dictionary or an array for multiple use of custom attributes.
users
A list of user names who should be notified.
user_groups
A list of user group names who should be notified.
times
A dictionary containing begin and end attributes for the notification.
command
The name of the notification command which should be executed when the notification is triggered.
interval
The notification interval (in seconds). This interval is used for active notifications. Defaults to 30
minutes. If set
to 0, re-notifications are disabled.
period
The name of a time period which determines when this notification should be triggered. Not set by default.
zone
The zone this object is a member of.
types
A list of type filters when this notification should be triggered. By default everything is matched.
states
A list of state filters when this notification should be triggered. By default everything is matched.
apply
Dispose an apply instead an object if set to 'true'. Value is taken as statement, i.e. 'vhost => config in host.vars.vhosts'. Defaults to false.
prefix
Set notification_name as prefix in front of 'apply for'. Only effects if apply is a string. Defaults to false.
apply_target
An object type on which to target the apply rule. Valid values are Host
and Service
. Defaults to Host
.
template
Set to true creates a template instead of an object. Defaults to false
import
Sorted List of templates to include. Defaults to an empty list.
target
Destination config file to store in this object. File will be declared the first time.
order
String or integer to set the position in the target file, sorted alpha numeric. Defaults to 85.
Defined type: icinga2::object::service
ensure
Set to present enables the service object, absent disables it. Defaults to present
service_name
Set the Icinga 2 name of the service object. Defaults to title
of the define resource.
display_name
A short description of the service.
host_name
The host this service belongs to. There must be a Host object with that name.
name
The service name. Must be unique on a per-host basis (Similar to the service_description attribute in Icinga 1.x).
groups
The service groups this service belongs to.
vars
A dictionary containing custom attributes that are specific to this service, a string to do operations on this dictionary or an array for multiple use of custom attributes.
check_command
The name of the check command.
max_check_attempts
The number of times a service is re-checked before changing into a hard state. Defaults to 3
check_period
The name of a time period which determines when this service should be checked. Not set by default.
check_timeout
Check command timeout in seconds. Overrides the CheckCommand's timeout attribute.
check_interval
The check interval (in seconds). This interval is used for checks when the service is in a HARD state.
Defaults to 5
minutes.
retry_interval
The retry interval (in seconds). This interval is used for checks when the service is in a SOFT state.
Defaults to 1
minute.
enable_notifications
Whether notifications are enabled. Defaults to true
enable_active_checks
Whether active checks are enabled. Defaults to true
enable_passive_checks
Whether passive checks are enabled. Defaults to true
enable_event_handler
Enables event handlers for this host. Defaults to true
enable_flapping
Whether flap detection is enabled. Defaults to false
enable_perfdata
Whether performance data processing is enabled. Defaults to true
event_command
The name of an event command that should be executed every time the service's state changes or the service is in a SOFT state.
flapping_threshold_low
Flapping lower bound in percent for a host to be considered not flapping. Icinga defaults to 25.0.
flapping_threshold_low
Flapping upper bound in percent for a host to be considered flapping. Icinga defaults to 30.0.
volatile
The volatile setting enables always HARD state types if NOT-OK state changes occur.
zone
The zone this object is a member of.
command_endpoint
The endpoint where commands are executed on.
notes
Notes for the service.
notes_url
Url for notes for the service (for example, in notification commands).
action_url
Url for actions for the service (for example, an external graphing tool).
icon_image
Icon image for the service. Used by external interfaces only.
icon_image_alt
Icon image description for the service. Used by external interface only.
apply
Dispose an apply instead an object if set to 'true'. Value is taken as statement, i.e. 'vhost => config in host.vars.vhosts'. Defaults to false.
prefix
Set service_name as prefix in front of 'apply for'. Only effects if apply is a string. Defaults to false.
assign
Assign user group members using the group assign rules.
ignore
Exclude users using the group ignore rules.
template
Set to true creates a template instead of an object. Defaults to false
import
Sorted List of templates to include. Defaults to an empty list.
target
Destination config file to store in this object. File will be declared the first time.
order
String or integer to set the position in the target file, sorted alpha numeric. Defaults to 60.
Defined type: icinga2::object::servicegroup
ensure
Set to present enables the servicegroup object, absent disables it. Defaults to present
servicegroup_name
Set the Icinga 2 name of the servicegroup object. Defaults to title
of the define resource.
display_name
A short description of the service group.
groups
An array of nested group names.
assign
Assign user group members using the group assign rules.
ignore
Exclude users using the group ignore rules.
template
Set to true creates a template instead of an object. Defaults to false
import
Sorted List of templates to include. Defaults to an empty list.
target
Destination config file to store in this object. File will be declared the first time.
order
String or integer to set the position in the target file, sorted alpha numeric. Defaults to 55.
Defined type: icinga2::object::scheduleddowntime
ensure
Set to present enables the scheduleddowntime object, absent disables it. Defaults to present
scheduleddowntime_name
Set the Icinga 2 name of the scheduleddowntime object. Defaults to title
of the define resource.
host_name
The name of the host this comment belongs to.
service_name
The short name of the service this comment belongs to. If omitted, this comment object is treated as host comment.
author
The author's name.
comment
The comment text.
fixed
Whether this is a fixed downtime. Defaults to true
duration
The duration as number.
ranges
A dictionary containing information which days and durations apply to this timeperiod.
apply
Dispose an apply instead an object if set to 'true'. Value is taken as statement, i.e. 'vhost => config in host.vars.vhosts'. Defaults to false.
prefix
Set scheduleddowntime_name as prefix in front of 'apply for'. Only effects if apply is a string. Defaults to false.
apply_target
An object type on which to target the apply rule. Valid values are Host
and Service
. Defaults to Host
.
assign
Assign user group members using the group assign rules.
ignore
Exclude users using the group ignore rules.
target
Destination config file to store in this object. File will be declared the first time.
order
String or integer to set the position in the target file, sorted alpha numeric. Defaults to 90.
Defined type: icinga2::object::eventcommand
ensure
Set to present enables the eventcommand object, absent disables it. Defaults to present
eventcommand_name
Set the Icinga 2 name of the eventcommand object. Defaults to title
of the define resource.
execute
The "execute" script method takes care of executing the event handler. In virtually all cases you should import the "plugin-event-command" template to take care of this setting.
command
The command. This can either be an array of individual command arguments. Alternatively a string can be specified in which case the shell interpreter (usually /bin/sh) takes care of parsing the command.
env
A dictionary of macros which should be exported as environment variables prior to executing the command.
vars
A dictionary containing custom attributes that are specific to this service, a string to do operations on this dictionary or an array for multiple use of custom attributes.
timeout
The command timeout in seconds. Defaults to 60 seconds.
arguments
A dictionary of command arguments.
target
Destination config file to store in this object. File will be declared the first time.
import
Sorted List of templates to include. Defaults to an empty list.
order
String or integer to set the position in the target file, sorted alpha numeric. Defaults to 20.
Defined type: icinga2::object::checkresultreader
ensure
Set to present enables the checkresultreader object, absent disables it. Defaults to present
checkresultreader_name
Set the Icinga 2 name of the checkresultreader object. Defaults to title
of the define resource.
spool_dir
The directory which contains the check result files. Defaults to LocalStateDir + "/lib/icinga2/spool/checkresults/"
target
Destination config file to store in this object. File will be declared the first time.
order
String or integer to set the position in the target file, sorted alpha numeric. Defaults to 05
.
Private defined types
Defined type: icinga2::feature
This defined type is used by all feature defined types as basis. It can generally enable or disable features.
Parameters of icinga2::feature
:
ensure
Either present
or absent
. Defines if the feature should be enabled. Defaults to present
.
feature
Name of the feature. This name is used for the corresponding configuration file.
Defined type: icinga2::object
This defined type is used by all object defined types as bases. In can generally create Icinga 2 objects.
ensure
Set to present enables the object, absent disabled it. Defaults to present.
object_name
Set the icinga2 name of the object. Defaults to title of the define resource.
template
Set to true will define a template otherwise an object. Defaults to false.
apply
Dispose an apply instead an object if set to 'true'. Value is taken as statement, i.e. 'vhost => config in host.vars.vhosts'. Defaults to false.
apply_target
Optional fo an object type on which to target the apply rule. Valid values are Host
and Service
. Defaults to Host
.
import
A sorted list of templates to import in this object. Defaults to an empty array.
attrs
Hash for the attributes of this object. Keys are the attributes and values are there values. Defaults to an empty Hash.
object_type
Icinga 2 object type for this object.
target
Destination config file to store in this object. File will be declared the first time.
order
String or integer to set the position in the target file, sorted alpha numeric. Defaults to 10.
Development
A roadmap of this project is located at https://github.com/Icinga/puppet-icinga2/milestones. Please consider this roadmap when you start contributing to the project.
Contributing
When contributing several steps such as pull requests and proper testing implementations are required. Find a detailed step by step guide in CONTRIBUTING.md.
Testing
Testing is essential in our workflow to ensure a good quality. We use RSpec as well as Serverspec to test all components of this module. For a detailed description see TESTING.md.
Release Notes
When releasing new versions we refer to SemVer 1.0.0 for version numbers. All steps required when creating a new release are described in RELEASE.md
See also CHANGELOG.md
Authors
AUTHORS is generated on each release.
Change Log
v2.3.0 (2019-07-26)
Implemented enhancements:
- Add new attributes to feature api #581
- Add new constants and keywords #579
- Add info of new constant MaxConcurrentChecks to feature checker #578
- New HA-aware Features #576
Fixed bugs:
- Remove OpenBSD from official support list #583
- Add missed flapping attributes to objects host and service #580
v2.2.0 (2019-07-14)
Implemented enhancements:
- Remove deprecated data_provider #568
- Convert to pdk #528
- add new type for custom attributes to support also arrays #574 (lbetz)
- add feature to merge arrays and hashes by the parser #573 (lbetz)
- Extent parser to build += assignments #569 (lbetz)
- Add constants for Gentoo AMD64 #567 (ekohl)
- convert module to PDK #564 (SimonHoenscheid)
Fixed bugs:
- Downgrade restore of vars #575
- Pin versions for travis of required puppet modules for puppet 4 #570
- fix #570 Pin versions for travis of required puppet modules for puppet #571 (lbetz)
- Fix Puppet4 build #565 (SimonHoenscheid)
Closed issues:
- Allow to specify both vars + config as custom vars using hash #566
v2.1.1 (2019-05-24)
Implemented enhancements:
- Rework travis batch and enable check for puppet 6 #560
Fixed bugs:
- Fix and update TESTING documentation #561
- Set default of all optional parameters in globals to undef #559
- Fact kernel on windows has to be lower case #556
- Fix some lint issues in api, idomysql, globals #553
- Fix tests for Puppet 6 #550
- Fix spec tests of icinga objects #549
- Fix spec tests for class pki #548
- Fix spec tests for feature idopgsql #547
- Fix spec tests for feature idomysql #546
- Fix spec test of feature api #545
- fix typo in README.md #544 (bastelfreak)
Closed issues:
- Icinga2 custom config dir (not /etc/...) #543
v2.1.0 (2019-04-30)
Implemented enhancements:
- The puppet module does not validate the master's X.509 certificate #360
- Set the object file owner to root #533 (ekohl)
Fixed bugs:
- Path on Windows does not work #542
- Documentation of default values for InfluxWriter is outdated #537
- The puppet module does not validate the master's X.509 certificate #360
Closed issues:
- Windows service permissions and update-windows check #449
v2.0.2 (2019-03-14)
Implemented enhancements:
Fixed bugs:
- Unable to define endpoint with custom port number #530
Closed issues:
- Failed to apply catalog: One or more resource dependency cycles #536
- icinga2 pki request does not invoke JSON RPC request #531
Merged pull requests:
v2.0.1 (2019-02-12)
Fixed bugs:
- Syntax error custom data type logfacility #527
v2.0.0 (2019-02-12)
Implemented enhancements:
- Set default of host to localhost for feature idopgsql #526
- Add an example for idomysql via SSL #524
- Add some custom data types #521
- Remove repos info to data in module hiera #519
- Puppet 6 Support #505
- API change to icinga2 CA as default #495
- Path to key, cert and cacert are not configurable anymore #493
- Move to module data #490
- Remove define resource compatlogger #488
- Rework rspec tests #486
- Remove include of params from object class #485
- Change location of the CA and the cert #484
- Change storing of certificate for influxdb feature #483
- Change storing of certificate for elasticsearch feature #482
- Remove management of repository.d in install.pp #479
- Default of parameter import of icinga2::object::notificationcommand is outdated #478
- Rework dependency list of modules #476
- Remove default apply_target from service object #475
- Default of parameter import of icinga2::object::eventcommand is outdated #468
- Default of parameter import of icinga2::object::checkcommand is outdated #467
- Rework param data types of icinga2::feature::syslog #465
- Rework param data types of icinga2::feature::statusdata #464
- Rework param data types of icinga2::feature::perfdata #463
- Rework param data types of icinga2::feature::opentsdb #462
- Rework param data types of icinga2::feature::livestatus #461
- Rework param data types of icinga2::feature::influxdb #460
- Rework param data types of icinga2::feature::idopgsql #459
- Rework param data types of icinga2::feature::idomysql #458
- Rework param data types of icinga2::feature::graphite #457
- Rework param datatypes of icinga2::feature::gelf #456
- Rework param data types of icinga2::feature::elasticsearch #455
- Rework param datatype of icinga2::feature::compatlog #454
- Rework param data types of icinga2::feature::api #453
- Remove icinga2::pki::ca #452
- Add crl_path to feature api #432
- Import IDO DB schema for mysql over SSL isn't supported #414
- Updated to support puppetlabs/chocolatey 3.0.0? #363
- Use beaker for acceptence tests and replace boxes with bento #356
- Separate unit tests for functions #355
- Add IDO PostreSQL integration tests #278
- Replace deprecated stdlib functions #275
- Add elasticsearch feature #418 (dnsmichi)
Fixed bugs:
- Cannot use localhost as host in feature idomysql #525
- IdoMysqlConnection: Optional parameters are forced by module #523
- ElasticsearchWriter: Optional parameters are forced by module #522
- fix unit test functions/attributes_spec.rb #517
- rework unit test for objects_spec.rb #516
- pki::ca require dependency to config class #498
- Unknown variable _ssl_key #497
- Unknown variable ido_mysql_package on debian #496
- InfluxWriter: Optional parameters are forced by module #491
- Duplicate key HOSTDISPLAYNAME in example_config.pp #480
- Attribute vars of all object types can be also a string #474
- Attribute vars of object type service can be also a string #473
- Parameter prefix of icinga2::object::service is not a boolean only #472
- Parameter prefix of icinga2::object::notification is not a boolean only #470
- Parameter host_name icinga2::object::host is not optional #469
- Debian 9/Stretch support #466
- Parameter order of concat resource has to be a string #451
- Incorrect example for icinga2::object::apiuser #448
- Using a reference to icinga variable in icinga2::object::notification $interval #443
- Replace gpgkey handling for suse #397
- Fix syntax error #487 (paladox)
Closed issues:
- Create vars.foo["bar"] objects in Hiera #520
- OS facts clutter with recent ruby versions in spec tests #518
- Evaluation Error: Error while evaluating a Function Call, Class[Icinga2::Globals]: #504
- Incomplete list of supported operatingssystems #501
- Missing documentation of class icinga::globals #494
- Deprecated features in 2.9: statusdata & compatlog #481
Merged pull requests:
- example of check_mysql and check_mysql_health #387 (rowanruseler)
- Replace validate_* with data types #350 (baurmatt)
v1.4.0 (2019-01-18)
Implemented enhancements:
- Feature Request: Allow to pass ticket_id to API Feature #512
- New parameter 'ticket_id' for API feature #514 (benningm)
- Facility configuration for Syslog + New severity for syslog #502 (liveder)
- Add multiline support for lambda functions and unparsed strings. #422 (n00by)
Fixed bugs:
- Fix init_spec test #515
- Problem with ownership NETWORK on non-english Windows #511
- API configuration on Windows systems #510
- Allow dots in data structures of object attributes #509
- Some comments when using on Windows #499
- Windows : owner and group #437
- Quote and escape string values correctly #471 (marcofl)
- Depend on Apt::Update instead of Apt::Source #446 (jkroepke)
Merged pull requests:
- Fixed markup error in Readme.md #508 (dagobert)
- Quoting mistake in doc #507 (dagobert)
- Fixed requirements #506 (dagobert)
v1.3.7 (2018-11-29)
Fixed bugs:
Closed issues:
- Missing of if else functionality in serviceconfiguration as icinga2 would normally allow #444
- Is there a way to purge exported resources? #442
- overriding thresholds of individual disks #428
v1.3.6 (2018-04-25)
Implemented enhancements:
- Add support for SLC6 Linux #441 (HristoMohamed)
- Support manage_repo on XenServer #436 (jcharaoui)
Fixed bugs:
- Changes on concat resource for objects does not trigger a refresh on puppet3 #434
- don't quote null #433
Closed issues:
- Using apply in a service causes service_name not to be applied to service leading to duplicate resource issues #429
- Applying services to hostgroups #427
Merged pull requests:
v1.3.5 (2018-01-24)
Implemented enhancements:
- icinga2 binary is wrong on rhel5 #409
- Add feature Elasticsearch #408
- Add feature elasticsearch #399
- Added cloudlinux to supported operating systems. Is nearly identical … #424 (Koma-Andrea)
Fixed bugs:
- Setting up icinga2 with a different port than default for idodb leads to an error #411
- fix #411 Setting up Icinga 2 with a different port than default for i… #413 (lbetz)
- fix for repository.d directory on master-systems #412 (matthiasritter)
Closed issues:
- escaping broken with double quotes? #416
- Icinga resource doesn't create ca directory and required files #415
- icinga2 option generates self signed certificates that are rejected by master #405
- manage repo trough proxy #394
Merged pull requests:
- trivial copy edits #420 (wkalt)
- Fix confd example path #417 (dnsmichi)
- fix #409 icinga2 binary is wrong on rhel5 #410 (lbetz)
v1.3.4 (2017-11-22)
Fixed bugs:
- repository.d missing after install #403
- Boolean 'false' custom variables do not appear in configuration #400
- $bin_dir path incorrect for FreeBSD in params.pp #396
Closed issues:
- missing /etc/pki directory #393
Merged pull requests:
- fix #400 boolean false custom variables do not appear in configuration #406 (lbetz)
- Bug/repository.d missing after install 403 #404 (lbetz)
- fix #396 incorrect bin_dir path for FreeBSD #401 (lbetz)
v1.3.3 (2017-10-24)
Fixed bugs:
- Icinga2 binary not found on Redhat/Centos 6 family #390
Merged pull requests:
v1.3.2 (2017-10-11)
Fixed bugs:
- SLES should use service pack repository #386
Closed issues:
- Update docs how to pass package version #388
v1.3.1 (2017-10-05)
Implemented enhancements:
- Fix small typos #358
- Review and update puppetlabs-concat dependency #351
- Documentation to set up mysql grants is incorrect. #347
- Check attributes of all objects #219
- Align documentation for duplicate repository #353
- Update documentation about += operator #352
- Example and documentation for syncing hiera data to icinga objects #342
- Add owner-, groupship and permissions to file resources #291
- Support Puppet 5 and test it in travis #330 (lazyfrosch)
Fixed bugs:
- Error: Could not find command 'icinga2' on SLES-11 #374
- When passing non-fqdn name for the NodeName the certificate is still generated with cn set to fqdn #328
- Install package before creating config files #378
- Icinga2 binary not found on Debian and FreeBSD #371
- Could not find command Icinga2 on windows #367
- Error: Parameter user failed on Exec[icinga2 pki create key]: Unable to execute commands as other users on Windows at manifestsfeature/api.pp:317 #366
- Unit tests broken for facter 2.5 #338
- protection of private classes is wrong #333
- ticketsalt only should be stored on ca nodes #325
- key and cert permissions on windows #282
Closed issues:
- Implement conditional statements/loops parameter for icinga2::object::* #354
- document manage_package with manage_repo #381
Merged pull requests:
- Remove soft depedencies from metadata.json #385 (noqqe)
- fix #378 install package before creating config files #380 (lbetz)
- fix #371, add binary path to icinga2 for Debian, SuSE and FreeBSD #372 (lbetz)
- fix #325, ticket_salt ist stored to api.conf only if pki = none|ca #370 (lbetz)
- fix #367, #366 and remove management of conf_dir #369 (lbetz)
- Examples: Fix notification commands for 2.7 #368 (dnsmichi)
- Fixed typos #357 (rgevaert)
- fix #338 update facterdb dependency to 0.3.12 #349 (lbetz)
- Update protection of private classes from direct use #336 (lbetz)
- Fix dependency issues with apt repository #334 (baurmatt)
- Update documentation examples for mysql::db #346 (rgevaert)
v1.3.0 (2017-06-26)
Implemented enhancements:
- README.md: clarify meaning of
confd=\>true
#314 (sourcejedi)
Fixed bugs:
- PR #293 does not work correctly #304
- fix certname in api and pki::ca class to constant NodeName #319
- ordering-api-with-pki-after-package #311
- Only last empty hash is stored #308
- module requirements broken. #305
- ido-mysql install fails while using official icinga packages #302
- concat resource with tag does not trigger a refresh #300
- ido packages are managed before repository #299
- RSpec Puppetlabs modules incompatible to Puppet 3 #286
- Disable feature checker doesn't trigger a refresh #285
- SLES Lib directory is not architecture specific #283
- Fix examples/init_confd.pp #313 (sourcejedi)
- README.md: fix typo
notifiy
#312 (sourcejedi) - debian::dbconfig: Move to autoload location and lint it #322 (lazyfrosch)
Merged pull requests:
- Update checker.pp, arrow alignment #316 (rowanruseler)
- Update fragment.pp #315 (rowanruseler)
- Add GitHub issue template #310 (dnsmichi)
- Specify older fixtures for Puppet 3 tests #287 (lazyfrosch)
- Update SLES lib directory #284 (dgoetz)
- Replace darin/zypprepo with puppet/zypprepo #306 (noqqe)
- Remove deprecated apt options #293 (jkroepke)
v1.2.1 (2017-04-12)
Implemented enhancements:
- Create integration tests for MySQL IDO feature #207
- Add condition to be sure that icinga2 base class is parsed first #280
- Remove checker feature from examples for agents #279
- Remove sles-12 reference from Gemfile #274
- Add tests for custom facts #273
- Create integration tests for API feature #206
Fixed bugs:
- Fix schema import for FreeBSD #277
- Fix ::icinga2::pki::ca for FreeBSD #276
- Fix arrow_on_right_operand_line lint #272
- case statement without default in feature api #266
- case statement without default in idomysql feature #265
- case statement without default in influx feature #264
- Fix strings containing only a variable #263
- Replace selectors inside resource blocks #262
Merged pull requests:
- fix time periods example #271 (deric)
- Update icingamaster.yaml because yaml-lint failes #270 (matthiasritter)
v1.2.0 (2017-03-16)
Implemented enhancements:
- Add concurrent check parameter to checker object #260
- use a tag to disable parsing for a single attribute value #254
- replace service restart with reload #250
- Update docs of example4 with hint for Puppet 4 #234
- Add service name to service apply loops #227
Fixed bugs:
- consider-type-of-attribute #256
v1.1.1 (2017-03-08)
Implemented enhancements:
- add example of the whole example config #252
- enable_ha for notification feature #242
- Enhance docs on how to enable and use features #235
Fixed bugs:
- set groups default to undef for object servicegroup #251
- hash key with empty hash as value is parsed wrong #247
- attribute keys are missed for parsing #246
- Create signed certificate with custom CA #239
- Can't pass function via variable #238
- ido schema import dependency #237
- Using pki => "ca" can either cause incomplete deps or circular reference #236
Closed issues:
- Can't enable feature::idomysql without importing schema #241
Merged pull requests:
v1.1.0 (2017-02-20)
Implemented enhancements:
- Deploy to puppet forge via travis #43
Fixed bugs:
- Parse issue when attribute is a nested hash with an array value #223
- icinga2 feature api fails when pki=icinga2 and ca is the local node #218
- Error installing module from forge for non r10k users #217
- Apply Notification "users" and "user_groups" as variable #208
Merged pull requests:
- Fix parse issues when attribute is a nested hash with an array value #225 (lbetz)
- Remove Puppet 4 Warning - delete :undef symbols in attr hash #222 (Reamer)
- Allow other time units in notification and scheduleddowntime #220 (jkroepke)
- Add initial FreeBSD support #210 (xaque208)
v1.0.2 (2017-01-24)
Implemented enhancements:
- Add Oracle Linux Support #216
Fixed bugs:
Merged pull requests:
- Revert "Merge branch 'feature/workaround-for-puppetdb-14031'" #215 (bobapple)
- travis: Enable deploy to Puppetforge #213 (lazyfrosch)
- Add support for OracleLinux #200 (TwizzyDizzy)
v1.0.1 (2017-01-19)
Implemented enhancements:
- [dev.icinga.com #14031] Workaround for PuppetDB #198
- [dev.icinga.com #13923] Remove 'Icinga Development Team' as single author from header #197
- [dev.icinga.com #13921] Add alternative example of exported resources #196
- [dev.icinga.com #12659] Upload module to Puppet Forge #100
- Fix Puppet version requirement in metadata.json #205
Merged pull requests:
- Improve wording for a few parts of the README.md file #201 (gunnarbeutner)
- Extended example 3 README to mention Puppet parser bug #45 (kwisatz)
- Improving README #44 (lazyfrosch)
v0.8.1 (2017-01-11)
Fixed bugs:
- [dev.icinga.com #13919] Fix imports object template #195
- [dev.icinga.com #13917] Remove hash validation of vars attribut #194
Merged pull requests:
- Parallelisation problems with Travis on Ruby 2.1 #42 (lazyfrosch)
v0.8.0 (2017-01-04)
Implemented enhancements:
- [dev.icinga.com #13875] Add TLS options for api feature #191
- [dev.icinga.com #13873] Get fixtures for specs from Puppet Forge #190
- [dev.icinga.com #13501] Add support for Parallel Spec Tests #156
Fixed bugs:
- [dev.icinga.com #13877] Fix SUSE repo #192
- [dev.icinga.com #13871] Remove json, json_pure dependency for Ruby >= 2 #189
- [dev.icinga.com #13867] Travis-CI test with Puppet \< 4 #188
- [dev.icinga.com #13863] Make puppet lint happy #187
- [dev.icinga.com #13799] change attribute checkcommand to checkcommand_name in object checkcommand #176
- [dev.icinga.com #13797] change attribute apiuser to apiuser_name in object apiuser #175
- [dev.icinga.com #13795] change attribute zone to zone_name in object zone #174
- [dev.icinga.com #13793] change attribute endpoint to endpoint_name in object endpoint #173
- [dev.icinga.com #13791] change attribute hostname to host_name in object host #172
Merged pull requests:
- feature/api: Add TLS detail settings #41 (lazyfrosch)
- Rakefile: Add and enable parallel_spec by default #40 (lazyfrosch)
- Make Puppet Lint happy #37 (lazyfrosch)
- Enabling Travis CI #36 (lazyfrosch)
v0.7.2 (2017-01-02)
Implemented enhancements:
- [dev.icinga.com #13333] Support collecting exported zones and endpoints #152
- [dev.icinga.com #13835] Added an example that uses exported resources #186
Fixed bugs:
- [dev.icinga.com #13779] add attribute notificationcommand_name to object notificationcommand #166
- [dev.icinga.com #13833] Add possibility to set command parameter as String. #185
- [dev.icinga.com #13831] fix target as undef in several objects #184
- [dev.icinga.com #13829] fix target as undef in several objects #183
Merged pull requests:
- Added an example that uses exported resources to create a master-agent set-up using exported resources. #32 (kwisatz)
v0.7.1 (2016-12-28)
Fixed bugs:
- [dev.icinga.com #13821] fix feature debuglog #182
- [dev.icinga.com #13819] fix object checkcommand #181
- [dev.icinga.com #13817] fix feature mainlog #180
- [dev.icinga.com #13815] add attribute notificationcommand_name to object notificationcommand #179
- [dev.icinga.com #13803] fix documentation of all objects #178
- [dev.icinga.com #13801] change title of concat_fragment in object to title #177
- [dev.icinga.com #13789] add attribute usergroup_name to object usergroup #171
- [dev.icinga.com #13787] add attribute user_name to object user #170
- [dev.icinga.com #13785] add attribute timeperiod_name to object timeperiod #169
- [dev.icinga.com #13783] add attribute servicegroup_name to object servicegroup #168
- [dev.icinga.com #13781] add attribute scheduleddowntime_name to object scheduleddowntime #167
- [dev.icinga.com #13777] add attribute notification_name to object notification #165
- [dev.icinga.com #13775] add attribute eventcommand_name to object eventcommand #164
- [dev.icinga.com #13773] add attribute dependency_name to object dependency #163
- [dev.icinga.com #13771] add attribute compatlogger_name to object compatlogger #162
- [dev.icinga.com #13769] add attribute checkresultreader_name to object checkresultreader #161
- [dev.icinga.com #13767] add attribute service_name to object service #160
- [dev.icinga.com #13701] Calling private method "Puppet.settings.preferred_run_mode=" in facter/icinga2_puppet.rb breaks Puppet master #159
Merged pull requests:
- Add possibility to use ip or hostname. #31 (n00by)
- Fix non-breaking space. #30 (n00by)
- Don't call private method preferred_run_mode= in facts #29 (antaflos)
v0.7.0 (2016-12-15)
Implemented enhancements:
- [dev.icinga.com #12344] CA handling using file ressource #50
- [dev.icinga.com #13513] Rework default order values for all objects #158
- [dev.icinga.com #13511] Add custom config fragment #157
- [dev.icinga.com #13495] CA handling using the icinga2 CLI #155
- [dev.icinga.com #13385] Add Travis CI Tests #154
- [dev.icinga.com #12653] Add Support for SLES 12 #96
- [dev.icinga.com #12652] CA handling using custom function from puppet-icinga2-legacy #95
- [dev.icinga.com #12651] CA handling with base64 encoded string #94
Fixed bugs:
- [dev.icinga.com #13365] Wrong MySQL user grants for schema import in docs #153
Merged pull requests:
- make service validation consistent with host validation #26 (deric)
- update influxdb documentation #25 (deric)
- [OSMC Hackathon] Adding initial SLES support #24 (jfryman)
- Remove duplicate target parameter section in icinga2::object::timeper… #23 (kwisatz)
- fix small typos #22 (xorpaul)
v0.6.0 (2016-11-23)
Implemented enhancements:
- [dev.icinga.com #12982] Red Hat Satellite / Puppet 3.x compatibility #142
- [dev.icinga.com #12374] Object Downtime #80
- [dev.icinga.com #12371] Object Comment #77
- [dev.icinga.com #13219] How attribute parsing works documentation #150
- [dev.icinga.com #13181] Apply Rules Docs #147
- [dev.icinga.com #12960] Consider function calls in attributes parsing #140
- [dev.icinga.com #12959] Attribute function does not included adding value #139
- [dev.icinga.com #12958] Add parsing of assign rules to attribute function #138
- [dev.icinga.com #12957] Extend attributes Function #137
- [dev.icinga.com #12878] Extend attributes fct to parse connected strings #136
- [dev.icinga.com #12839] use-fct-attributes-for-other-configs #126
- [dev.icinga.com #12387] Object UserGroup #92
- [dev.icinga.com #12385] Object User #91
- [dev.icinga.com #12384] Object TimePeriod #90
- [dev.icinga.com #12383] Object ServiceGroup #89
- [dev.icinga.com #12382] Object Service #88
- [dev.icinga.com #12381] Object ScheduledDowntime #87
- [dev.icinga.com #12380] Object NotificationCommand #86
- [dev.icinga.com #12379] Object Notification #85
- [dev.icinga.com #12378] Object HostGroup #84
- [dev.icinga.com #12377] Object Host #83
- [dev.icinga.com #12376] Object EventCommand #82
- [dev.icinga.com #12373] Object Dependency #79
- [dev.icinga.com #12372] Object CompatLogger #78
- [dev.icinga.com #12370] Object CheckResultReader #76
- [dev.icinga.com #12369] Object CheckCommand #75
- [dev.icinga.com #12349] Apply Rules #55
Fixed bugs:
- [dev.icinga.com #13217] Icinga Functions don't parse correctly #149
- [dev.icinga.com #13207] Wrong config for attribute vars in level 3 hash #148
- [dev.icinga.com #13179] Ruby 1.8 testing #146
- [dev.icinga.com #13149] "in" is a keyword for assignment #145
- [dev.icinga.com #13123] Objects with required parameters #144
- [dev.icinga.com #13035] Wrong syntax of "apply" in object.conf.erb template (afaik) #143
- [dev.icinga.com #12980] Symlinks in modules are not allowed in puppet modules #141
Merged pull requests:
v0.5.0 (2016-10-10)
Implemented enhancements:
- [dev.icinga.com #12859] Doc example for creating IDO database #129
- [dev.icinga.com #12836] Write profile class examples #124
- [dev.icinga.com #12806] Rework feature idopgsql #121
- [dev.icinga.com #12805] Rework feature idomysql #120
- [dev.icinga.com #12804] Rework feature influxdb #119
- [dev.icinga.com #12802] Usage documentation #118
- [dev.icinga.com #12801] Adjust SSL settings for features #117
- [dev.icinga.com #12771] Add parameter ensure to objects #114
- [dev.icinga.com #12759] Extend api feature with endpoints and zones parameter #113
- [dev.icinga.com #12754] features-with-objects #112
- [dev.icinga.com #12388] Object Zone #93
- [dev.icinga.com #12375] Object Endpoint #81
- [dev.icinga.com #12368] Object ApiUser #74
- [dev.icinga.com #12367] Objects #73
Fixed bugs:
- [dev.icinga.com #12875] Icinga2 does not start on Windows #135
- [dev.icinga.com #12871] Please replace facts icinga2_puppet_* by $::settings #133
- [dev.icinga.com #12872] Add Requires to basic config for features and objects that need additional packages #134
- [dev.icinga.com #12867] Feature-statusdata-update-interval-default #132
- [dev.icinga.com #12865] Class scoping #131
- [dev.icinga.com #12864] debian based system repo handling #130
- [dev.icinga.com #12858] Doc example class icinga2 #128
- [dev.icinga.com #12857] Default owner of config dir #127
- [dev.icinga.com #12837] File permission on windows #125
- [dev.icinga.com #12821] Unify windows unit tests #123
- [dev.icinga.com #12809] Path of Puppet keys and certs broken #122
- [dev.icinga.com #12797] windows line-breaks for objects #116
- [dev.icinga.com #12775] Api feature unit tests fail for windows #115
v0.4.0 (2016-09-22)
Implemented enhancements:
- [dev.icinga.com #12720] Feature ido-pgsql #108
- [dev.icinga.com #12706] Implement host_format_template and service_format_template for perfdata feature #105
- [dev.icinga.com #12363] Feature ido-mysql #69
Fixed bugs:
- [dev.icinga.com #12743] paths in api feature must be quoted #111
v0.3.1 (2016-09-16)
Implemented enhancements:
- [dev.icinga.com #12693] Fix fixtures.yaml #102
- [dev.icinga.com #12366] Feature notification #72
- [dev.icinga.com #12365] Feature mainlog #71
- [dev.icinga.com #12364] Feature influxdb #70
- [dev.icinga.com #12362] Feature graphite #68
- [dev.icinga.com #12361] Feature checker #67
- [dev.icinga.com #12360] Feature syslog #66
- [dev.icinga.com #12359] Feature statusdata #65
- [dev.icinga.com #12358] Feature perfdata #64
- [dev.icinga.com #12357] Feature opentsdb #63
- [dev.icinga.com #12356] Feature livestatus #62
- [dev.icinga.com #12355] Feature gelf #61
- [dev.icinga.com #12354] Feature debuglog #60
- [dev.icinga.com #12353] Feature compatlog #59
- [dev.icinga.com #12352] Feature command #58
- [dev.icinga.com #12351] Feature api #57
- [dev.icinga.com #12350] Features #56
- [dev.icinga.com #12343] Use certificates generated by Puppet #49
Fixed bugs:
- [dev.icinga.com #12724] RSpec tests without effect #109
- [dev.icinga.com #12714] 32bit for Windows #107
- [dev.icinga.com #12713] unit test for all defaults in feature mainlog #106
- [dev.icinga.com #12698] Params inheritance in features #104
- [dev.icinga.com #12696] Notify service when features-available/feature.conf is created #103
- [dev.icinga.com #12692] Fix mlodule depency Typo for module puppetlabs/chocolaty #101
- [dev.icinga.com #12738] Duplicate declaration File[/etc/icinga2/pki] #110
v0.2.0 (2016-09-09)
Implemented enhancements:
- [dev.icinga.com #12658] Decide whether or not to drop support for Puppet 3.x and below #99
- [dev.icinga.com #12657] Unit tests should cover every supported OS/Distro instead of just one #98
- [dev.icinga.com #12346] Add Support for Ubuntu 14.04, 16.04 #52
- [dev.icinga.com #12341] Config handling #47
Fixed bugs:
- [dev.icinga.com #12656] Inheritance #97
v0.1.0 (2016-09-06)
Implemented enhancements:
- [dev.icinga.com #12348] Add Support for Windows #54
- [dev.icinga.com #12347] Add Support for CentOS 6, 7 #53
- [dev.icinga.com #12345] Add Support for Debian 7, 8 #51
- [dev.icinga.com #12342] Repo management #48
- [dev.icinga.com #12340] Installation #46
v0.6.2 (2015-01-30)
v0.6.1 (2014-12-03)
* This Change Log was automatically generated by github_changelog_generator
Dependencies
- puppetlabs/stdlib (>= 4.16.0 < 7.0.0)
- puppetlabs/concat (>= 2.1.0 < 7.0.0)
Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 1. Definitions. "License" shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document. "Licensor" shall mean the copyright owner or entity authorized by the copyright owner that is granting the License. "Legal Entity" shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity. "You" (or "Your") shall mean an individual or Legal Entity exercising permissions granted by this License. "Source" form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files. "Object" form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types. "Work" shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below). "Derivative Works" shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof. "Contribution" shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, "submitted" means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as "Not a Contribution." "Contributor" shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work. 2. Grant of Copyright License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form. 3. Grant of Patent License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed. 4. Redistribution. You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions: (a) You must give any other recipients of the Work or Derivative Works a copy of this License; and (b) You must cause any modified files to carry prominent notices stating that You changed the files; and (c) You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and (d) If the Work includes a "NOTICE" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License. You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License. 5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions. 6. Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file. 7. Disclaimer of Warranty. Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License. 8. Limitation of Liability. In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages. 9. Accepting Warranty or Additional Liability. While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability. END OF TERMS AND CONDITIONS APPENDIX: How to apply the Apache License to your work. To apply the Apache License to your work, attach the following boilerplate notice, with the fields enclosed by brackets "[]" replaced with your own identifying information. (Don't include the brackets!) The text should be enclosed in the appropriate comment syntax for the file format. We also recommend that a file or class name and description of purpose be included on the same "printed page" as the copyright notice for easier identification within third-party archives. Copyright [yyyy] [name of copyright owner] 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.