自宅ではAnsibleを導入してから、以下OSやソフトウェアに対して作業のコード化や自動化を行ってきた。導入手順などは以下記事を参照。
OS/ソフトウェア | URL |
---|---|
Linux | AnsibleでLinuxサーバの初期設定と単体テストを行う |
Windows Server | AnsibleからWindows Serverに接続するための事前作業 |
vSphere ESXi | AnsibleでESXi上に仮想マシンを構築する |
今回は、Ansibleを使ってZabbixを操作するための手順を記載する。Zabbixはcommunity.zabbix
というモジュールで操作可能となる。
環境
今回手順を確認した環境は以下の通り。
- コントロールノード
- OS : AlmaLinux 8.5
- Ansible : 8.1.0 [core 2.15.1]
- Zabbix : 6.0.17
AnsibleでZabbixを操作する場合は、事前にzabbix-api
のPythonパッケージをインストールする必要があるため、pip
コマンドを使って以下の通りインストールしておこう。
# pip3 install zabbix-api
Zabbixのメンテナンス期間を作成するPlaybook
community.zabbix
は、Zabbix設定のための各種モジュールが提供されている。設定したい内容に応じて、以下URLより必要なモジュールを探して利用しよう。
今回は、シンプルにZabbixの「メンテナンス期間」を作成するだけのPlaybookを作成した。
以下にPlaybookの内容を説明する。
Playbook説明
変数 (vars
)
Ansibleを使ってZabbixを操作する場合、ansible_user
やansible_password
ではなくZabbixのログインユーザ情報とパスワードの指定が常に必要となる。それ以外の設定値の変数は、使用するZabbixモジュールに応じて追加が必要となる。
変数 | 設定値 |
---|---|
ansible_user | Zabbixのログインユーザを指定。今回はAdmin を指定する。 |
ansible_httpapi_pass | Zabbixのログインユーザのパスワードを指定する。 |
ansible_network_os | community.zabbix.zabbix |
ansible_connection | httpapi |
ansible_httpapi_port | 今回はZabbixサーバはHTTPアクセスによる構成としていることから、80を指定する。 |
ansible_zabbix_url_path | Zabbixサーバにアクセスする際のURLのパスを記載する。具体的には、http://[ZabbixサーバのIPアドレス]/[パス] の[パス] に記載の文字列を指定すればよく、通常はzabbix となるはずだ。 |
ansible_host | ZabbixサーバのIPアドレスを指定する。 |
zabbix_maintenance.name | 「メンテナンス期間」に使用する名前を指定する。 |
zabbix_maintenance.host_name | 「メンテナンス期間」で指定する監視対象ホストを指定する。 |
zabbix_maintenance.minutes | 「メンテナンス期間」の期間を指定する。今回は「30分」を指定する。 |
タスク (tasks
)
今回のPlaybookのタスクは、以下1個のみとなる。
タスク | モジュール | 説明 |
---|---|---|
メンテナンス期間作成 | zabbix_maintenance | メンテナンス期間を作成する。「有効期間の開始日時」はタスク実行時間となり、「有効期間の終了日時」はminutes に設定した時間経過後となるため、今回は30分後となる。例えば、Ansibleを5:00に実行した場合は、5:30がメンテナンス期間の終了日時となる。 |
Playbook
以上をふまえ、Playbook全体は以下となる。
set_zabbix_maintenance.yml
---
- name: Set zabbix maintenance
gather_facts: true
hosts: zabbix_servers
vars:
ansible_user: Admin
ansible_httpapi_pass: zabbix
ansible_network_os: community.zabbix.zabbix
ansible_connection: httpapi
ansible_httpapi_port: 80
ansible_zabbix_url_path: zabbix
ansible_host: 192.168.11.24
zabbix_maintenance:
name: Test maintenance
host_name: Zabbix server
minutes: 30
tasks:
- name: Enable maintenance
community.zabbix.zabbix_maintenance:
name: "{{ zabbix_maintenance.name }}"
host_name: "{{ zabbix_maintenance.host_name }}"
minutes: "{{ zabbix_maintenance.minutes }}"
collect_data: true
state: present
実行結果
Playbookの実行結果は以下の通り。
# ansible-playbook -i hosts zabbix/set_zabbix_maintenance.yml
PLAY [Get zabbix info] *********************************************************************************************
TASK [Gathering Facts] *********************************************************************************************
ok: [t1024cent]
TASK [Enable maintenance] ******************************************************************************************
changed: [t1024cent]
PLAY RECAP *********************************************************************************************************
t1024cent : ok=2 changed=1 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
Zabbixの管理画面からも、メンテナンス期間が作成されたことが確認できた。22:40にAnsibleを実行したため、メンテナンス期間の終了日時は30分後の23:10となっていることがわかる。
以上で、Ansibleを使ってZabbixを操作するための手順は完了となる。
更新履歴
- 2023/4/22 新規作成
- 2023/6/25 Ansibleバージョンを6.0.0 -> 8.1.0へバージョンアップしたことに伴い記載を更新
0 件のコメント:
コメントを投稿