使用Ansible在Zabbix中添加或获取主机群组
概括
- Ansibleを使ってzabbixのホストグループを追加・取得する方法を記載します。
太长了,不想读。
-
- Ansibleでhost groupを新規に作成する場合は、community.zabbix.zabbix_groupを使用する
既に同じホストグループ名がある場合、処理はOKとなる
Ansibleでhost groupの情報を取得する場合は、community.zabbix.zabbix_group_infoを使用する
取得したホストグループが存在する場合、OKとなる
取得したホストグループが1つでも存在する場合、存在するホストの情報のみ取得しOKとなる
取得したいホストグループが全て存在しない場合、エラーとなる
目录
-
- 准备
-
- 创建用于添加主机组的yal文件
-
- 执行
-
- 确认
- 通过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上で確認する
登録できていた
通过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
-
- 確認
削除できてそう
实现一段代码,用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