はじめに
Ansible - Qiita Advent Calendar 2024 - Qiita の12/23 の記事になります(4時間遅れ)
Red Hatでコンサルタントをしている山下です。
今回の記事では2024年10月にリリースされたAAP 2.5 でアップデートされたEvent-Driven Ansible (EDA) の新機能を紹介させていただきます。
1.イベントのルーティングがさらに簡単に!
AAP 2.5からWebhookを利用したイベントルーティングを簡素化することができる、「イベントストリーム」という新しい仕組みが導入されました。 これにより、イベントソースを複数のルールブックに接続するプロセスが大幅に効率化されます。
抑えておきたいポイント:
単一のエンドポイントで管理が可能になりました。
以前は、ルールブックごとに新しいエンドポイントを設定する必要がありましたが、今では1つのエンドポイントで複数のルールブックに対応できます。
- 副次的ではありますが、ファイアウォールに開けるポート数が減り、保守作業も簡単になります。
あらかじめ用意された各種サービス向けのWebhook対応が設定をより簡潔にしてくれます。
- 例:ServiceNow、ソースコード管理(SCM)ツール、監視ツールなど。
活用例:
ネットワーク障害のアラート数が閾値を超えた際、自動でデータセンターをフェイルオーバー。
新しいコードをリポジトリにプッシュした際、Webサーバーを自動リロード。
一定期間利用されていない仮想マシンを自動でアーカイブし、リソースを回収。
2. 高スケーラビリティと高可用性
AAP 2.4ではHAオプションが提供されていませんでしたが、AAP 2.5から複数のEvent-Driven Ansibleノードをインストールできるようになり、高可用性を実現しました。
これにより、システム障害が発生しても自動化ジョブが継続され、業務が止まるリスクを軽減することができるようになります。 EDAはとても便利な半面、自動化が進むと共に重要度もますコンポーネントです。 例えば自動的に障害を検知してフェイルオーバーをするような処理をEDAに行わせている場合にEDAが実は障害で動作しておらずWebhookを受け取っていなかった、などということがあれば大問題に発展してしまいます。 そういった問題を解決するためにAAP 2.5ではHAサポートを行い、堅牢なシステムへと進化を遂げました。
抑えておきたいポイント:
スケーラブルなルールブック運用。
水平スケーリングにより、負荷が高いユースケースにも対応可能。
障害発生時のリスクを低減。
ミッションクリティカルなルールブックも安全に運用可能。
3. セキュリティと運用性の強化
AAP2.5からールブックで使用する認証情報やVault変数を安全に管理できるようになり、暗号化されたデータを活用で切るようになります。 またPlatform Gatewayの導入によりAAP全体で統一された認証メカニズムを導入し管理を簡素化し、統合されたRBACの適用がEDAにも行えるようになりました。
主なメリット:
エンタープライズ環境での安全性向上
機密情報を暗号化し、セキュリティリスクを低減。
4. 実際に動かしてみた!
これから新たに追加されたEvent streamを作成してみます。
Event streamを作成するためには認証情報の登録が必要になります。 今回の例ではBasic認証を追加しています。
次にEvent streamを作成していきます。今回はBasic認証のEvent stream typeを選択します。
使用できるEvent stream typeの一覧はこちらから確認できます。
Event streamが作成されるとEndpointが払い出されます。
このEndpointに対してRequestを投げることでJob templateの実施が可能になります。
次にEvent streamに紐づけるrulebookの登録を行います。 rule bookは以下のコードを用意しました、内容はいたってシンプルでEvent stream「basic」に対してRequestが来たらevent.payload.messageをパースし中に記載されている内容が"Ansible is super cool"であった場合は「Demo Job Template」を実施すると言ったものです。
--- - name: Listen for events on a webhook hosts: all sources: - name: 'basic' rules: - name: Say Nyahello condition: event.payload.message == "Ansible is super cool" action: run_job_template: name: Demo Job Template organization: Default
こちらのrulebookをGUIから登録していきます。 AAP2.5の新たなポイントはEvent stream(s)に先ほど作成したbasicを指定しているところになります。 新機能の紹介でもさせていただいた通り、複数のrulebookとEvent streamを1:nの関係で紐づけることができるようになりました。
早速先ほど作成したEndpointに対してRequestを発行してみます。
curl -k -X POST https://aap4.local:443/eda-event-streams/api/eda/v1/external_event_stream/24bba765-d2d2-47a6-a343-d6fb54c92f5f/post/ -u "admin:admin" -H "Content-Type: application/json" -d '{"message": "Ansible is super cool"}'
実際にEventが実施されたことが確認できました!
5. まとめ
今回のAAP 2.5でのEDAの進化により、エンタープライズ環境でのイベント駆動型自動化がさらに強力かつ安全に運用できるようになりました。Webhookを活用した効率的なイベントルーティング、高可用性のアーキテクチャ、そしてセキュリティ管理の強化により、複雑なユースケースにもシンプルな構成で対応可能になったと思います!
これらの新機能を活用し、運用の効率化と安定性を高めてみてはいかがでしょうか?