From 59b9fdeefff80448371f0071c8de6aff532dfb68 Mon Sep 17 00:00:00 2001 From: Blerim Sheqa Date: Tue, 12 Jun 2018 08:35:07 +0200 Subject: [PATCH] Feature/main configuration (#11) * Add ability to manage icinga2.conf * Enable management of constants.conf --- README.md | 73 ++++++++++++++++++ defaults/main.yml | 16 ++++ handlers/main.yml | 8 +- meta/main.yml | 1 - .../test_default.cpython-27-PYTEST.pyc | Bin 3538 -> 3538 bytes tasks/icinga2-Debian.yml | 1 - tasks/icinga2-RedHat.yml | 1 - tasks/icinga2-config.yml | 29 +++++++ tasks/icinga2.yml | 1 - tasks/main.yml | 8 ++ templates/constants.conf.j2 | 36 +++++++++ templates/icinga2.conf.j2 | 48 ++++++++++++ tests/test.yml | 1 - vars/Debian.yml | 4 + vars/RedHat.yml | 4 + vars/main.yml | 2 +- 16 files changed, 226 insertions(+), 7 deletions(-) create mode 100644 tasks/icinga2-config.yml create mode 100644 templates/constants.conf.j2 create mode 100644 templates/icinga2.conf.j2 create mode 100644 vars/Debian.yml create mode 100644 vars/RedHat.yml diff --git a/README.md b/README.md index dd190db..4a5623d 100644 --- a/README.md +++ b/README.md @@ -58,8 +58,23 @@ You may choose to use your own or the systems default repositories. Repository m - [Variable: i2_apt_url](#variable-i2_apt_url) - [Variable: i2_i2_yum_key](#variable-i2_yum_key) - [Variable: i2_i2_yum_url](#variable-i2_yum_url) + - [Variable: i2_confd](#variable-i2_confd) + - [Variable: i2_include_plugins](#variable-i2_include_plugins) + - [Variable: i2_const_plugindir](#variable-i2_const_plugindir) + - [Variable: i2_const_manubulonplugindir](#variable-i2_const_manubulonplugindir) + - [Variable: i2_const_plugincontribdir](#variable-i2_const_plugincontribdir) + - [Variable: i2_const_nodename](#variable-i2_const_nodename) + - [Variable: i2_const_zonename](#variable-i2_const_zonename) + - [Variable: i2_const_ticketsalt](#variable-i2_const_ticketsalt) + - [Variable: i2_constants](#variable-i2_constants) +- [**Variables system specific](#variables-os-specific) + - [Variable: i2_conf_dir](#variable-i2_conf_dir) + - [Variable: i2_user](#variable-i2_user) + - [Variable: i2_group](#variable-i2_group) + - [Variable: i2_lib_dir](#variable-i2_lib_dir) - [**Handlers**](#handlers) - [Handler: start icinga2](#handler-start-icinga2) + - [Handler: reload icinga2](#handler-reload-icinga2) ### Variables @@ -89,12 +104,70 @@ GPG key used to verify packages on YUM based sytems. The key URL will be added t Repository URL for YUM based sytem. Defaults to `http://packages.icinga.com/epel/$releasever/release/`. This may be customized if you have a local mirror. +#### Variable: `i2_confd` +By default configuration located in `/etc/icinga2/conf.d` is included. This directory this directory may be change. +Defaults to `confd.`. + +#### Variable: `i2_include_plugins` +The [ITL](https://www.icinga.com/docs/icinga2/latest/doc/10-icinga-template-library/) comes with a set of +pre-configured check commands. This variable defines what to include. Defaults to +`["itl", "plugins", "plugins-contrib", "manubulon", "windows-plugins", "nscp"]` + +#### Variable: `i2_const_plugindir` +Set `PluginDir` constant. Deafults to `{{ i2_lib_dir }}/nagios/plugins`. + +#### Variable: `i2_const_manubulonplugindir` +Set `ManubulonPluginDir` constant. Defaults to `{{ i2_lib_dir }}/nagios/plugins`. + +#### Variable: `i2_const_plugincontribdir` +Set `PluginContribDir` constant. Defualts to `{{ i2_lib_dir }}/nagios/plugins`. + +#### Variable: `i2_const_nodename` +Set `NodeName` constant. Defaults to `{{ ansible_fqdn }}`. + +#### Variable: `i2_const_zonename` +Set `ZoneName` constant. Defaults to `{{ ansible_fqdn }}`. + +#### Variable: `i2_const_ticketsalt` +Set `TicketSalt` constant. Empty by default. + +#### Variable: `i2_constants` +Add custom constants to `constants.conf`. Must be a dictionary. + +Example: +```yaml + vars: + - i2_constants: + foo: "bar" +``` + + +### Variables system specific +The following variables are system specific and don't need to be overwritten in most cases. Be careful when making +changes to any of these variables. + +#### Variable: `i2_conf_dir` +Base Icinga 2 configuration directory. Defaults to `/etc/icinga2`. + +#### Variable: `i2_user` +Icinga 2 running as user. Default depends on OS. + +#### Variable: `i2_group` +Icinga 2 running as group. Default depends on OS. + +#### Variable: `i2_lib_dir` +Lib dir. Default depends on OS. + ### Handlers #### Handler: `start icinga2` This handler starts Icinga 2. It is only used to make sure Icinga 2 is running. You can prevent this handler from being triggerd by setting `i2_manage_service` to false. +#### Handler: `reload icinga2` +This handler reloads Icinga 2 when configuration changes. You can prevent this handler from being triggerd by setting +`i2_manage_service` to false. + ## Development A roadmap of this project is located at https://github.com/Icinga/ansible-icinga2/milestones. Please consider this roadmap when you start contributing to the project. diff --git a/defaults/main.yml b/defaults/main.yml index 240a016..c0a280f 100644 --- a/defaults/main.yml +++ b/defaults/main.yml @@ -6,3 +6,19 @@ i2_yum_key: "https://packages.icinga.com/icinga.key" i2_yum_url: "http://packages.icinga.com/epel/$releasever/release/" i2_manage_package: true i2_manage_service: true +i2_confd: + - "conf.d" +i2_include_plugins: + - "itl" + - "plugins" + - "plugins-contrib" + - "manubulon" + - "windows-plugins" + - "nscp" +i2_const_plugindir: "{{ i2_lib_dir }}/nagios/plugins" +i2_const_manubulonplugindir: "{{ i2_lib_dir }}/nagios/plugins" +i2_const_plugincontribdir: "{{ i2_lib_dir }}/nagios/plugins" +i2_const_nodename: "{{ ansible_fqdn }}" +i2_const_zonename: "{{ ansible_fqdn }}" +i2_const_ticketsalt: "" +i2_constants: {} diff --git a/handlers/main.yml b/handlers/main.yml index ad4745c..037d268 100644 --- a/handlers/main.yml +++ b/handlers/main.yml @@ -1,5 +1,4 @@ --- - - name: start icinga2 become: yes service: @@ -7,3 +6,10 @@ state: started enabled: yes when: i2_manage_service + +- name: reload icinga2 + become: yes + service: + name: icinga2 + state: reloaded + when: i2_manage_service diff --git a/meta/main.yml b/meta/main.yml index d0f54af..61eb821 100644 --- a/meta/main.yml +++ b/meta/main.yml @@ -1,5 +1,4 @@ --- - galaxy_info: author: "Icinga Development Team " description: "Install and configure Icinga 2" diff --git a/molecule/default/tests/__pycache__/test_default.cpython-27-PYTEST.pyc b/molecule/default/tests/__pycache__/test_default.cpython-27-PYTEST.pyc index 3f4cc63150c19da9a1c474ddd09659a112bb6c3d..bd0cc290106711af48ecafca240a5f6adaa7bffc 100644 GIT binary patch delta 16 Ycmca4eMy>~`7~`7 +{% endfor %} + +/** + * The features-available directory contains a number of configuration + * files for features which can be enabled and disabled using the + * icinga2 feature enable / icinga2 feature disable CLI commands. + * These commands work by creating and removing symbolic links in + * the features-enabled directory. + */ +include "features-enabled/*.conf" + +/** + * Although in theory you could define all your objects in this file + * the preferred way is to create separate directories and files in the conf.d + * directory. Each of these files must have the file extension ".conf". + */ +{% for include_dir in i2_confd %} +include_recursive "{{ include_dir }}" +{% endfor %} diff --git a/tests/test.yml b/tests/test.yml index f442811..fce658c 100644 --- a/tests/test.yml +++ b/tests/test.yml @@ -1,5 +1,4 @@ --- - - hosts: all remote_user: root roles: diff --git a/vars/Debian.yml b/vars/Debian.yml new file mode 100644 index 0000000..a78ed1a --- /dev/null +++ b/vars/Debian.yml @@ -0,0 +1,4 @@ +--- +i2_user: nagios +i2_group: nagios +i2_lib_dir: /usr/lib diff --git a/vars/RedHat.yml b/vars/RedHat.yml new file mode 100644 index 0000000..d8c22ca --- /dev/null +++ b/vars/RedHat.yml @@ -0,0 +1,4 @@ +--- +i2_user: icinga +i2_group: icinga +i2_lib_dir: /usr/lib64 diff --git a/vars/main.yml b/vars/main.yml index 912045b..915679d 100644 --- a/vars/main.yml +++ b/vars/main.yml @@ -1,2 +1,2 @@ --- -# vars file for icinga2 +i2_conf_dir: "/etc/icinga2" -- GitLab