使用Ansible在Zabbix中添加或获取主机群组

概括

    Ansibleを使ってzabbixのホストグループを追加・取得する方法を記載します。

太长了,不想读。

    • Ansibleでhost groupを新規に作成する場合は、community.zabbix.zabbix_groupを使用する

既に同じホストグループ名がある場合、処理はOKとなる

Ansibleでhost groupの情報を取得する場合は、community.zabbix.zabbix_group_infoを使用する

取得したホストグループが存在する場合、OKとなる
取得したホストグループが1つでも存在する場合、存在するホストの情報のみ取得しOKとなる
取得したいホストグループが全て存在しない場合、エラーとなる

目录

    1. 准备

 

    1. 创建用于添加主机组的yal文件

 

    1. 执行

 

    1. 确认

 

    通过Ansible获取已注册的主机信息来确认注册

使用Ansible来添加Zabbix主机组的方法

准备好

    • zabbixを用意する

今回はdockerを使って検証用zabbixを立てています

dockerでzabbixを準備する際は、こちらの記事を参照ください

ansibleのinstallはこちらを確認ください(今回は解説を省略します)
zabbix-apiのinstall

下記コマンドを実行

$ pip install zabbix-api

创建一个用于添加主机组的yal文件。

---
- name: "fetch host group sample"
  hosts: localhost
  vars:
    url: "http://localhost:8081"
    user: "Admin"
    password: "*****" #ご自分の環境に合ったパスワードを入力ください
    ansible_python_interpreter: /usr/bin/python3
    target_groups:
      - "test group1"
      - "test group2"
  tasks:
    - community.zabbix.zabbix_group:
        server_url: "{{ url }}"
        login_user: "{{ user }}"
        login_password: "{{ password }}"
        state: present
        host_groups: "{{ target_groups }}"

解释

- name: "fetch host group sample"
  hosts: localhost

nameはわかりやすくするためにつけています

hostはlocalhostを使用

接続先(localhostは、インベントリーになくとも指定可能)

  vars:
    url: "http://localhost:8081"
    user: "Admin"
    password: "*****" #ご自分の環境に合ったパスワードを入力ください
    ansible_python_interpreter: /usr/bin/python3
    target_groups:
      - "test group1"
      - "test group2"
    • 後々、使いまわしたいのでzabbixに必要な情報などを事前に変数として定義

ansible_python_interpreterは、Ansibleが使用するpython interpreterを指定

今回はzabbix-apiが入っていないinterpreterを見に行っていたため指定しています

  tasks:
    - community.zabbix.zabbix_group:
        server_url: "{{ url }}"
        login_user: "{{ user }}"
        login_password: "{{ password }}"
        state: present
        host_groups: "{{ target_groups }}"

community.zabbix.zabbix_group配下に情報を記載しホストグループの登録を行う

既にホストグループが存在する場合はOKとなる

host_groupsにリスト形式で登録したいホストグループを記載する

stateで登録・削除の指定をする

present: 登録(default)
absent: 削除

state以外にもキーがあるので詳しくは[こちら][3をご確認ください

3. 执行

    下記コマンドで実行する
$ ansible-playbook create_host_group.yml
    実行結果
$ ansible-playbook create_host_group.yml
[WARNING]: No inventory was parsed, only implicit localhost is available
[WARNING]: provided hosts list is empty, only localhost is available. Note that the implicit localhost
does not match 'all'

PLAY [fetch host group sample] ***************************************************************************

TASK [community.zabbix.zabbix_group] *********************************************************************
changed: [localhost]

PLAY RECAP ***********************************************************************************************
localhost                  : ok=1    changed=1    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0   

4. 确认

    • zabbix上で確認する

登録できていた

create_host_group_for_zabbix.png

通过Ansible获取已注册的主机信息,并确认是否已注册。

我将删除刚刚注册的主机组。

    コードを少し修正
  tasks:
    - community.zabbix.zabbix_group:
        server_url: "{{ url }}"
        login_user: "{{ user }}"
        login_password: "{{ password }}"
        state: absent                  # ←元々present
        host_groups: "{{ target_groups }}"
    実行
$ ansible-playbook create_host_group.yml
[WARNING]: No inventory was parsed, only implicit localhost is available
[WARNING]: provided hosts list is empty, only localhost is available. Note that
the implicit localhost does not match 'all'

PLAY [fetch host group sample] *************************************************

TASK [Gathering Facts] *********************************************************
ok: [localhost]

TASK [create host group] *******************************************************
changed: [localhost]

PLAY RECAP *********************************************************************
localhost                  : ok=2    changed=1    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0   
    • 確認

削除できてそう

delete_host_group_zabbix.png

实现一段代码,用Ansible获取已注册主机信息并确认注册。

---
  tasks:
    - name: "create host group"
      community.zabbix.zabbix_group:
        server_url: "{{ url }}"
        login_user: "{{ user }}"
        login_password: "{{ password }}"
        state: present
        host_groups: "{{ target_group }}"

    # 下記の内容を追加
    - name: "get host group"
      community.zabbix.zabbix_group_info:
        server_url: "{{ url }}"
        login_user: "{{ user }}"
        login_password: "{{ password }}"
        hostgroup_name: "{{ target_group }}"
      register: host_info_result

    - name: "display host_info_result"
      debug:
        var: host_info_result

community.zabbix.zabbix_group_infoを用いてホストグループの情報を取得することができる

存在しないホストグループを指定した場合エラーとなる
fatal: [localhost]: FAILED! => {“changed”: false, “msg”: “Hostgroup not found: [‘test group3’, ‘test group4’]”}

取得できていることで登録確認を行うことができる

実行結果

“test group1″と”test group2″の情報が取得できているため登録成功

$ ansible-playbook create_host_group.yml
[WARNING]: No inventory was parsed, only implicit localhost is available
[WARNING]: provided hosts list is empty, only localhost is available. Note that
the implicit localhost does not match 'all'

PLAY [fetch host group sample] *************************************************

TASK [Gathering Facts] *********************************************************
ok: [localhost]

TASK [create host group] *******************************************************
changed: [localhost]

TASK [get host group] **********************************************************
ok: [localhost]

TASK [display host_info_result] ************************************************
ok: [localhost] => {
    "host_info_result": {
        "changed": false,
        "failed": false,
        "host_groups": [
            {
                "flags": "0",
                "groupid": "22",
                "internal": "0",
                "name": "test group1",
                "uuid": "8693df5fe8fa4c0f81fa36991127a5ec"
            },
            {
                "flags": "0",
                "groupid": "23",
                "internal": "0",
                "name": "test group2",
                "uuid": "be66d01bdd48439b974ca6bdee705c46"
            }
        ]
    }
}

PLAY RECAP *********************************************************************
localhost                  : ok=4    changed=1    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0  

请提供以下的中文引用参考。

    • https://docs.ansible.com/ansible/latest/collections/community/zabbix/zabbix_group_module.html#ansible-collections-community-zabbix-zabbix-group-module

 

    • https://docs.ansible.com/ansible/latest/collections/community/zabbix/zabbix_group_info_module.html#ansible-collections-community-zabbix-zabbix-group-info-module

 

    https://docs.ansible.com/ansible/2.9_ja/installation_guide/intro_installation.html
广告
将在 10 秒后关闭
bannerAds