5.7K Views
November 02, 22
スライド概要
自動化大好きエンジニアLT会 - vol.9 #自動化エンジニアのLT会
https://rakus.connpass.com/event/259685/
で、LTさせていただいた資料です。
ansible
イベントドリブンな Ansible ansible-rulebook をためしてみた 2022/11/02 自動化大好きエンジニアLT会 - vol.9 株式会社エーピーコミュニケーションズ 横地 晃 1
はじめに ◼ イベントドリブンなAnsibleを実現する ansible-rulebook というツールが登場しました(developer preview) ◼ 概要とデモをご紹介します ※ 本資料は ansible-rulebook 0.9.4 前提 2
自己紹介 横地 晃 @akira6592 所属 (株)エーピーコミュニケーションズ ネットワーク事業部 ACT 業務 ネットワーク自動化のご支援 てくなべ(ブログ) https://tekunabe.hatenablog.jp/ コミュニ Ansible ユーザ会、JANOG ティ 共著 Ansible クックブック Ansible 実践ガイド 第3版 https://book.impress.co.jp/books/1120101163 https://book.impress.co.jp/books/1118101094 3
そもそも Ansible とは 4
IT自動化ツール「Ansible」 ◼ ◼ Linux、Windows、クラウド、ネットワーク機器等の操作を自動化 自動化したい処理を Playbook に定義 ↓ Playbook の例 --- hosts: ios gather_facts: false 処理 tasks: - name: config IP address cisco.ios.ios_l3_interfaces: config: - name: GigabitEthernet3 ipv4: - address: 10.1.3.254/24 5
ansible-playbook と ansible-rulebook ansible-playbook ansible-rulebook 6
ansible-rulebook とは 7
Event-Driven Ansible を実現する中心のツール ◼ 人を介在させないPlaybookの実行が可能 ansible-playbook 人 Playbook実行 処理 ansible-rulebook イベント 8
Rulebookと 3つの要素 Source イベントの発生元 *1 Rule 条件 Action 何をするか Rulebook に定義 *1: 現状 Webhook、Kafka、file、Azure Event Hubs、Alertmanager 等に対応 https://ansible-rulebook.readthedocs.io/en/latest/sources.html 9
おためし 10
サンプル Rulebook --- name: Hello Events hosts: localhost sources: - ansible.eda.webhook: host: 0.0.0.0 port: 5000 rules: - name: Say Hello condition: event.payload.message == "sakana" action: run_playbook: name: test_playbook.yml Source 5000/TCP で Webhook待ち受け Rule ペイロード内の message が sakana なら Action Playbook「test_playbook.yml」を実行 11
Rulebook の実行とイベントの発生
◼
Rulebook を実行
Rulebook ファイル名
$ ansible-rulebook -i inventory.yml --rulebook test_rulebook.yml --verbose
◼
イベントの発生(今回は Webhookを模したcurl)
条件にマッチするペイロード
$ curl -H 'Content-Type: application/json' -d "{\"message\": \"sakana\"}" 127.0.0.1:5000/endpoint
12
Action が実行された結果
…(略)…
INFO:ansible_rulebook.builtin:running Ansible playbook: test_playbook.yml
INFO:ansible_rulebook.builtin:ruleset: Hello Events, rule: Say Hello
INFO:ansible_rulebook.builtin:Calling Ansible runner
PLAY [debug msg play]
action で指定した
Playbookが実行された
**********************************************************
TASK [debug msg] ***************************************************************
ok: [localhost] => {
"msg": "HELLO!!"
}
PLAY RECAP *********************************************************************
localhost : ok=1 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
13
デモ動画 当日流した動画 https://twitter.com/akira6592/status/1587720924471910400 14
まとめ 15
まとめ ◼ ansible-rulebook はインベントドリブンなAnsibleを実現するツール ◼ 考えられるユースケース(妄想) ◼ 障害発生時の自動復旧、自動情報収集 ◼ インシデント発生時の自動チケット起票 ◼ 構成ドリフトの自動修正 ◼ 他システムとAnsibleの連携 人が介在しない自動化の実現に、重要になりそうなツール ただし何事も使い分けは必要 16
参考資料 ◼ ansible-rulebook リポジトリ ◼ ◼ イベントソース一覧(ansible.edaコレクション内) ◼ ◼ https://www.youtube.com/watch?v=PtevBKX1SYI 公式ブログの Event-Driven Ansible に関する記事 ◼ ◼ https://github.com/ansible/event-driven-ansible/tree/main/plugins/event_source 紹介動画 ◼ ◼ https://github.com/ansible/ansible-rulebook https://www.ansible.com/blog/topic/event-driven-automation 私のブログ記事 ◼ https://tekunabe.hatenablog.jp/entry/2022/10/21/ansible-rulebook-intro 17