Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add icinga_serviceset module #163

Merged
merged 5 commits into from
Apr 20, 2022
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ Additionally all supported modules have an appropriate `*_info`-module to gather
* `icinga_service_apply`
* `icinga_service_template`
* `icinga_servicegroup`
* `icinga_serviceset`
* `icinga_timeperiod`
* `icinga_timeperiod_template`
* `icinga_user_group`
Expand Down
18 changes: 16 additions & 2 deletions docs/icinga_service.rst
Original file line number Diff line number Diff line change
Expand Up @@ -80,9 +80,15 @@ Parameters
Service groups can be directly assigned to single services or to service templates.


host (True, str, None)
host (optional, str, None)
Choose the host this single service should be assigned to.

If ``service_set`` is not provided this property is required.

service_set (optional, str, None)
Choose the serviceset this single service should be assigned to.

If ``host`` is not provided this property is required.

imports (optional, list, [])
Importable templates, add as many as you want.
Expand Down Expand Up @@ -213,7 +219,7 @@ Examples

.. code-block:: yaml+jinja


- name: Create service
tags: service
t_systems_mms.icinga_director.icinga_service:
Expand Down Expand Up @@ -245,6 +251,14 @@ Examples
notes_url: "'http://url1' 'http://url2'"
append: true

- name: Create serviceset service
t_systems_mms.icinga_director.icinga_service:
state: present
url: "{{ icinga_url }}"
url_username: "{{ icinga_user }}"
url_password: "{{ icinga_pass }}"
object_name: "foo service serviceset"
service_set: "foo_serviceset"



Expand Down
166 changes: 166 additions & 0 deletions docs/icinga_serviceset.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,166 @@
.. _icinga_serviceset_module:


icinga_serviceset -- Manage servicesets in Icinga2
==================================================

.. contents::
:local:
:depth: 1


Synopsis
--------

Add or remove a serviceset to Icinga2 through the director API.






Parameters
----------

state (optional, str, present)
Apply feature state.


assign_filter (optional, str, None)
This allows you to configure an assignment filter.

Please feel free to combine as many nested operators as you want.


object_name (True, str, None)
Name of the service.


description (optional, str, None)
A meaningful description explaining your users what to expect when assigning this set of services.


append (optional, bool, None)
Do not overwrite the whole object but instead append the defined properties.

Note - Appending to existing vars, imports or any other list/dict is not possible. You have to overwrite the complete list/dict.

Note - Variables that are set by default will also be applied, even if not set.


url (True, str, None)
HTTP, HTTPS, or FTP URL in the form (http|https|ftp)://[user[:pass]]@host.domain[:port]/path


force (optional, bool, False)
If ``yes`` do not get a cached copy.

Alias ``thirsty`` has been deprecated and will be removed in 2.13.


http_agent (optional, str, ansible-httpget)
Header to identify as, generally appears in web server logs.


use_proxy (optional, bool, True)
If ``no``, it will not use a proxy, even if one is defined in an environment variable on the target hosts.


validate_certs (optional, bool, True)
If ``no``, SSL certificates will not be validated.

This should only be used on personally controlled sites using self-signed certificates.


url_username (optional, str, None)
The username for use in HTTP basic authentication.

This parameter can be used without *url_password* for sites that allow empty passwords


url_password (optional, str, None)
The password for use in HTTP basic authentication.

If the *url_username* parameter is not specified, the *url_password* parameter will not be used.


force_basic_auth (optional, bool, False)
Credentials specified with *url_username* and *url_password* should be passed in HTTP Header.


client_cert (optional, path, None)
PEM formatted certificate chain file to be used for SSL client authentication.

This file can also include the key as well, and if the key is included, ``client_key`` is not required.


client_key (optional, path, None)
PEM formatted file that contains your private key to be used for SSL client authentication.

If ``client_cert`` contains both the certificate and key, this option is not required.


use_gssapi (optional, bool, False)
Use GSSAPI to perform the authentication, typically this is for Kerberos or Kerberos through Negotiate authentication.

Requires the Python library `gssapi <https://github.com/pythongssapi/python-gssapi>`_ to be installed.

Credentials for GSSAPI can be specified with *url_username*/*url_password* or with the GSSAPI env var ``KRB5CCNAME`` that specified a custom Kerberos credential cache.

NTLM authentication is ``not`` supported even if the GSSAPI mech for NTLM has been installed.






Notes
-----

.. note::
- This module supports check mode.




Examples
--------

.. code-block:: yaml+jinja


- name: Create serviceset
t_systems_mms.icinga_director.icinga_serviceset:
state: present
url: "{{ icinga_url }}"
url_username: "{{ icinga_user }}"
url_password: "{{ icinga_pass }}"
object_name: "foo_serviceset"
assign_filter: 'host.name="foohost"'
description: "foo description"

- name: Update serviceset
t_systems_mms.icinga_director.icinga_serviceset:
state: present
url: "{{ icinga_url }}"
url_username: "{{ icinga_user }}"
url_password: "{{ icinga_pass }}"
object_name: "foo_serviceset"
assign_filter: 'host.name="foohost2"'
append: true




Status
------





Authors
~~~~~~~

- Heiko Neblung (@HeikoNeblung)

8 changes: 8 additions & 0 deletions examples/icinga_service.yml
Original file line number Diff line number Diff line change
Expand Up @@ -28,3 +28,11 @@
notes: "example note"
notes_url: "'http://url1' 'http://url2'"
append: true
- name: Create serviceset service
t_systems_mms.icinga_director.icinga_service:
state: present
url: "{{ icinga_url }}"
url_username: "{{ icinga_user }}"
url_password: "{{ icinga_pass }}"
object_name: "foo service serviceset"
service_set: "foo_serviceset"
19 changes: 19 additions & 0 deletions examples/icinga_serviceset.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
---
- name: Create serviceset
t_systems_mms.icinga_director.icinga_serviceset:
state: present
url: "{{ icinga_url }}"
url_username: "{{ icinga_user }}"
url_password: "{{ icinga_pass }}"
object_name: "foo_serviceset"
assign_filter: 'host.name="foohost"'
description: "foo description"
- name: Update serviceset
t_systems_mms.icinga_director.icinga_serviceset:
state: present
url: "{{ icinga_url }}"
url_username: "{{ icinga_user }}"
url_password: "{{ icinga_pass }}"
object_name: "foo_serviceset"
assign_filter: 'host.name="foohost2"'
append: true
Loading