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 件のコメント:
コメントを投稿