0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Ansibleを使ってzabbixにホストグループを追加・取得する

Last updated at Posted at 2022-10-15

概要

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

TL:DR

  • Ansibleでhost groupを新規に作成する場合は、community.zabbix.zabbix_groupを使用する
    • 既に同じホストグループ名がある場合、処理はOKとなる
  • Ansibleでhost groupの情報を取得する場合は、community.zabbix.zabbix_group_infoを使用する
    • 取得したホストグループが存在する場合、OKとなる
    • 取得したホストグループが1つでも存在する場合、存在するホストの情報のみ取得しOKとなる
    • 取得したいホストグループが全て存在しない場合、エラーとなる

目次

  1. 準備
  2. ホストグループを追加するためのyalファイルを作成
  3. 実行
  4. 確認
  5. 登録したホスト情報を取得しAnsibleだけで登録を確認する

Ansibleを使ってzabbixにホストグループを追加する方法

1. 準備

  • zabbixを用意する
    • 今回はdockerを使って検証用zabbixを立てています
      • dockerでzabbixを準備する際は、こちらの記事を参照ください
  • ansibleのinstallはこちらを確認ください(今回は解説を省略します)
  • zabbix-apiのinstall
    • 下記コマンドを実行
$ pip install zabbix-api

2. ホストグループを追加するための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

5. 登録したホスト情報を取得し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  

参考

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?