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://www.graphviz.org/。灵感来自 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