概要
ZabbixでNW機器を監視し、通信断が復旧したらAnsibleでログを自動取得します。
昨日の記事では、Ansible側に監視対象機器のIPアドレスを設定しており、使いまわすような設定ではありませんでした。
「Ansible × Zabbix」通信断が復旧したときのログ取得を自動化する - mito’s blog
今回はそこを改善し、IPアドレスを引数として渡すことで複数の監視機器で使いまわせる設定にします。
主にAWX(Ansible)のREST APIがメインになります。
環境
Software | Versions |
---|---|
AWX(Ansible) | 13.0.0 |
Zabbix | 5.0 |
ベースの構築/設定
昨日の記事を参照してください。
「Ansible × Zabbix」通信断が復旧したときのログ取得を自動化する - mito’s blog
1.AWXの設定
前回との差分を記載します
- Playbookの作成
--- - hosts: "{{ host_name }}" #サーベイで入力する gather_facts: no tasks: - name: show command ios_command: commands: - show running-config - show log register: result - name: debug debug: msg: "{{ result.stdout_lines }}"
- ワークフローの作成
サーベイに以下を追加します。
- プロンプトに「HOST_NAME」、回答の変数名に「host_name」、回答タイプに「テキスト」を設定
- プロンプトに「HOST_IP」、回答の変数名に「ansible_host」、回答タイプに「テキスト」を設定
ワークフロビジュアライザーで作成したテンプレートを追加します。
- REST APIの設定/確認
2.Zabbixの設定
アクションのコマンド設定が前回と変わります。
- コマンド
curl -f -k -H 'Content-Type: application/json' -X POST --user '「AWXログインID」:「AWXログインパスワード」' http://「IPアドレス」/api/v2/workflow_job_templates/ワークフローID」/launch/ -d "{\"extra_vars\": {\"host_name\":\"{HOST.HOST}\",\"ansible_host\":\"{HOST.IP}\"}}"
- {HOST.HOST}
- アクションを起動(障害検知)したホストのホスト名を格納しているマクロです。
- {HOST.IP}
- アクションを起動(障害検知)したホストのIPアドレスを格納しているマクロです。
3.Ansible × Zabbix の連携
監視対象のcsr-1を再起動させます。
Zabbixが通信断、および復旧を検知したあと、アクションが実行されます。ここまでは前回と同じです。
AWXでは、対象のワークフローが実行されています。
追加変数も正常に引き渡されていることが確認できます。
雑記
ひとまず満足。。。
雨が続いて走れないのでブログを書く。