community.general.zabbix_action (0.1.1) — module

Create/Delete/Update Zabbix actions

Authors: Ruben Tsirunyan (@rubentsirunyan), Ruben Harutyunov (@K-DOT)

preview | supported by community

Install collection

Install with ansible-galaxy collection install community.general:==0.1.1


Add to requirements.yml

  collections:
    - name: community.general
      version: 0.1.1

Description

This module allows you to create, modify and delete Zabbix actions.


Requirements

Usage examples

  • Success
    Steampunk Spotter scan finished with no errors, warnings or hints.
# Trigger action with only one condition
- name: Deploy trigger action
  zabbix_action:
    server_url: "http://zabbix.example.com/zabbix/"
    login_user: Admin
    login_password: secret
    name: "Send alerts to Admin"
    event_source: 'trigger'
    state: present
    status: enabled
    esc_period: 60
    conditions:
      - type: 'trigger_severity'
        operator: '>='
        value: 'Information'
    operations:
      - type: send_message
        subject: "Something bad is happening"
        message: "Come on, guys do something"
        media_type: 'Email'
        send_to_users:
          - 'Admin'
  • Success
    Steampunk Spotter scan finished with no errors, warnings or hints.
# Trigger action with multiple conditions and operations
- name: Deploy trigger action
  zabbix_action:
    server_url: "http://zabbix.example.com/zabbix/"
    login_user: Admin
    login_password: secret
    name: "Send alerts to Admin"
    event_source: 'trigger'
    state: present
    status: enabled
    esc_period: 1m
    conditions:
      - type: 'trigger_name'
        operator: 'like'
        value: 'Zabbix agent is unreachable'
        formulaid: A
      - type: 'trigger_severity'
        operator: '>='
        value: 'disaster'
        formulaid: B
    formula: A or B
    operations:
      - type: send_message
        media_type: 'Email'
        send_to_users:
          - 'Admin'
      - type: remote_command
        command: 'systemctl restart zabbix-agent'
        command_type: custom_script
        execute_on: server
        run_on_hosts:
          - 0
  • Success
    Steampunk Spotter scan finished with no errors, warnings or hints.
# Trigger action with recovery and acknowledge operations
- name: Deploy trigger action
  zabbix_action:
    server_url: "http://zabbix.example.com/zabbix/"
    login_user: Admin
    login_password: secret
    name: "Send alerts to Admin"
    event_source: 'trigger'
    state: present
    status: enabled
    esc_period: 1h
    conditions:
      - type: 'trigger_severity'
        operator: '>='
        value: 'Information'
    operations:
      - type: send_message
        subject: "Something bad is happening"
        message: "Come on, guys do something"
        media_type: 'Email'
        send_to_users:
          - 'Admin'
    recovery_operations:
      - type: send_message
        subject: "Host is down"
        message: "Come on, guys do something"
        media_type: 'Email'
        send_to_users:
          - 'Admin'
    acknowledge_operations:
      - type: send_message
        media_type: 'Email'
        send_to_users:
          - 'Admin'

Inputs

    
name:
    description:
    - Name of the action
    required: true

state:
    choices:
    - present
    - absent
    default: present
    description:
    - State of the action.
    - On C(present), it will create an action if it does not exist or update the action
      if the associated data is different.
    - On C(absent), it will remove the action if it exists.

status:
    choices:
    - enabled
    - disabled
    default: enabled
    description:
    - Status of the action.

formula:
    description:
    - User-defined expression to be used for evaluating conditions of filters with a custom
      expression.
    - The expression must contain IDs that reference specific filter conditions by its
      formulaid.
    - The IDs used in the expression must exactly match the ones defined in the filter
      conditions. No condition can remain unused or omitted.
    - Required for custom expression filters.
    - Use sequential IDs that start at "A". If non-sequential IDs are used, Zabbix re-indexes
      them. This makes each module run notice the difference in IDs and update the action.

timeout:
    default: 10
    description:
    - The timeout of API request (seconds).
    type: int

eval_type:
    choices:
    - andor
    - and
    - or
    - custom_expression
    description:
    - Filter condition evaluation method.
    - Defaults to C(andor) if conditions are less then 2 or if I(formula) is not specified.
    - Defaults to C(custom_expression) when formula is specified.

conditions:
    description:
    - List of dictionaries of conditions to evaluate.
    - For more information about suboptions of this option please check out Zabbix API
      documentation U(https://www.zabbix.com/documentation/4.0/manual/api/reference/action/object#action_filter_condition)
    suboptions:
      formulaid:
        description:
        - Arbitrary unique ID that is used to reference the condition from a custom expression.
        - Can only contain upper-case letters.
        - Required for custom expression filters.
      operator:
        choices:
        - '='
        - <>
        - like
        - not like
        - in
        - '>='
        - <=
        - not in
        - matches
        - does not match
        - 'Yes'
        - 'No'
        description:
        - Condition operator.
        - When I(type) is set to C(time_period), the choices are C(in), C(not in).
        - C(matches), C(does not match), C(Yes) and C(No) condition operators work only
          with >= Zabbix 4.0
      type:
        description:
        - Type (label) of the condition.
        - 'Possible values when I(event_source=trigger):'
        - ' - C(host_group)'
        - ' - C(host)'
        - ' - C(trigger)'
        - ' - C(trigger_name)'
        - ' - C(trigger_severity)'
        - ' - C(time_period)'
        - ' - C(host_template)'
        - ' - C(application)'
        - ' - C(maintenance_status)'
        - ' - C(event_tag)'
        - ' - C(event_tag_value)'
        - 'Possible values when I(event_source=discovery):'
        - ' - C(host_IP)'
        - ' - C(discovered_service_type)'
        - ' - C(discovered_service_port)'
        - ' - C(discovery_status)'
        - ' - C(uptime_or_downtime_duration)'
        - ' - C(received_value)'
        - ' - C(discovery_rule)'
        - ' - C(discovery_check)'
        - ' - C(proxy)'
        - ' - C(discovery_object)'
        - 'Possible values when I(event_source=auto_registration):'
        - ' - C(proxy)'
        - ' - C(host_name)'
        - ' - C(host_metadata)'
        - 'Possible values when I(event_source=internal):'
        - ' - C(host_group)'
        - ' - C(host)'
        - ' - C(host_template)'
        - ' - C(application)'
        - ' - C(event_type)'
      value:
        description:
        - Value to compare with.
        - 'When I(type=discovery_status), the choices are:'
        - ' - C(up)'
        - ' - C(down)'
        - ' - C(discovered)'
        - ' - C(lost)'
        - 'When I(type=discovery_object), the choices are:'
        - ' - C(host)'
        - ' - C(service)'
        - 'When I(type=event_type), the choices are:'
        - ' - C(item in not supported state)'
        - ' - C(item in normal state)'
        - ' - C(LLD rule in not supported state)'
        - ' - C(LLD rule in normal state)'
        - ' - C(trigger in unknown state)'
        - ' - C(trigger in normal state)'
        - 'When I(type=trigger_severity), the choices are (case-insensitive):'
        - ' - C(not classified)'
        - ' - C(information)'
        - ' - C(warning)'
        - ' - C(average)'
        - ' - C(high)'
        - ' - C(disaster)'
        - Irrespective of user-visible names being changed in Zabbix. Defaults to C(not
          classified) if omitted.
        - Besides the above options, this is usually either the name of the object or
          a string to compare with.
    type: list

esc_period:
    description:
    - Default operation step duration. Must be greater than 60 seconds.
    - Accepts only seconds in int for <= Zabbix 3.2
    - Accepts seconds, time unit with suffix and user macro since => Zabbix 3.4
    - Required when C(state=present).
    required: false

login_user:
    description:
    - Zabbix user name.
    required: true
    type: str

operations:
    description:
    - List of action operations
    suboptions:
      command:
        description:
        - Command to run.
        - Required when I(type=remote_command) and I(command_type!=global_script).
      command_type:
        choices:
        - custom_script
        - ipmi
        - ssh
        - telnet
        - global_script
        description:
        - Type of operation command.
        - Required when I(type=remote_command).
      esc_period:
        default: 0s
        description:
        - Duration of an escalation step in seconds.
        - Must be greater than 60 seconds.
        - Accepts only seconds in int for <= Zabbix 3.2
        - Accepts seconds, time unit with suffix and user macro since => Zabbix 3.4
        - If set to 0 or 0s, the default action escalation period will be used.
      esc_step_from:
        default: 1
        description:
        - Step to start escalation from.
      esc_step_to:
        default: 1
        description:
        - Step to end escalation at.
      execute_on:
        choices:
        - agent
        - server
        - proxy
        description:
        - Target on which the custom script operation command will be executed.
        - Required when I(type=remote_command) and I(command_type=custom_script).
      host_groups:
        description:
        - List of host groups host should be added to.
        - Required when I(type=add_to_host_group) or I(type=remove_from_host_group).
        type: list
      inventory:
        description:
        - Host inventory mode.
        - Required when I(type=set_host_inventory_mode).
      media_type:
        default: all
        description:
        - Media type that will be used to send the message.
        - Set to C(all) for all media types
      message:
        description:
        - Operation message text.
        - Will check the 'default message' and use the text from I(default_message) if
          this and I(default_subject) are not specified
      operation_condition:
        choices:
        - acknowledged
        - not_acknowledged
        description:
        - The action operation condition object defines a condition that must be met to
          perform the current operation.
        type: str
      password:
        description:
        - Password used for authentication.
        - Required when I(type=remote_command) and I(command_type in [ssh, telnet]).
      port:
        description:
        - Port number used for authentication.
        - Required when I(type=remote_command) and I(command_type in [ssh, telnet]).
      run_on_groups:
        description:
        - Host groups to run remote commands on.
        - Required when I(type=remote_command) if I(run_on_hosts) is not set.
      run_on_hosts:
        description:
        - Hosts to run remote commands on.
        - Required when I(type=remote_command) if I(run_on_groups) is not set.
        - If set to 0 the command will be run on the current host.
      script_name:
        description:
        - The name of script used for global script commands.
        - Required when I(type=remote_command) and I(command_type=global_script).
      send_to_groups:
        description:
        - User groups to send messages to.
        type: list
      send_to_users:
        description:
        - Users (usernames or aliases) to send messages to.
        type: list
      ssh_auth_type:
        choices:
        - password
        - public_key
        description:
        - Authentication method used for SSH commands.
        - Required when I(type=remote_command) and I(command_type=ssh).
      ssh_privatekey_file:
        description:
        - Name of the private key file used for SSH commands with public key authentication.
        - Required when I(type=remote_command) and I(command_type=ssh).
      ssh_publickey_file:
        description:
        - Name of the public key file used for SSH commands with public key authentication.
        - Required when I(type=remote_command) and I(command_type=ssh).
      subject:
        description:
        - Operation message subject.
        - Will check the 'default message' and use the text from I(default_subject) if
          this and I(default_subject) are not specified
      templates:
        description:
        - List of templates host should be linked to.
        - Required when I(type=link_to_template) or I(type=unlink_from_template).
        type: list
      type:
        choices:
        - send_message
        - remote_command
        - add_host
        - remove_host
        - add_to_host_group
        - remove_from_host_group
        - link_to_template
        - unlink_from_template
        - enable_host
        - disable_host
        - set_host_inventory_mode
        description:
        - Type of operation.
      username:
        description:
        - User name used for authentication.
        - Required when I(type=remote_command) and I(command_type in [ssh, telnet]).
    type: list

server_url:
    aliases:
    - url
    description:
    - URL of Zabbix server, with protocol (http or https). C(url) is an alias for C(server_url).
    required: true
    type: str

event_source:
    choices:
    - trigger
    - discovery
    - auto_registration
    - internal
    description:
    - Type of events that the action will handle.
    - Required when C(state=present).
    required: false

login_password:
    description:
    - Zabbix user password.
    required: true
    type: str

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

default_message:
    description:
    - Problem message default text.

default_subject:
    description:
    - Problem message default subject.

http_login_user:
    description:
    - Basic Auth login
    type: str

http_login_password:
    description:
    - Basic Auth password
    type: str

recovery_operations:
    description:
    - List of recovery operations.
    - C(Suboptions) are the same as for I(operations).
    - Works only with >= Zabbix 3.2
    type: list

pause_in_maintenance:
    default: true
    description:
    - Whether to pause escalation during maintenance periods or not.
    - Can be used when I(event_source=trigger).
    type: bool

acknowledge_operations:
    description:
    - List of acknowledge operations.
    - C(Suboptions) are the same as for I(operations).
    - Works only with >= Zabbix 3.4
    type: list

recovery_default_message:
    description:
    - Recovery message text.
    - Works only with >= Zabbix 3.2

recovery_default_subject:
    description:
    - Recovery message subject.
    - Works only with >= Zabbix 3.2

acknowledge_default_message:
    description:
    - Update operation (known as "Acknowledge operation" before Zabbix 4.0) message text.
    - Works only with >= Zabbix 3.4

acknowledge_default_subject:
    description:
    - Update operation (known as "Acknowledge operation" before Zabbix 4.0) message subject.
    - Works only with >= Zabbix 3.4

Outputs

msg:
  description: The result of the operation
  returned: success
  sample: 'Action Deleted: Register webservers, ID: 0001'
  type: str