t_systems_mms.icinga_director.icinga_command (1.33.1) — module

Manage commands in Icinga2

| "added in version" 1.0.0 of t_systems_mms.icinga_director"

Authors: Sebastian Gumprich (@rndmh3ro)

Install collection

Install with ansible-galaxy collection install t_systems_mms.icinga_director:==1.33.1


Add to requirements.yml

  collections:
    - name: t_systems_mms.icinga_director
      version: 1.33.1

Description

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

Usage examples

  • Success
    Steampunk Spotter scan finished with no errors, warnings or hints.
- name: Create command
  t_systems_mms.icinga_director.icinga_command:
    state: present
    url: "{{ icinga_url }}"
    url_username: "{{ icinga_user }}"
    url_password: "{{ icinga_pass }}"
    arguments:
      '--authpassphrase':
        value: $snmpv3_priv_key$
      '--authprotocol':
        value: $snmpv3_auth_protocol$
      '--critical':
        value: $centreon_critical$
      '--filter':
        value: $centreon_filter$
      '--hostname':
        value: $snmp_address$
      '--maxrepetitions':
        value: $centreon_maxrepetitions$
      '--mode':
        value: $centreon_mode$
      '--plugin':
        value: $centreon_plugin$
      '--privpassphrase':
        value: $snmpv3_auth_key$
      '--privprotocol':
        value: $snmpv3_priv_protocol$
      '--snmp-community':
        value: $snmp_community$
      '--snmp-timeout':
        value: $snmp_timeout$
      '--snmp-username':
        value: $snmpv3_user$
      '--snmp-version':
        value: $snmp_version$
      '--subsetleef':
        value: $centreon_subsetleef$
      '--verbose':
        set_if: $centreon_verbose$
      '--warning':
        value: $centreon_warning$
      '--dummy-arg':
        description: "dummy arg using Icinga DSL code"
        value:
          type: "Function"
          body: 'return macro("$dummy_var$")'
    command: "/opt/centreon-plugins/centreon_plugins.pl"
    command_type: "PluginCheck"
    disabled: false
    object_name: centreon-plugins
    imports:
      - centreon-plugins-template
    vars:
      centreon_maxrepetitions: 20
      centreon_subsetleef: 20
      centreon_verbose: false
      snmp_address: $address$
      snmp_timeout: 60
      snmp_version: '2'
      snmpv3_auth_key: authkey
      snmpv3_priv_key: privkey
      snmpv3_user: user
  • Success
    Steampunk Spotter scan finished with no errors, warnings or hints.
- name: Update command
  t_systems_mms.icinga_director.icinga_command:
    state: present
    url: "{{ icinga_url }}"
    url_username: "{{ icinga_user }}"
    url_password: "{{ icinga_pass }}"
    object_name: centreon-plugins
    timeout: "1m"
    append: true
  • Success
    Steampunk Spotter scan finished with no errors, warnings or hints.
- name: Create event command
  t_systems_mms.icinga_director.icinga_command:
    state: present
    url: "{{ icinga_url }}"
    url_username: "{{ icinga_user }}"
    url_password: "{{ icinga_pass }}"
    command: "/opt/scripts/restart_httpd"
    object_name: "restart_httpd"
    command_type: "PluginEvent"
    arguments:
      '-s':
        value: $service.state$
      '-t':
        value: $service.state_type$
      '-a':
        set_if: $service.check_attempt$
        value: $restart_service$

Inputs

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

vars:
    default: {}
    description:
    - Custom properties of the command.
    type: dict

zone:
    description:
    - Icinga cluster zone. Allows to manually override Directors decisions of where to
      deploy your config to.
    - You should consider not doing so unless you gained deep understanding of how an
      Icinga Cluster stack works.
    type: str

force:
    default: false
    description:
    - If V(yes) do not get a cached copy.
    type: bool

state:
    choices:
    - present
    - absent
    default: present
    description:
    - Apply feature state.
    type: str

append:
    choices:
    - true
    - false
    description:
    - 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.
    type: bool
    version_added: 1.25.0
    version_added_collection: t_systems_mms.icinga_director

command:
    description:
    - The command Icinga should run. Required when state is C(present).
    - Absolute paths are accepted as provided, relative paths are prefixed with "PluginDir
      + ", similar Constant prefixes are allowed.
    - Spaces will lead to separation of command path and standalone arguments.
    - Please note that this means that we do not support spaces in plugin names and paths
      right now.
    type: str

imports:
    default: []
    description:
    - Importable templates, add as many as you want. Please note that order matters when
      importing properties from multiple templates - last one wins.
    elements: str
    type: list

timeout:
    description:
    - Optional command timeout. Allowed values are seconds or durations postfixed with
      a specific unit (for example 1m or also 3m 30s).
    type: str

disabled:
    choices:
    - true
    - false
    default: false
    description:
    - Disabled objects will not be deployed.
    type: bool

arguments:
    description:
    - Arguments of the command.
    - Each argument can take either a string, a json or a dict
    - When using a dict as argument value, the following properties are supported. C(skip_key),
      C(repeat_key), C(required), C(order), C(description)), C(set_if), C(value).
    - The C(value) property can be either a string, a json or a dict. When used as a dict,
      you can define its C(type) as C(Function) and set its C(body) property as an Icinga
      DSL piece of config.
    type: dict

use_proxy:
    default: true
    description:
    - If V(no), it will not use a proxy, even if one is defined in an environment variable
      on the target hosts.
    type: bool

client_key:
    description:
    - PEM formatted file that contains your private key to be used for SSL client authentication.
    - If O(client_cert) contains both the certificate and key, this option is not required.
    type: path

http_agent:
    default: ansible-httpget
    description:
    - Header to identify as, generally appears in web server logs.
    type: str

use_gssapi:
    default: false
    description:
    - Use GSSAPI to perform the authentication, typically this is for Kerberos or Kerberos
      through Negotiate authentication.
    - Requires the Python library L(gssapi,https://github.com/pythongssapi/python-gssapi)
      to be installed.
    - Credentials for GSSAPI can be specified with O(url_username)/O(url_password) or
      with the GSSAPI env var C(KRB5CCNAME) that specified a custom Kerberos credential
      cache.
    - NTLM authentication is B(not) supported even if the GSSAPI mech for NTLM has been
      installed.
    type: bool
    version_added: '2.11'
    version_added_collection: ansible.builtin

client_cert:
    description:
    - 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, O(client_key)
      is not required.
    type: path

object_name:
    aliases:
    - name
    description:
    - Name of the command.
    required: true
    type: str

url_password:
    description:
    - The password for use in HTTP basic authentication.
    - If the O(url_username) parameter is not specified, the O(url_password) parameter
      will not be used.
    type: str

url_username:
    description:
    - The username for use in HTTP basic authentication.
    - This parameter can be used without O(url_password) for sites that allow empty passwords
    type: str

validate_certs:
    default: true
    description:
    - If V(no), SSL certificates will not be validated.
    - This should only be used on personally controlled sites using self-signed certificates.
    type: bool

methods_execute:
    aliases:
    - command_type
    choices:
    - PluginCheck
    - PluginNotification
    - PluginEvent
    default: PluginCheck
    description:
    - Plugin Check commands are what you need when running checks against your infrastructure.
    - Notification commands will be used when it comes to notify your users.
    - Event commands allow you to trigger specific actions when problems occur.
    - Some people use them for auto-healing mechanisms, like restarting services or rebooting
      systems at specific thresholds.
    type: str

force_basic_auth:
    default: false
    description:
    - Credentials specified with O(url_username) and O(url_password) should be passed
      in HTTP Header.
    type: bool