写Ansible playbook添加zabbix被监控的对象

本主题达到的效果是能通过编写Ansible Playbook,创建zabbix主机组,把被监控的对象加入到zabbix监控系统中,同时链接到对象的模板。

1.准备工作

在zabbix服务器上面,我们需要安装ansible,同时呢,还需要安装一些其它组件,如下:

#  yum install epel-release
#  yum install ansible python-pip
#  pip install zabbix-api
#  pip install --upgrade pip

2. 添加zabbix 主机组的playbook

添加主机前,我们需要创建主机组。

# ansible-playbook add-hostgroup.yml                 #执行playbook会自动添加主机组

playbook内容如下:

添加zabbix主机组
---
- name: config zabbix
  hosts: localhost
  tasks:
  - name: create and update zabbix groups
    local_action:
      module: zabbix_group
      server_url: http://wszabbix.wondershare.cn            #zabbix服务器的访问地址
      login_user: wszabbix
      login_password: *******
      state: present
      host_groups:
        - IAAS-App-AD-Srv
        - IAAS-App-Mail-Srv
        - IAAS-App-Skype-Srv
        - IAAS-App-SQL-Srv
        - IAAS-App-Horizon-Srv
        - IAAS-App-Veeam-Srv

3. 添加zabbix主机的playbook

我们需要先写一个变量文件,存放主机信息,采用字典的书写方式,变量文件:win_host_info.yml ,内容如下:

主机变量
hostinfo:                                      #变量名字
  update.wondershare.cn:                       #变量的key,这个可以自己定义,也可以不用被监控的主机的FQDN
    fqdn: update.wondershare.cn                #我定义的是主机的FQDN(变量key的value值,我们需要在playbook中引用,最好定义有意义的名字)
    app: IAAS-App-AD-Srv                       #我的用途是主机组,表示主机存放在哪个主机组
    ip: 192.168.11.157                         #我的用途是主机的IP地址
  szdc04.wondershare.cn:
    fqdn: szdc04.wondershare.cn
    app: IAAS-App-AD-Srv
    ip: 192.168.10.81

定义好了主机变量文件,我们就可以在playbook中引用了。

#ansible-playbook add-win-hosts.yml                        #以下以配置playbook的内容

添加zabbix主机
---
- name: config zabbix
  hosts: localhost
  vars_files:
    - win_host_info.yml
  tasks:
  - name: add and update Windows hosts to zabbix
    local_action:
      module: zabbix_host
      server_url: http://wszabbix.wondershare.cn
      login_user: wszabbix
      login_password: ******
      host_name: "{{ item.value.fqdn }}"
      visible_name: "{{ item.value.fqdn }}"
      host_groups:
        - "{{ item.value.app }}"
      link_templates:                                              #链接的模板
        - Template ICMP Ping
        - Template OS Windows
        - Template TCP Status
      status: enabled
      state: present
      inventory_mode: disabled
      interfaces:
        - type: 1
          main: 1
          useip: 1
          ip: "{{ item.value.ip }}"
          dns: ""
          port: 10050
    with_dict: "{{ hostinfo }}"                                  #迭代的类型选择with_dict
原文地址:https://www.cnblogs.com/reachos/p/10619644.html