community.zabbix.zabbix_host 模块 – 创建/更新/删除 Zabbix 主机
注意
此模块是 community.zabbix 集合(版本 3.2.0)的一部分。
如果您正在使用 ansible 包,您可能已经安装了这个集合。它不包含在 ansible-core 中。要检查是否已安装,请运行 ansible-galaxy collection list。
要安装它,请使用:ansible-galaxy collection install community.zabbix。您需要进一步的要求才能使用此模块,请参阅 要求 以了解详细信息。
要在 playbook 中使用它,请指定:community.zabbix.zabbix_host。
概要
- 此模块允许您创建、修改和删除 Zabbix 主机条目以及关联的组和模板数据。 
要求
执行此模块的主机上需要以下要求。
- python >= 3.9 
参数
| 参数 | 注释 | 
|---|---|
| 必需的证书颁发者。 | |
| Zabbix 中主机的描述。 | |
| 覆盖主机配置,即使已存在。 选项 
 | |
| 主机所属的主机组列表。 确保用于 Ansible 的 Zabbix 用户可以读取这些组。 | |
| Zabbix 中主机的名称。 host_name 是使用的唯一标识符,不能使用此模块进行更新。 | |
| 基本身份验证密码 | |
| 基本身份验证登录名 | |
| 为主机创建的接口列表(请参阅下面的示例)。 有关更多信息,请查看主机接口文档: 默认值:  | |
| SNMP 主机接口的附加详细信息。 当 type=”snmp” 时必需。 默认值:  | |
| SNMPv3 身份验证密码。 当 securitylevel=1(authNoPriv)或 securitylevel=2(AuthPriv)时使用。 默认值:  | |
| SNMPv3 身份验证协议。 当 securitylevel=1(authNoPriv)或 securitylevel=2(AuthPriv)时使用。 仅在 Zabbix 5.4 或更高版本上支持变体 2、3、4、5 0 (MD5)、1 (SHA1)、2 (SHA224)、3 (SHA256)、4 (SHA384)、5 (SHA512) 选项 
 | |
| 是否使用批量 SNMP 请求。 0(不使用批量请求)、1(使用批量请求) 选项 
 | |
| SNMPv1 和 SNMPv2 团体字符串。 当 version=1 或 version=2 时必需。 默认值:  | |
| SNMPv3 上下文名称。 默认值:  | |
| SNMPv3 隐私密码。 当 securitylevel=2(AuthPriv)时使用。 默认值:  | |
| SNMPv3 隐私协议。 当 securitylevel=2(authPriv)时使用。 仅在 Zabbix 5.4 或更高版本上支持变体 2、3、4、5 0 (DES)、1 (AES128)、2 (AES192)、3 (AES256)、4 (AES192C)、5 (AES256C) 选项 
 | |
| SNMPv3 安全级别。 0 (noAuthNoPriv)、1 (authNoPriv)、2 (authPriv)。 选项 
 | |
| SNMPv3 安全名称。 默认值:  | |
| SNMP 版本。 1 (SNMPv1)、2 (SNMPv2c)、3 (SNMPv3) 选项 
 | |
| 主机接口的 DNS 名称。 如果 useip=0,则必需。 | |
| 主机接口使用的 IP 地址。 如果 useip=1,则必需。 | |
| 是否将接口用作默认接口。 如果提供了多个具有相同类型的接口,则只能有一个是默认接口。 0 (非默认)、1 (默认) 选项 
 | |
| 主机接口使用的端口。 如果未指定,则使用每种接口类型的默认端口 如果 type=”agent”,则为 10050 如果 type=”snmp”,则为 161 如果 type=”ipmi”,则为 623 如果 type=”jmx”,则为 12345 | |
| 要添加的接口类型 数值也接受作为接口类型 1 = agent 2 = snmp 3 = ipmi 4 = jmx 选项 
 | |
| 使用 IP 地址而不是 DNS 名称连接到主机接口。 0 (不使用 IP),1 (使用 IP) 选项 
 | |
| 配置资产清单模式。 选项 
 | |
| 为 Zabbix 资产清单添加 Facts (例如,标签) (请参见下面的示例)。 请查看接口文档以获取有关支持属性的更多信息 https://www.zabbix.com/documentation/current/en/manual/api/reference/host/object#host-inventory | |
| IPMI 身份验证算法。 请查看主机对象文档以获取有关支持属性的更多信息 https://www.zabbix.com/documentation/3.4/manual/api/reference/host/object 可能的值有, 请注意,当更新任何 *ipmi_* 选项时,Zabbix API 会将缺失的设置视为默认值;这意味着,如果您尝试单独设置四个选项中的任何一个,其余选项将重置为默认值。 | |
| IPMI 密码。 另请参阅 *ipmi_authtype* 文档中的最后一条说明 | |
| IPMI 特权级别。 请查看主机对象文档以获取有关支持属性的更多信息 https://www.zabbix.com/documentation/3.4/manual/api/reference/host/object 可能的值为  另请参阅 *ipmi_authtype* 文档中的最后一条说明 | |
| IPMI 用户名。 另请参阅 *ipmi_authtype* 文档中的最后一条说明 | |
| 链接到主机的模板列表。 | |
| 要分配给 Zabbix 主机的用户宏列表。 提供带有 *force=yes* 的 *macros=[]* 将清除主机的所有现有用户宏。 | |
| 用户宏的描述。 默认值:  | |
| 用户宏的名称。 可以使用 Zabbix 本机格式 “{$MACRO}” 或简短格式 “MACRO”。 | |
| 宏的类型。 由于 API 不会返回 secret 宏的值,因此没有可靠的方法来检测 secret 宏值的内容更改。 要更新 secret 宏值,请同时更新其描述,以便通过检查。 选项 
 | |
| 用户宏的值。 | |
| 在 Zabbix 7.0 中引入的参数。 用于监视主机的源。 选项 
 | |
| 要使用的 Zabbix 代理的名称。 如果  | |
| 在 Zabbix 7.0 中引入的参数。 用于监视主机的代理组。 如果  | |
| 主机的状态。 如果为  如果为  选项 
 | |
| 主机的监视状态。 选项 
 | |
| 要分配给 Zabbix 主机的主机标签列表。 提供带有 *force=yes* 的 *tags=[]* 将清除主机的所有标签。 | |
| 主机标签的名称。 | |
| 主机标签的值。 默认值:  | |
| 指定允许哪些类型的连接用于传入连接。 tls_accept 参数接受 1 到 7 的值 可能的值,1 (无加密),2 (PSK),4 (证书)。 可以组合这些值。 | |
| 指定要用于传出连接的加密类型。 可能的值,1 (无加密),2 (PSK),4 (证书)。 | |
| PSK 值是难以猜测的十六进制数字字符串。 预共享密钥,至少 32 位十六进制数字。如果 *tls_connect* 或 *tls_accept* 启用了 PSK,则为必填项。 使用此参数会使此模块不具有幂等性。 | |
| 它是 Zabbix 组件引用此特定 PSK 的唯一名称 请勿将敏感信息放入 PSK 身份字符串中,它会在网络上以未加密的形式传输。 仅适用于 >= Zabbix 3.0 将此参数与 Zabbix >= 5.4 一起使用会使此模块不具有幂等性。 | |
| 必需的证书主题。 | |
| 主机在 Zabbix 中的可见名称。 | 
示例
# 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
- name: Create a new host or rewrite an existing host's info (Zabbix <= 7.0)
# Set task level following variables for Zabbix Server host in task
  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
  become: false
  delegate_to: zabbix-example-fqdn.org# you can use delegate_to or task level ansible_host like next example
  community.zabbix.zabbix_host:
    host_name: ExampleHost
    visible_name: ExampleName
    description: My ExampleHost Description
    host_groups:
      - Example group1
      - Example group2
    link_templates:
      - Example template1
      - Example template2
    status: enabled
    state: present
    inventory_mode: manual
    inventory_zabbix:
      tag: "{{ your_tag }}"
      alias: "{{ your_alias }}"
      notes: "Special Informations: {{ your_informations | default('None') }}"
      location: "{{ your_location }}"
      site_rack: "{{ your_site_rack }}"
      os: "{{ your_os }}"
      hardware: "{{ your_hardware }}"
    ipmi_authtype: 2
    ipmi_privilege: 4
    ipmi_username: username
    ipmi_password: password
    interfaces:
      - type: 1
        main: 1
        useip: 1
        ip: 10.xx.xx.xx
        dns: ""
        port: "10050"
      - type: 4
        main: 1
        useip: 1
        ip: 10.xx.xx.xx
        dns: ""
        port: "12345"
    proxy: a.zabbix.proxy
    macros:
      - macro: "{$EXAMPLEMACRO}"
        value: ExampleMacroValue
      - macro: EXAMPLEMACRO2
        value: ExampleMacroValue2
        description: Example desc that work only with Zabbix 4.4 and higher
    tags:
      - tag: ExampleHostsTag
      - tag: ExampleHostsTag2
        value: ExampleTagValue
- name: Create a new host or update it - monitored by Zabbix Proxy (Zabbix >= 7.0)
# Set task level following variables for Zabbix Server host in task
  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
  become: false
  delegate_to: zabbix-example-fqdn.org# you can use delegate_to or task level ansible_host like next example
  community.zabbix.zabbix_host:
    host_name: ExampleHost
    host_groups:
      - Example group1
    status: enabled
    state: present
    monitored_by: proxy
    proxy: a.zabbix.proxy
- name: Create a new host or update it - monitored by Zabbix Proxy Group (Zabbix >= 7.0)
# Set task level following variables for Zabbix Server host in task
  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
  become: false
  delegate_to: zabbix-example-fqdn.org# you can use delegate_to or task level ansible_host like next example
  community.zabbix.zabbix_host:
    host_name: ExampleHost
    host_groups:
      - Example group1
    status: enabled
    state: present
    monitored_by: proxy_group
    proxy: a.zabbix.proxy.group
- name: Update an existing host's TLS settings
# Set current task level variables for Zabbix Server host in task
  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 # you can use task level ansible_host or delegate_to like in previous example
  become: false
  community.zabbix.zabbix_host:
    host_name: ExampleHost
    visible_name: ExampleName
    host_groups:
      - Example group1
    tls_psk_identity: test
    tls_connect: 2
    tls_psk: 123456789abcdef123456789abcdef12
    force: false
