community.zabbix.zabbix_map 模块 – 创建/更新/删除 Zabbix 地图
注意
此模块是 community.zabbix 集合 (版本 3.2.0) 的一部分。
如果您使用的是 ansible 包,则可能已安装此集合。它不包含在 ansible-core 中。要检查它是否已安装,请运行 ansible-galaxy collection list。
要安装它,请使用:ansible-galaxy collection install community.zabbix。您需要其他要求才能使用此模块,有关详细信息,请参阅 要求。
要在 playbook 中使用它,请指定:community.zabbix.zabbix_map。
概要
- 此模块允许您使用 Graphviz 二进制文件和 DOT 语言编写的文本描述来创建、修改和删除 Zabbix 地图条目。图的节点将成为地图元素,边将成为地图元素之间的链接。有关详细信息,请参阅 https://en.wikipedia.org/wiki/DOT_(graph_description_language) 和 https://graphviz.cn/。灵感来自 http://blog.zabbix.com/maps-for-the-lazy/。 
- 支持以下额外的节点属性: - zbx_host包含 Zabbix 中主机的名称。如果所需的地图元素类型为- host,则使用此属性。- zbx_group包含 Zabbix 中主机组的名称。如果所需的地图元素类型为- host group,则使用此属性。- zbx_sysmap包含 Zabbix 中地图的名称。如果所需的地图元素类型为- map,则使用此属性。- zbx_label包含地图元素的标签。- zbx_image包含用于在默认状态下显示元素的图像名称。- zbx_image_disabled包含用于显示已禁用的地图元素的图像名称。- zbx_image_maintenance包含用于显示处于维护状态的地图元素的图像名称。- zbx_image_problem包含用于显示出现问题的 map 元素的图像名称。- zbx_url以- name:url格式包含地图元素的 URL。可以通过添加后缀来指定多个 URL(例如,- zbx_url1、- zbx_url2)。
- 支持以下额外的链接属性: - zbx_draw_style包含链接线的绘制样式。可能的值:- line、- bold、- dotted、- dashed。- zbx_trigger以- host_name:trigger_name格式包含用作链接指示器的触发器的名称。可以通过添加后缀来指定多个触发器(例如,- zbx_trigger1、- zbx_trigger2)。- zbx_trigger_color包含指示器颜色,指定为 CSS3 名称或以- #开头的十六进制代码。- zbx_trigger_draw_style包含指示器的绘制样式。可能的值与- zbx_draw_style相同。
要求
在执行此模块的主机上需要以下要求。
- python >= 3.9 
- pydotplus 
- webcolors 
- Pillow 
- Graphviz 
参数
| 参数 | 注释 | 
|---|---|
| 用 DOT 语言编写的图表。 | |
| 如果此元素未定义  | |
| 是否为具有单个问题的元素显示问题触发器。 选项 
 | |
| 地图的高度。 默认值:  | |
| 是否启用图标高亮显示。 选项 
 | |
| 基本身份验证密码 | |
| 基本身份验证用户名 | |
| 地图元素标签类型。 选项 
 | |
| 地图边界与其元素之间的空白大小。 默认值:  | |
| 地图的名称。 | |
| 地图的状态。 在  在  选项 
 | |
| 地图的宽度。 默认值:  | 
示例
# 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
###
### Example inventory:
# [web]
# web[01:03].example.com ansible_host=127.0.0.1
# [db]
# db.example.com ansible_host=127.0.0.1
# [backup]
# backup.example.com ansible_host=127.0.0.1
###
### Each inventory host is present in Zabbix with a matching name.
###
### Contents of "map.j2":
# digraph G {
#     graph [layout=dot splines=false overlap=scale]
#     INTERNET [zbx_url="Google:https://google.com" zbx_image="Cloud_(96)"]
# {% for web_host in groups.web %}
#     {% set web_loop = loop %}
#     web{{ '%03d' % web_loop.index }} [zbx_host="{{ web_host }}"]
#     INTERNET -> web{{ '%03d' % web_loop.index }} [zbx_trigger="{{ web_host }}:Zabbix agent on {HOST.NAME} is unreachable for 5 minutes"]
#     {% for db_host in groups.db %}
#       {% set db_loop = loop %}
#     web{{ '%03d' % web_loop.index }} -> db{{ '%03d' % db_loop.index }}
#     {% endfor %}
# {% endfor %}
#     { rank=same
# {% for db_host in groups.db %}
#     {% set db_loop = loop %}
#     db{{ '%03d' % db_loop.index }} [zbx_host="{{ db_host }}"]
#     {% for backup_host in groups.backup %}
#         {% set backup_loop = loop %}
#         db{{ '%03d' % db_loop.index }} -> backup{{ '%03d' % backup_loop.index }} [color="blue"]
#     {% endfor %}
# {% endfor %}
# {% for backup_host in groups.backup %}
#     {% set backup_loop = loop %}
#         backup{{ '%03d' % backup_loop.index }} [zbx_host="{{ backup_host }}"]
# {% endfor %}
#     }
# }
###
### Create Zabbix map "Demo Map" made of template "map.j2"
- name: Create Zabbix map
  # 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_map:
    name: Demo map
    state: present
    data: "{{ lookup('template', 'map.j2') }}"
    default_image: Server_(64)
    expand_problem: no
    highlight: no
    label_type: label
  delegate_to: localhost
  run_once: yes
