Ansible Automation Platform 2.5で新しくなったEvent-Driven Ansibleを使ってみる

はじめに

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の作成

使用できるEvent stream typeの一覧はこちらから確認できます。

Event streamでサポートしているEvent stream type

Event streamが作成されるとEndpointが払い出されます。

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の関係で紐づけることができるようになりました。

rulebookの登録

早速先ほど作成した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が実施されたことが確認できました!

Say Nyahello

5. まとめ

今回のAAP 2.5でのEDAの進化により、エンタープライズ環境でのイベント駆動型自動化がさらに強力かつ安全に運用できるようになりました。Webhookを活用した効率的なイベントルーティング、高可用性のアーキテクチャ、そしてセキュリティ管理の強化により、複雑なユースケースにもシンプルな構成で対応可能になったと思います!

これらの新機能を活用し、運用の効率化と安定性を高めてみてはいかがでしょうか?

* 各記事は著者の見解によるものでありその所属組織を代表する公式なものではありません。その内容については非公式見解を含みます。