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

发现 - 此检查的发现值

此选项自 Zabbix 4.4 起可用

选择

  • "DNS" ← (默认)

  • "IP"

  • "discovery"

key

字符串

此属性的值因检查的类型而异

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

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

name_source

字符串

可见名称的来源。

可能的值

none -(默认)未指定

DNS

IP

发现 - 此检查的发现值

此选项自 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

list / elements=string

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

name

string / required

发现规则的名称。

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)