community.zabbix.zabbix_discovery_rule 模块 – 创建/删除/更新 Zabbix 自动发现规则

注意

此模块是 community.zabbix 集合 (版本 3.2.0) 的一部分。

如果您使用的是 ansible 包,则可能已经安装了此集合。它不包含在 ansible-core 中。要检查它是否已安装,请运行 ansible-galaxy collection list

要安装它,请使用:ansible-galaxy collection install community.zabbix。您需要其他要求才能使用此模块,有关详细信息,请参阅 需求

要在 playbook 中使用它,请指定:community.zabbix.zabbix_discovery_rule

概要

  • 创建自动发现规则。

  • 删除现有的自动发现规则。

  • 使用新选项更新现有的自动发现规则。

需求

执行此模块的主机需要以下需求。

  • python >= 3.9

参数

参数

注释

dchecks

别名:dcheck

列表 / 元素=字典

自动发现检查对象的字典列表。

有关更多信息,请查看 https://www.zabbix.com/documentation/current/manual/api/reference/dcheck/object 上的自动发现检查对象文档

host_source

字符串

主机名的来源。

可能的值

DNS (默认)

IP

discovery - 此检查的发现值

自 Zabbix 4.4 起可用

选项

  • "DNS" ← (默认)

  • "IP"

  • "discovery"

key

字符串

此属性的值取决于检查的类型

  • 用于查询 Zabbix 代理检查的键

  • SNMP OID 用于 SNMPv1、SNMPv2 和 SNMPv3 检查

name_source

字符串

可见名称的来源。

可能的值

none - (默认) 未指定

DNS

IP

discovery - 此检查的发现值

自 Zabbix 4.4 起可用

选项

  • "None" ← (默认)

  • "DNS"

  • "IP"

  • "discovery"

ports

字符串

一个或多个要检查的端口范围,用逗号分隔。用于除 ICMP 以外的所有检查。

snmp_community

字符串

SNMP 社区。

SNMPv1 和 SNMPv2 代理检查所需。

snmpv3_authpassphrase

字符串

安全级别设置为 authNoPriv 或 authPriv 的 SNMPv3 代理检查使用的身份验证密码。

snmpv3_authprotocol

字符串

安全级别设置为 authNoPriv 或 authPriv 的 SNMPv3 代理检查使用的身份验证协议。

可能的值

MD5

SHA

选项

  • "MD5"

  • "SHA"

snmpv3_contextname

字符串

SNMPv3 上下文名称。仅 SNMPv3 检查使用。

snmpv3_privpassphrase

字符串

安全级别设置为 authPriv 的 SNMPv3 代理检查使用的隐私密码。

snmpv3_privprotocol

字符串

安全级别设置为 authPriv 的 SNMPv3 代理检查使用的隐私协议。

可能的值

DES

AES

选项

  • "DES"

  • "AES"

snmpv3_securitylevel

字符串

SNMPv3 代理检查使用的安全级别。

可能的值

noAuthNoPriv

authNoPriv

authPriv

选项

  • "noAuthNoPriv"

  • "authNoPriv"

  • "authPriv"

snmpv3_securityname

字符串

SNMPv3 代理检查使用的安全名称。

type

字符串

检查类型。

选项

  • "SSH"

  • "LDAP"

  • "SMTP"

  • "FTP"

  • "HTTP"

  • "POP"

  • "NNTP"

  • "IMAP"

  • "TCP"

  • "Zabbix"

  • "SNMPv1"

  • "SNMPv2"

  • ICMP

  • SNMPv3

  • HTTPS

  • Telnet

uniq

布尔值

是否将此检查用作设备唯一性标准。

一个发现规则只能配置一个唯一的检查。

用于Zabbix agent、SNMPv1、SNMPv2和SNMPv3 agent检查。

可能的值

no - (默认)不将此检查用作唯一性标准

yes - 将此检查用作唯一性标准

选项

  • false ← (默认)

  • true

delay

字符串

发现规则的执行间隔。

接受秒数、带后缀的时间单位和用户宏。

默认: "1h"

http_login_password

字符串

基本身份验证密码

http_login_user

字符串

基本身份验证用户名

iprange

列表 / 元素=字符串

一个或多个用逗号分隔的要检查的IP范围。

name

字符串 / 必填

发现规则的名称。

proxy

字符串

用于发现的代理名称。

state

字符串

创建或删除发现规则。

选项

  • "present" ← (默认)

  • "absent"

status

字符串

发现规则是否启用。

可能的值

enabled(默认)

disabled

选项

  • "enabled" ← (默认)

  • "disabled"

示例

# If you want to use Username and Password to be authenticated by Zabbix Server
- name: Set credentials to access Zabbix Server API
  ansible.builtin.set_fact:
    ansible_user: Admin
    ansible_httpapi_pass: zabbix

# If you want to use API token to be authenticated by Zabbix Server
# https://www.zabbix.com/documentation/current/en/manual/web_interface/frontend_sections/administration/general#api-tokens
- name: Set API token
  ansible.builtin.set_fact:
    ansible_zabbix_auth_key: 8ec0d52432c15c91fcafe9888500cf9a607f44091ab554dbee860f6b44fac895

# Base create discovery rule example
- name: Create discovery rule with ICMP and zabbix agent checks
  # set task level variables as we change ansible_connection plugin here
  vars:
    ansible_network_os: community.zabbix.zabbix
    ansible_connection: httpapi
    ansible_httpapi_port: 443
    ansible_httpapi_use_ssl: true
    ansible_httpapi_validate_certs: false
    ansible_zabbix_url_path: "zabbixeu"  # If Zabbix WebUI runs on non-default (zabbix) path ,e.g. http://<FQDN>/zabbixeu
    ansible_host: zabbix-example-fqdn.org
  community.zabbix.zabbix_discovery_rule:
    name: ACME
    state: present
    iprange: 192.168.1.1-255
    dchecks:
        - type: ICMP
        - type: Zabbix
          key: "system.hostname"
          ports: 10050
          uniq: yes
          host_source: "discovery"

# Base update (add new dcheck) discovery rule example
- name: Create discovery rule with ICMP and zabbix agent checks
  # set task level variables as we change ansible_connection plugin here
  vars:
    ansible_network_os: community.zabbix.zabbix
    ansible_connection: httpapi
    ansible_httpapi_port: 443
    ansible_httpapi_use_ssl: true
    ansible_httpapi_validate_certs: false
    ansible_zabbix_url_path: "zabbixeu"  # If Zabbix WebUI runs on non-default (zabbix) path ,e.g. http://<FQDN>/zabbixeu
    ansible_host: zabbix-example-fqdn.org
  community.zabbix.zabbix_discovery_rule:
    name: ACME
    state: present
    iprange: 192.168.1.1-255
    dchecks:
        - type: SNMPv3
          snmp_community: CUSTOMER@snmp3-readonly
          ports: "161"
          key: iso.3.6.1.2.1.1.1.0
          snmpv3_contextname: "ContextName"
          snmpv3_securityname: "SecurityName"
          snmpv3_securitylevel: "authPriv"
          snmpv3_authprotocol: "SHA"
          snmpv3_authpassphrase: "SeCrEt"
          snmpv3_privprotocol: "AES"
          snmpv3_privpassphrase: "TopSecret"
          uniq: no
          host_source: "DNS"
          name_source: "None"

# Base delete discovery rule example
- name: Delete discovery rule
  # set task level variables as we change ansible_connection plugin here
  vars:
    ansible_network_os: community.zabbix.zabbix
    ansible_connection: httpapi
    ansible_httpapi_port: 443
    ansible_httpapi_use_ssl: true
    ansible_httpapi_validate_certs: false
    ansible_zabbix_url_path: "zabbixeu"  # If Zabbix WebUI runs on non-default (zabbix) path ,e.g. http://<FQDN>/zabbixeu
    ansible_host: zabbix-example-fqdn.org
  community.zabbix.zabbix_discovery_rule:
    name: ACME
    state: absent

返回值

常见的返回值已在此处记录,以下是此模块特有的字段

描述

drule

字符串

发现规则名称。

返回:成功时

示例: "ACME"

druleid

字符串

发现规则ID。

返回:成功时

示例: "42"

msg

字符串

操作结果

返回:始终

示例: "发现规则已创建:ACME,ID:42"

state

字符串

执行结束时发现规则的状态。

返回:成功时

示例: "present"

作者

  • Tobias Birkefeld (@tcraxs)