2024年6月22日土曜日

Zabbix 7.0をAnsibleで操作するためのcommunity.zabbixモジュール最新化手順

2024年6月4日にリリースされたZabbix 7.0をAnsibleで操作しようとしたところ、以下のようなInvalid paramsのエラーで失敗した。

failed: [t1023zabi] (item={'name': 't3051kube', 'groups': 'Linux servers', 'type': 'agent', 'ip': '192.168.1.1', 
'templates': ['Linux by Zabbix agent']}) => {"ansible_loop_var": "item", "changed": false, "item": {"groups": "Linux servers", 
"ip": "192.168.1.1", "name": "t3051kube", "templates": ["Linux by Zabbix agent"], "type": "agent"}, 
"msg": "connection error occurred: REST API returned {'code': -32602, 'message': 'Invalid params.', 
'data': 'Invalid parameter \"/1/groups/1\": unexpected parameter \"name\".'} 
when sending {\"jsonrpc\": \"2.0\", \"method\": \"host.create\", \"id\": \"706afb46-c4e4-461b-83e9-6e798396b800\", \"params\": {\"host\": \"t3051kube\", 
\"interfaces\": [{\"type\": 1, \"main\": 1, \"useip\": 1, \"ip\": \"192.168.1.1\", \"details\": {}, \"dns\": \"\", \"port\": \"10050\"}], 
\"groups\": [{\"groupid\": \"2\", \"name\": \"Linux servers\", \"flags\": \"0\", 
\"uuid\": \"dc579cd7a1a34222933f24f52a68bcd8\"}], \"status\": 0}, 
\"auth\": \"7922aa3xxxx556615xxxx0344xxxx2fea\"}"}

原因はAnsibleのcommunity.zabbixモジュールが古く、Zabbix 7.0にサポートしていなかったことが原因だった。本記事では、Zabbix 7.0をAnsibleで操作するために必要となるcommunity.zabbixモジュールの最新化手順を記載する。

環境

今回手順確認を行った環境の情報は以下の通り。

  • OS : AlmaLinux 8.5
  • Ansible : 8.1.0 (Ansible core 2.15.3)
  • community.zabbix : 2.1.0 → 3.0.0

community.zabbixモジュールの最新化手順

1. Ansible Galaxyにてモジュールを確認

community.zabbixモジュールは以下URLからバージョン情報を確認することができる。

また、変更内容はGitHubのChangelogから直接確認する。

以下の通り、v3.0.0においてZabbix 7.0で各種モジュールが動作するよう改修がされていることが確認できる。

zabbix_discovery_rule, zabbix_group_events_info, zabbix_host, zabbix_host_events_info, 
zabbix_proxy, zabbix_proxy_info modules updated to work wih Zabbix 7.0

2. 現在のバージョン確認

現在インストールされているcommunity.zabbixモジュールのバージョンを確認する。

# ansible-galaxy collection list community.zabbix
実行結果------------------------------
# /usr/local/lib/python3.9/site-packages/ansible_collections
Collection       Version
---------------- -------
community.zabbix 2.1.0  

3. Ansible Galaxyより最新版モジュールをインストール

以下コマンドで最新版モジュールをインストールする。なお、すでにモジュールがインストールされている場合インストールが実行されない (All requested collections are already installed.と表示されインストールが実施されない) ため、--forceオプションまたはバージョンを指定することでインストールを続行するようにしている。

# ansible-galaxy collection install community.zabbix --force
または
# ansible-galaxy collection install community.zabbix:3.0.0

4. インストール後のバージョン確認

インストール後のcommunity.zabbixモジュールのバージョンを確認する。

# ansible-galaxy collection list community.zabbix
実行結果------------------------------
# /root/.ansible/collections/ansible_collections
Collection       Version
---------------- -------
community.zabbix 3.0.0  

# /usr/local/lib/python3.9/site-packages/ansible_collections
Collection       Version
---------------- -------
community.zabbix 2.1.0  

5. Ansibleを実行

最後にZabbix 7.0に対してPlaybookを実行する。以下は、Zabbix 7.0に対して、community.zabbix.zabbix_hostモジュールを用いて監視対象ホストを登録した際の実行結果となり、問題なく実行できていることがわかる。
# ansible-playbook -i hosts -l t1023zabi zabbix/set_zabbix_host.yml

[root@t1025alma test]# ansible-playbook -i hosts -l t1023zabi zabbix/set_zabbix_host.yml

PLAY [Set zabbix host] **************************************************************************************************************************************************************

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

TASK [Create host] ******************************************************************************************************************************************************************
changed: [t1023zabi] => (item={'name': 't3051kube', 'groups': 'Linux servers', 'type': 'agent', 'ip': '192.168.1.1', 'templates': ['Linux by Zabbix agent']})

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

0 件のコメント:

コメントを投稿

人気の投稿