自動化決定の使用


Red Hat Ansible Automation Platform 2.5

Event-Driven Ansible Controller を設定して使用し、自動化を強化および拡張する

Red Hat Customer Content Services

概要

このガイドは、Event-Driven Ansible Controller を設定して、新しいプロジェクト、決定環境、Ansible Automation Platform Controller に対して認証するためのトークン、およびルールブックアクティベーションをセットアップするのに役立ちます。

はじめに

Event-Driven Ansible Controller は、一貫性と復元力を実現しながら IT の速度と俊敏性を向上させることで、自動化を強化および拡張する新しい方法です。Red Hat によって開発されたこの機能は、シンプルさと柔軟性を考慮して設計されています。

Red Hat ドキュメントへのフィードバック (英語のみ)

このドキュメントの改善に関するご意見がある場合や、エラーを発見した場合は、https://access.redhat.com から Technical Support チームに連絡してください。

第1章 Event-Driven Ansible Controller の概要

Event-Driven Ansible は、他のソフトウェアベンダーのモニタリングツールなどのイベントソースと連携する、拡張性が高く柔軟な自動化機能です。このようなツールは、IT ソリューションを監視してイベントを特定し、ルールブックに記述された変更や対応を自動的に実装して、そのイベントを処理します。

ユーザー設定は次の手順で行います。

注記
  • Event-Driven Ansible Controller の API ドキュメントは、https://<gateway-host>/api/eda/v1/docs で入手できます。
  • 高可用性の要求を満たすために、Event-Driven Ansible Controller は、集中型の Redis (REmote DIctionary Server) を Ansible Automation Platform UI と共有します。Redis が利用できない場合、プロジェクトを作成または同期したり、ルールブックアクティベーションを有効にしたりすることはできません。

関連情報

第2章 Credentials

認証情報を使用すると、決定環境、ルールブックアクティベーション、Event-Driven Ansible Controller のプロジェクト、Automation Controller のプロジェクトなどのリソースでの認証に使用できるシークレットを保存できます。

認証情報は、マシンに対してジョブを起動したり、バージョン管理システムからプロジェクトコンテンツをインポートしたりするときにユーザーを認証します。

認証情報をユーザーに公開せずに、ユーザーとチームにこれらの認証情報を使用する権限を付与できます。ユーザーが別のチームに異動する場合や、組織から離職する場合でも、そのユーザーの認証情報が以前に使用可能であったという理由だけで、すべてのシステムのキーを再設定する必要はありません。

注記

Automation Controller と Event-Driven Ansible Controller のコンテキストでは、extra_vars と認証情報の両方を使用して、さまざまな情報を保存できます。ただし、パスワードや API キーなどの機密情報を格納する方法として、セキュリティーと集中管理が向上するため、認証情報は優先される方法ですが、extra_vars は動的な非機密データを渡すのに適しています。

2.1. 認証情報のリストビュー

Ansible Automation Platform にログインし、Automation DecisionsInfrastructureCredentials を選択すると、Credentials ページに Decision Environment Container Registry の認証情報が事前に読み込まれます。独自の認証情報を作成すると、その認証情報がこのリストビューに追加されます。

メニューバーから、Name 検索フィールドで認証情報を検索できます。

メニューバーには、以下のオプションもあります。

  • Manage columns アイコンをクリックして、リストビューでのフィールドの表示方法を選択します。次の 4 つのオプションでフィールドを調整できます。

    • Column - テーブル内の列を表示します。
    • Description - 項目が展開されたときに、列の幅全体に説明を表示します。
    • Expanded - 項目が展開されたときに、列を詳細として表示します。
    • Hidden - 列を非表示にします。
  • アイコンをクリックして、List view または Card view のいずれかを選択します。

2.2. 認証情報のセットアップ

選択したソースプラグインまたはプライベートコンテナーレジストリーで使用する認証情報を作成できます。認証情報は、チームまたは個人に提供できます。

手順

  1. Ansible Automation Platform ダッシュボードにログインします。
  2. ナビゲーションパネルから、Automation DecisionsInfrastructureCredentials を選択します。
  3. Create credential をクリックします。
  4. 以下を入力します。

    Name
    名前を入力します。
    Description
    このフィールドは任意です。
    Organization
    リストをクリックして組織を選択するか、Default を選択します。
    Credential type

    リストをクリックして認証情報タイプを選択します。

    注記

    認証情報タイプを選択すると、Type Details セクションと、選択した認証情報タイプに適用できるフィールドが表示されます。

  5. 選択した認証情報タイプに該当するフィールドに入力します。
  6. Create credential をクリックします。

認証情報を保存すると、認証情報の詳細ページが表示されます。そのページまたは Credentials リストビューから、認証情報を編集または削除できます。

2.3. 認証情報の編集

既存の認証情報を編集し、組織に応じて適切なアクセスレベルを確保できます。

手順

  1. 以下のいずれかの方法を使用して、認証情報を編集します。

    • Credentials リストビューで、必要な認証情報の横にある Edit credential アイコンをクリックします。
    • Credentials リストビューで認証情報の名前を選択し、Edit credential をクリックします。
  2. 適切な詳細を編集し、Save credential をクリックします。

2.4. クレデンシャルの複製

既存の認証情報に類似したフィールド入力で新規の認証情報を設定する場合は、Details タブの Duplicate credential 機能を使用して、手動で入力する代わりに、情報を重複させることができます。認証情報の設定は長いプロセスになる可能性がありますが、既存の認証情報から必須フィールドを複製する機能は時間を節約でき、場合によっては人的エラーの可能性が低減します。

手順

  1. Credentials リストページで、複製する認証情報の名前をクリックします。認証情報の Details タブに移動します。
  2. Details タブの右上にある Duplicate credential をクリックします。

    注記

    Credentials list ページで必要な認証情報の横にある Duplicate credential アイコンをクリックすることもできます。

    選択した認証情報が重複していることを確認するメッセージが表示されます:"<Name of credential> の重複。

  3. Back to credentials タブをクリックして、複製した認証情報を表示します。

    重複した認証情報は、元の認証情報と同じ名前で表示され、その後に 24 時間形式でタイムスタンプが表示されます(例:< Name of credential> @ 17:26:30)。

  4. 重複した認証情報の詳細を編集します。
  5. Save credential をクリックします。

2.5. 認証情報の削除

組織で認証情報が必要なくなった場合は、削除できます。

手順

  1. 以下のいずれかの方法を使用して、認証情報を削除します。

    • Credentials リストビューで、必要な認証情報の横にある More Actions アイコン をクリックし、Delete credential をクリックします。
    • Credentials リストビューで認証情報の名前を選択し、Edit credential の横にある More Actions アイコン をクリックして、Delete credential をクリックします。
  2. ポップアップウィンドウで、Yes, I confirm to delete this credential を選択します。

    注記

    認証情報が組織内の他のリソースによってまだ使用されている場合は、認証情報を削除できないことを知らせる警告メッセージが表示されます。また、認証情報がイベントストリームで使用されている場合は、イベントストリームが削除されるか、別の認証情報に割り当てられるまで、認証情報を削除することはできません。一般に、使用中の認証情報を削除するとアクティベーションが壊れる可能性があるため、削除することは避けてください。

  3. Delete credential をクリックします。

各認証情報の横にあるチェックボックスを選択し、メニューバーの More Actions アイコン をクリックしてから、Delete selected credentials をクリックして、一度に複数の認証情報を削除できます。

第3章 認証情報タイプ

Event-Driven Ansible Controller には、プロジェクトの同期、ルールブックアクティベーションの実行、自動化実行 (Automation Controller) によるジョブテンプレートの実行、コンテナーレジストリーからのイメージの取得、イベントストリームによるデータの処理に使用できるいくつかの認証情報タイプが組み込まれています。

これらの組み込みの認証情報タイプは編集できません。他のシステムによる認証に対応した認証情報タイプが必要な場合は、ソースプラグインで使用できる独自の認証情報タイプを作成できます。各認証情報タイプには、入力設定とインジェクター設定が含まれています。これらの設定を Ansible ルールブックに渡すことで、ソースを設定できます。

詳細は、カスタム認証情報タイプ を参照してください。

3.1. カスタム認証情報タイプ

システム管理者は、YAML または JSON ライクな定義を使用して、標準形式の既存の認証情報タイプと同様に機能するカスタム認証情報タイプを定義できます。

各認証情報タイプでは、該当する場合、Input Configuration フィールドと Injector Configuration フィールドに独自の固有の設定が表示されます。カスタム認証情報は、認証情報を注入する手段として Ansible の追加変数をサポートしています。

ルールブックアクティベーションに、1 つ以上のクラウド、Vault、および Red Hat Ansible Automation Platform の認証情報を割り当てることができます。

注記
  • 新しい認証情報タイプを作成するときは、extra_vars での競合を回避する必要があります。
  • 追加の変数名の先頭を EDA_ にすることはできません。そのような変数名は予約されているためです。
  • 認証情報タイプの作成と編集および Injector configuration フィールドの表示を行うには、システム管理者 (スーパーユーザー) 権限が必要です。

独自の認証情報タイプをカスタマイズすると、組み込みの認証情報タイプのリストとともに、認証情報タイプページに表示されます。

各認証情報タイプでは、該当する場合、Input Configuration フィールドと Injector Configuration フィールドに独自の固有の設定が表示されます。YAML 形式と JSON 形式の両方が設定フィールドでサポートされています。

入力設定

入力設定には 2 つの属性があります。

  • フィールド - 認証情報タイプのプロパティー群。
  • 必須 - 必須フィールドのリスト。

選択した認証情報タイプに応じて、フィールドに複数のプロパティーを設定できます。

表3.1 入力設定フィールドのプロパティー
フィールド説明必須 (はい/いいえ)

id

フィールドの一意の ID。文字列型で、変数名を格納する必要があります。

はい

type

文字列型またはブール型にすることができます。

いいえ、デフォルトは文字列です。

label

UI 要素をレンダリングするときに UI によって使用されます。

はい

secret

暗号化されます。

いいえ、デフォルトは false です。

multiline

フィールドにファイルからのデータが含まれる場合は、multiline を True に設定できます。

いいえ、デフォルトは false です。

help_text

このフィールドに関連するヘルプテキスト。

いいえ

インジェクター設定

インジェクター設定を使用すると、入力設定フィールドから情報を取得し、その情報を、ルールブックアクティベーションの実行時に ansible-rulebook に送信できるインジェクタータイプにマッピングできます。Event-Driven Ansible は、次のインジェクタータイプをサポートします。

  • 環境変数 (env) - 基礎となるパッケージまたは共有ライブラリーのソースプラグインで使用されます。
  • Ansible 追加変数 (extra_vars) - ルールブックの条件、アクション、またはソースプラグインパラメーターの置換に使用されます。
  • ファイルベースのテンプレート (file) - ソースプラグインで必要になる可能性のある証明書やキーなどの認証情報入力からファイルコンテンツを作成するために使用されます。ファイルインジェクターを使用すると、これらの証明書とキーを決定環境に保存しなくても、実行時に ansible-rulebook に提供できます。その結果、ansible-rulebook は一時ファイルを作成し、そのファイル名には eda.filename 変数を使用してアクセスできます。この変数は、ファイルが作成された後に自動的に作成されます (例: "{{eda.filename.my_cert}}”)。
重要

ルールブックアクティベーションと認証情報タイプインジェクターで extra_vars を作成する場合は、キー名に eda または ansible を使用しないでください。これは、内部使用と競合し、ルールブックアクティベーションと認証情報タイプの作成の両方で失敗する可能性があるためです。

上記のインジェクタータイプは、最上位レベルで重複キーを持つことができませんが、インジェクターを使用すると、上記のインジェクタータイプの 1 つとしてルールブックに注入できるようにフィールドが調整されます。ルールブックに username や password などのパラメーターを必要とする 2 つのソースがある場合、ルールブックとともにインジェクターを使用すると、各ソースの引数を調整できます。

サンプルのインジェクターと入力を表示するには、それぞれ次の GitHub gist を参照してください。

3.2. 新しい認証情報タイプの作成

サポートされているデフォルトの認証情報タイプに基づいて、選択したソースプラグインで使用する認証情報タイプを作成できます。認証情報タイプは、チームまたは個人に提供できます。

手順

  1. Ansible Automation Platform ダッシュボードにログインします。
  2. ナビゲーションパネルから、Automation DecisionsInfrastructureCredential Types を選択します。
  3. Create credential type をクリックします。
  4. 以下を入力します。

    Name
    名前を入力します。
    Description
    このフィールドは任意です。
  5. Input Configuration フィールドで、対象のタイプの順序付きフィールドのセットを定義する入力スキーマを指定します。形式は YAML または JSON です。

    YAML

    fields:
      - type: string
        id: username
        label: Username
      - type: string
        id: password
        label: Password
        secret: true
    required:
      - username
      - password

    YAML ページ でさらに YAML の例をご覧ください。

    JSON

    {
    "fields": [
      {
      "type": "string",
      "id": "username",
      "label": "Username"
      },
      {
      "secret": true,
      "type": "string",
      "id": "password",
      "label": "Password"
       }
      ],
     "required": ["username", "password"]
    }

    その他の JSON の例は、JSON Web サイト をご覧ください。

  6. Injector Configuration フィールドに、認証情報タイプが注入できる値を指定する環境変数または追加変数を入力します。形式は YAML または JSON に指定できます (前の手順の例を参照)。

    JSON 形式の次の設定は、各フィールドとその使用方法を示しています。

    {
        "extra_vars": {
          "some_extra_var": "{{ username }}:{{ password }}"
      }
    }
  7. Create credential type をクリックします。

    新しく作成した認証情報タイプが、認証情報タイプのリストに表示されます。

    New credential type

  8. Edit credential type Edit アイコンをクリックして、認証情報タイプのオプションを変更します。

    注記

    Edit ページでは、詳細を変更したり、認証情報を削除したりできます。Delete オプションが無効になっている場合は、その認証情報タイプが認証情報によって使用されています。認証情報タイプを削除する前に、それを使用しているすべての認証情報からその認証情報タイプを削除する必要があります。

検証

  • 新規の認証情報の作成時に、新規に作成された認証情報タイプを Credential Type 選択ウィンドウから選択できることを確認します。

    Verify new credential type

関連情報

新しい認証情報を作成する方法は、認証情報のセットアップ を参照してください。

第4章 プロジェクト

プロジェクトはルールブックの論理的なコレクションです。これは git リポジトリーである必要があり、http プロトコルのみがサポートされます。プロジェクトのルールブックは、Ansible コレクション内の Event-Driven Ansible コンテンツ用に定義されたパス (プロジェクトのルートにある /extensions/eda/rulebooks) に配置する必要があります。

重要

高可用性の要求を満たすために、Event-Driven Ansible Controller は、集中型の Redis (REmote DIctionary Server) を Ansible Automation Platform UI と共有します。Redis が利用できない場合は、プロジェクトを作成したり同期したりできません。

4.1. 新しいプロジェクトの設定

Event-Driven Ansible Controller で、ルールブックを管理および保存するためのプロジェクトを設定できます。

前提条件

  • Ansible Automation Platform ダッシュボードにコンテンツコンシューマーとしてログインしている。
  • 必要に応じて認証情報を設定した。詳細は、認証情報のセットアップ セクションを参照してください。
  • Automation Controller が使用する、リポジトリーに含まれている Playbook と統合されたルールブックを含む既存のリポジトリーがある。

手順

  1. Ansible Automation Platform ダッシュボードにログインします。
  2. Automation DecisionsProjects に移動します。
  3. Create project をクリックします。
  4. 以下を入力します。

    Name
    プロジェクト名を入力します。
    Description
    このフィールドは任意です。
    Source control type
    使用できるソース管理タイプは Git のみです。このフィールドは任意です。
    Source control URL

    GitHub や GitLab などのリポジトリーの Git、SSH、または HTTP[S] プロトコルアドレスを入力します。このフィールドは編集できません。

    注記

    このフィールドは、SSH 秘密鍵または秘密鍵フレーズを受け入れます。これらの秘密鍵の使用は、git@ で開始するプロジェクト URL でなければ有効になりません。

    Proxy
    これは、HTTP または HTTPS サーバーにアクセスするために使用されます。このフィールドは任意です。
    Source control branch/tag/commit
    これはチェックアウトするブランチです。ブランチに加えて、タグ、コミットハッシュ、任意の参照を入力できます。一部のコミットハッシュと参照を使用するには、カスタム refspec も指定する必要がある場合があります。このフィールドは任意です。
    Source control refspec
    取得する refspec (Ansible git モジュールに渡されます)。このパラメーターにより、他の方法では利用できないブランチフィールド経由の参照にアクセスできるようになります。このフィールドは任意です。詳細は、Examples を参照してください。
    Source control credential
    ソース制御 URL を利用するには、この認証情報が必要です。このフィールドは任意です。
    Content signature validation credential
    コンテンツ署名を有効にして、プロジェクトを動悸してもコンテンツの安全性が確保されるようにできます。コンテンツが改ざんされている場合、ジョブは実行されません。このフィールドは任意です。
    オプション

    Verify SSL オプションはデフォルトで有効になっています。このオプションが有効になっていると、プロジェクトのインポート時に SSL が HTTPS で検証されます。

    注記

    自己署名付き証明書を使用するローカルリポジトリーがある場合は、このオプションを無効にできます。

  5. Create Project を選択します。

プロジェクトが作成され、Projects ページで管理できるようになります。

新しいプロジェクトを保存すると、プロジェクトの詳細ページが表示されます。そのページまたは Projects リストビューから、プロジェクトを編集または削除できます。

4.2. Projects リストビュー

Projects ページでは、作成したプロジェクトを ステータス および Git ハッシュ とともに確認できます。

注記

ソース管理でルールブックが変更された場合は、Projects リストビューでプロジェクトの横にある同期アイコンを選択することで、プロジェクトを再同期できます。Git ハッシュ の更新は、そのリポジトリー上の最新のコミットを表します。更新されたプロジェクトを使用する場合は、アクティベーションを再開または再作成する必要があります。

4.3. プロジェクトの編集

手順

  1. Projects リストビューで、目的のプロジェクトの横にある More Actions アイコン を選択します。Edit ページが表示されます。
  2. 必要な変更を入力し、Save project を選択します。

4.4. プロジェクトの削除

プロジェクトを削除する必要がある場合、Event-Driven Ansible Controller インターフェイスにある複数のオプションを使用できます。

手順

  1. プロジェクトを削除するには、次のいずれかを実行します。

    • Projects リストビューで、目的のプロジェクトの横にあるチェックボックスをオンにし、ページメニューから More Actions アイコン をクリックします。
    • Projects リストビューで、目的のプロジェクトの横にある More Actions アイコン をクリックします。
  2. Delete project を選択します。
  3. Permanently delete projects ウィンドウで、Yes, I confirm that I want to delete this project を選択します。
  4. Delete project を選択します。

第5章 決定環境

決定環境は、Ansible ルールブックを実行するコンテナーイメージです。決定環境は、自動化の依存関係をやり取りするための共通言語を作り出し、自動化環境をビルドおよび配布するための標準的な方法を提供します。デフォルトの決定環境は、Ansible-Rulebook にあります。

独自の決定環境を作成するには、ansible-builder のインストール および Ansible Automation Platform 内での Event-Driven Ansible のカスタム決定環境のビルド を参照してください。

5.1. ansible-builder のインストール

イメージをビルドするには、Podman または Docker と ansible-builder Python パッケージがインストールされている必要があります。

--container-runtime オプションは、使用する Podman または Docker 実行可能ファイルに対応している必要があります。

決定環境イメージをビルドするときは、Ansible Automation Platform がデプロイされるアーキテクチャーをサポートする必要があります。

詳細は、Ansible Builder のクイックスタート または 実行環境の作成と使用 を参照してください。

5.2. Event-Driven Ansible のカスタム決定環境のビルド

決定環境は、Ansible ルールブックの実行に合わせてカスタマイズされた実行環境です。

Automation Controller の Ansible Playbook を実行する実行環境と同様に、決定環境は Event-Driven Ansible Controller のルールブックを実行するためのものです。

Event-Driven Ansible 用のカスタム決定環境を作成することで、デフォルトの決定環境にはない、カスタム管理またはサードパーティーのイベントソースプラグインを提供できます。

前提条件

  • Ansible Automation Platform 2.5 以降
  • Event-Driven Ansible
  • Ansible Builder 3.0 以降

手順

  • Ansible Builder で de-minimal をベースイメージとして使用して、カスタム決定環境をビルドします。このイメージは、Ansible Automation Platform minimal decision environment で Red Hat が提供しているベースイメージからビルドされています。

    重要
    • ルールブックアクティベーションの失敗を防ぐために、Ansible Automation Platform で適切な Event-Driven Ansible Controller 決定環境を使用してください。

      • Event-Driven Ansible Controller を Ansible Automation Platform 2.4 に接続する場合は、registry.redhat.io/ansible-automation-platform-24/de-minimal-rhel9:latest を使用する必要があります。
      • Event-Driven Ansible Controller を Ansible Automation Platform 2.5 に接続する場合は、registry.redhat.io/ansible-automation-platform-25/de-minimal-rhel9:latest を使用する必要があります。

以下は、ansible.eda コレクションでカスタム決定環境をビルドするために、ベースイメージとして de-minimal を使用する Ansible Builder 定義ファイルの例です。

version: 3

images:
  base_image:
    name: 'registry.redhat.io/ansible-automation-platform-25/de-minimal-rhel9:latest'

dependencies:
  galaxy:
    collections:
      - ansible.eda
  python_interpreter:
    package_system: "python39"

options:
  package_manager_path: /usr/bin/microdnf

さらに、他の Python パッケージまたは RPM が必要な場合は、1 つの定義ファイルに以下を追加します。

version: 3

images:
  base_image:
    name: 'registry.redhat.io/ansible-automation-platform-25/de-minimal-rhel9:latest'

dependencies:
  galaxy:
    collections:
      - ansible.eda
  python:
    - six
    - psutil
  system:
    - iputils [platform:rpm]
  python_interpreter:
    package_system: "python39"

options:
  package_manager_path: /usr/bin/microdnf

5.3. 新しい決定環境の設定

デフォルトまたはカスタムの決定環境を使用して、決定環境を Event-Driven Ansible Controller にインポートできます。

前提条件

  • 必要に応じて認証情報を設定した。詳細は、認証情報のセットアップ セクションを参照してください。
  • 決定環境イメージをイメージリポジトリーにプッシュしたか、registry.redhat.io にある de-minimal イメージを使用することを選択した。

手順

  1. Ansible Automation Platform にログインします。
  2. Automation DecisionsDecision Environments に移動します。
  3. Create decision environment をクリックします。
  4. 以下を入力します。

    Name
    名前を入力します。
    Description
    このフィールドは任意です。
    Organization
    決定環境に関連付ける組織を選択します。
    Image
    これは、コンテナーレジストリー、イメージ名、およびバージョンタグを含む完全なイメージの場所です。
    Credential
    このフィールドは任意です。これは、決定環境イメージを使用するために必要な認証情報です。
  5. Create decision environment を選択します。

これで決定環境が作成され、Decision Environments ページで管理できるようになります。

新しい決定環境を保存すると、決定環境の詳細ページが表示されます。そのページまたは Decision Environment リストビューから、決定環境を編集または削除できます。

第6章 簡易イベントルーティング

簡易イベントルーティングを使用すると、Event-Driven Ansible Controller でイベントストリームを使用してさまざまなリモートシステムからデータをキャプチャーおよび分析できます。イベントストリームを使用すると、GitHub や GitLab などのリモートシステムから Event-Driven Ansible Controller にイベントを送信できます。ルールブック内のソースを交換することで、アクティベーションに 1 つ以上のイベントストリームを割り当てることがきます。

イベントストリームは、ソースをルールブックに接続する簡単な方法です。この機能を使用すると、1 つのエンドポイントを作成してイベントソースからアラートを受信し、複数のルールブックでイベントを使用できます。

6.1. イベントストリーム

イベントストリームは、リモートシステムから Event-Driven Ansible Controller にイベントを送信できます。一般的なセットアップでは、サーバーからインターネット経由でイベントストリームにデータを送信し、さらに Event-Driven Ansible イベントストリームレシーバーに送信します。データをインターネット経由で送信する場合、要求を認証する必要があります。Webhook ベンダーまたはリモートシステムによって、認証方法が異なる場合があります。

Event-Driven Ansible Controller は、6 つの異なるイベントストリームタイプをサポートしています。

表6.1 イベントストリームタイプ
説明ベンダー

HMAC

Hashed Message Authentication Code (HMAC)。Event-Driven Ansible Controller とベンダーの Webhook サーバー間の共有シークレットを使用します。これによりメッセージの整合性が保証されます。

GitHub

Basic 認証

HTTP Basic 認証を使用します。

Datadog、Dynatrace

トークン認証

トークン認証を使用します。通常、HTTP ヘッダーは Authorization ですが、Gitlab などの一部のベンダーは X-Gitlab-Token を使用します。

Gitlab、ServiceNow

OAuth2

クライアントクレデンシャル と呼ばれる付与タイプで Machine-to-Machine (M2M) モードを使用します。トークンは不透明です。

Dynatrace

JWT を使用した OAuth2

クライアントクレデンシャル と呼ばれる付与タイプで M2M モードを使用します。トークンは JSON Web Token (JWT) です。

Datadog

ECDSA

Elliptic Curve Digital Signature Algorithm

SendGrid、Twilio

Event-Driven Ansible Controller は、6 つの基本的なイベントストリームタイプに基づく 4 つの他の特殊なイベントストリームもサポートしています。

  • GitLab Event Stream
  • GitHub Event Stream
  • ServiceNow Event Stream
  • Dynatrace Event Stream

これらの特殊なタイプでは、デフォルト値が追加されているため、使用するパラメーターが制限されます。たとえば、GitHub Event Stream は、HMAC Event Stream を特殊化したものであり、多くのフィールドがあらかじめ入力されています。GitHub Event Stream の認証情報を保存すると、GitHub Event Stream の推奨デフォルト値が表示されます。

6.2. イベントストリームの認証情報の作成

イベントストリームを使用する前に、イベントストリームの認証情報を作成する必要があります。

前提条件

  • 各イベントストリームに認証情報が 1 つだけ存在する。

手順

  1. Ansible Automation Platform ダッシュボードにログインします。
  2. ナビゲーションパネルから、Automation DecisionsInfrastructureCredentials を選択します。
  3. Create credential をクリックします。
  4. 以下を入力します。

    Name
    名前を入力します。
    Description
    このフィールドは任意です。
    Organization
    リストをクリックして組織を選択するか、Default を選択します。
    Credential type

    リストをクリックして認証情報タイプを選択します。

    注記

    認証情報タイプを選択すると、Type Details セクションと、選択した認証情報タイプに適用できるフィールドが表示されます。

    Type Details
    選択した認証情報タイプに応じて要求される情報を追加します。たとえば、GitHub Event Stream 認証情報タイプを選択した場合は、Event-Driven Ansible Controller とリモートサーバーの間に HMAC Secret (対称共有シークレット) を追加する必要があります。
  5. Create credential をクリックします。

Details ページが表示されます。そのページまたは Credentials リストビューから、認証情報を編集または削除できます。

6.3. イベントストリームの作成

ルールブックアクティベーションに割り当てるイベントストリームを作成できます。

前提条件

  • イベントストリームをルールブックアクティベーションに割り当てる場合は、アクティベーションに決定環境とプロジェクトがすでに設定されていることを確認する。
  • Automation Controller に接続してルールブックアクティベーションを実行する予定の場合は、決定環境とプロジェクトに加えて、Red Hat Ansible Automation Platform 認証情報タイプが作成済みであることを確認する。詳細は、Red Hat Ansible Automation Platform 認証情報の設定 を参照してください。

手順

  1. Ansible Automation Platform にログインします。
  2. ナビゲーションパネルから、Automation DecisionsEvent Streams を選択します。
  3. Create event stream をクリックします。
  4. 以下を入力します。

    Name
    名前を入力します。
    Organization
    リストをクリックして組織を選択するか、Default を選択します。
    Event stream type

    目的のイベントストリームタイプを選択します。

    注記

    このリストには、リモートサーバーからの接続を認証するために使用できるデフォルトのイベントストリームタイプが少なくとも 10 種類表示されます。

    Credentials
    リストから認証情報を選択します。イベントストリーム用に作成した認証情報を選択することを推奨します。
    Headers
    イベントペイロードに含める HTTP ヘッダーキーをコンマで区切って入力します。すべてのヘッダーを含めるには、フィールドを空のままにします。
    Forward events to rulebook activation

    このオプションは、ルールブックアクティベーションにイベントを転送する機能を有効または無効にするために使用します。

    注記

    イベントストリームのイベント転送は、接続を診断して受信データを評価する際に、テスト目的で無効にすることができます。Forward events to rulebook activation オプションを無効にすると、リモートシステムとイベントストリームの接続をテストし、ヘッダーとペイロードを分析し、必要に応じて認証情報の問題を診断できます。これにより、テスト中にイベントがルールブックアクティベーションに転送され、ルールや条件が誤ってトリガーされることがなくなります。企業によっては、機密情報やパスワードを定期的に変更するポリシーを設けている場合があります。このオプションは、イベントストリームの作成後、いつでも有効/無効にできます。

  5. Create event stream をクリックします。

イベントストリームを作成すると、以下が出力されます。

  • Details ページが表示されます。そのページまたは Event Streams リストビューから、イベントストリームを編集または削除できます。また、Event Streams ページには、作成したすべてのイベントストリームと、各イベントの Events receivedLast event received、および Event stream type 列が表示されます。最初の 2 つの列は、イベントストリームを通じて外部データを受信するため、リモートシステムからイベントを受信していることがわかるように、継続的に更新されます。
  • イベントストリームを無効にした場合、Details ページに This event stream is disabled という警告メッセージが表示されます。
  • 新しいイベントストリームで、イベントを送信するリモートシステムで Webhook を設定するときに必要な URL が生成されます。
注記

イベントストリームの作成後、関連付けられている認証情報は、それが割り当てられているイベントストリームが削除されるまで削除できません。

6.4. イベントを送信するようにリモートシステムを設定する

イベントストリームを作成したら、イベントを Event-Driven Ansible Controller に送信するようにリモートシステムを設定する必要があります。この設定に使用する方法は、選択したイベントストリーム認証情報タイプのベンダーによって異なります。

前提条件

  • イベントストリームを作成したときに生成された URL
  • イベントストリーム認証情報に設定したシークレットまたはパスワード

手順

次の例は、GitHub などのリモートシステムで Webhook を設定して、イベントを Event-Driven Ansible Controller に送信する方法を示しています。Event-Driven Ansible Controller にイベントを送信するようにリモートシステムを設定する方法は、ベンダーごとに異なります。

  1. GitHub リポジトリーにログインします。
  2. Your profile name → Your repositories をクリックします。
注記

リポジトリーがない場合は、New をクリックして新しいリポジトリーを作成し、所有者を選択し、Repository name を追加して、Create repository をクリックします。

  1. Settings (ツールバー) に移動します。
  2. General ナビゲーションペインで、Webhooks を選択します。
  3. Add webhook をクリックします。
  4. Payload URL フィールドに、イベントストリームを作成したときに保存した URL を貼り付けます。
  5. Content type リストで application/json を選択します。
  6. Secret を入力します。
  7. Add webhook をクリックします。

Webhook を追加したら、2 つのシステム (GitHub と Event-Driven Ansible Controller) 間の接続を確認するためにテストペイロードの送信を試みます。データを正常に送信できた場合は、Webhook URL の横に緑色のチェックマークが表示され、Last delivery was successful というメッセージが表示されます。

6.5. イベントストリームの動作確認

イベントストリームを使用してリモートシステムに接続し、データを受信できることを確認します。

  1. Ansible Automation Platform にログインします。
  2. ナビゲーションパネルから、Automation DecisionsEvent Streams を選択します。
  3. 作成したイベントストリームを選択して接続を検証し、イベントストリームがルールブックアクティベーションにデータを送信することを確認します。
  4. イベントが受信されたことを確認します。Events received フィールドでイベントが受信されたことを確認できます。イベントの詳細を含むイベントストリームのヘッダーも確認できます。

    Verify event streams work

    UI を下にスクロールすると、Webhook に関する詳細情報を含むペイロードのボディーも確認できます。

    Payload body

    イベントストリームの Header セクションと Body セクションが Details ページに表示されます。これらはイベントを送信するベンダーによって異なります。ヘッダーとボディーを使用してイベントペイロード内の属性を確認できます。この情報は、ルールブックに条件を記述する際に役立ちます。以下に例を示します。

  5. Forward events to rulebook activation オプションを切り替えて、イベントをルールブックアクティベーションにプッシュできるようにします。これにより、イベントストリームが実稼働モードに移行し、ルールブックアクティベーションに簡単に割り当てることができるようになります。

    このオプションをオフにすると、ルールブックアクティベーションにイベントを転送する機能が無効になり、This event stream is disabled というメッセージが表示されます。

6.6. ソースの置き換えとアクティベーションへのイベントストリームの割り当て

ルールブックアクティベーションを作成するときに、イベントストリームを使用して、ルールブックアクティベーション内のソースマッピングを交換し、外部ソースから Event-Driven Ansible Controller へのルーティングを簡素化できます。

ソースマッピングに関して留意すべき重要なポイントがいくつかあります。

  1. イベントストリームは、ルールブックソースの交換で 1 回だけ使用できます。ルールブックに複数のソースがある場合、各ソースを 1 回だけ置き換えることができます。
  2. ソースマッピングは、現在のルールブックアクティベーションでのみ実行されます。同じルールブックを使用する他のアクティベーションがある場合は、そのアクティベーションに対してこのプロセスを繰り返す必要があります。
  3. ソースマッピングは、ルールブックが変更されない場合に限り有効です。ソースマッピングプロセス中にルールブックが変更されると、ソースマッピングが失敗し、プロセスをやり直す必要があります。
  4. ソースマッピングの作成後にルールブックが変更され、再起動 が発生すると、ルールブックアクティベーションが失敗します。

手順

  1. Ansible Automation Platform にログインします。
  2. ナビゲーションパネルから、Automation DecisionsRulebook Activations を選択します。
  3. Create rulebook activation をクリックします。
  4. 以下を入力します。

    Name
    名前を入力します。
    Description
    このフィールドは任意です。
    Organization
    組織名を入力するか、リストから Default を選択します。
    Project

    プロジェクトはルールブックの論理的なコレクションです。このフィールドは任意です。

    注記

    このフィールドは任意ですが、プロジェクトを選択すると、ルールブックの選択肢のリストを絞り込むのに役立ちます。

    Rulebook

    選択したプロジェクトに応じてルールブックが表示されます。ルールブックを選択します。

    注記

    ルールブックを選択すると、Event streams フィールドが有効になります。歯車アイコンをクリックすると、イベントストリームマッピングのフォームが表示されます。

    Event streams

    イベントをルールブックアクティベーションに転送するように設定されている利用可能なイベントストリームがすべて表示されます。イベントストリームを作成していない場合、このフィールドは無効のままです。

    歯車アイコンをクリックすると、イベントストリームマッピングの UI が表示されます。

    Event streams mapping UI

    以下のフィールドに入力します。

    Rulebook source

    ルールブックには、複数のルールセットにわたる複数のソースを含めることができます。複数のアクティベーションで、同じルールブックを複数のイベントストリームにマッピングできます。イベントストリームを管理する際、名前のないソースに、識別のために一時的な名前 (__SOURCE {n}) が割り当てられます。

    リストから __SOURCE_1 を選択します。

    Event stream

    リストからイベントストリーム名を選択します。

    Save をクリックします。

    イベントストリームは、ルールブック内の一致するソースを置き換えることができます。イベントストリームは、さまざまなイベントソースをルールブックアクティベーションに接続できるようにするサーバー側の Webhook です。ansible.eda.pg_listener タイプのイベントストリームのソースに置き換えることができるソースタイプとしては、ansible.eda.webhook やその他の互換性のある Webhook ソースプラグインなどがあります。選択したソースを置き換えると、このアクティベーションにのみ影響が発生し、ルールブックのソースタイプ、ソース名、および引数が変更されます。フィルター、ルール、条件、アクションは、いずれも影響を受けません。

    1 つのイベントストリームで置き換えるソースを選択できます。ルールブックに複数のソースがある場合は、各ソースをイベントストリームで置き換えることもできますが、各ソースを置き換える必要はありません。次の画像は、置き換えることができるソースを示しています。

    Event streams replacement sources

    ピンク色の項目は、置き換え可能なソース (ソースタイプ、ソース名、引数) を示しています。残りの項目 (フィルター、ルール、アクション) は置き換えられません。

    Credential

    このルールブックアクティベーションの認証情報を 0 個以上選択します。このフィールドは任意です。

    注記

    このフィールドに表示される認証情報は、ルールブックアクティベーションに基づいてカスタマイズされています。表示される認証情報のタイプは、Vault、Red Hat Ansible Automation Platform、または作成したカスタム認証情報タイプだけです。認証情報の詳細は、認証情報 を参照してください。

    Decision environment

    決定環境は、Ansible ルールブックを実行するために使用するコンテナーイメージです。

    注記

    Event-Driven Ansible Controller では、決定環境のプルポリシーをカスタマイズすることはできません。デフォルトでは、always ポリシーの動作に従います。アクティベーションが開始されるたびに、システムはイメージの最新バージョンを取得しようとします。

    Restart policy

    これは、ソースプラグインを実行しているコンテナープロセスが終了した後にアクティベーションを再開する方法を決定するポリシーです。

    • Policies:

      1. Always: ルールブックアクティベーションが正常に終了したかどうかに関係なく、ルールブックアクティベーションを直ちに再開します。これは 5 回まで実行されます。
      2. Never: コンテナープロセスが終了したときに、ルールブックアクティベーションを再開しません。
      3. On failure: コンテナープロセスが失敗した場合にのみ、デフォルトで 60 秒後にルールブックアクティベーションを再開します。これは 5 回まで実行されます。
    Log level

    このフィールドでは、ログに記録するイベントの重大度とコンテンツのタイプを定義します。

    • Levels:

      1. Error: アクティベーションの History タブに表示されるエラーメッセージを含むログ。
      2. Info: 成功または失敗、トリガーされたアクション名と関連するアクションイベント、エラーなど、ルールブックアクティベーションに関する有用な情報を含むログ。
      3. Debug: デバッグフェーズでのみ役立ち、運用時にはあまり有用でない可能性がある情報を含むログ。このログレベルでは、エラーデータとログレベルデータの両方が対象となります。
    Service name
    これは、アクティベーションによりポートが公開される場合に、Kubernetes が受信接続を設定するためのサービス名を定義します。このフィールドは任意です。
    Rulebook activation enabled?
    これを選択すると、ルールブックアクティベーションが自動的に有効になります。
    Variables
    ルールブックの変数は JSON または YAML 形式です。内容は、ansible-rulebook コマンドの --vars フラグによって渡されるファイルと同等です。
    Options
    ルール監査にイベントを表示しない場合は、Skip audit events オプションをオンにします。
  5. Create rulebook activation をクリックします。

    ルールブックアクティベーションを作成すると、Details ページが表示されます。

    Event streams ページに移動すると、イベントが受信されたことを確認できます。

6.7. イベントストリームタイプからの Webhook データの再送信

作成したイベントストリームでソースを置き換えたら、イベントストリームからデータを再送信して、ルールブックアクティベーションにデータが割り当てられていることを確認できます。先ほど示した例では、GitHub イベントストリームを使用しました。次の例は、GitHub イベントストリームを使用している場合に Webhook データを再送信する方法を示しています。

手順

  1. GitHub Webhook / Manage webhook ページに戻ります。
  2. Recent Deliveries タブをクリックします。
  3. 省略記号 をクリックします。
  4. Redeliver をクリックします。Redeliver payload? ウィンドウに送信に関するメッセージが表示されます。
  5. Yes, redeliver this payload をクリックします。
  6. Ansible Automation Platform に戻り、ルール監査を確認します。

6.8. Rule Audit で新しいイベントストリームのイベントを確認する

Event-Driven Ansible Controller によってイベントが送受信されたら、Rule Audit ページに移動してイベントストリームの結果を表示することで、アクションがトリガーされたことを確認できます。

手順

  1. Ansible Automation Platform にログインします。
  2. ナビゲーションパネルから、Automation DecisionsRule Audit を選択します。

    選択したイベントストリームタイプからのイベントデータがルールブックアクティベーションに届いた場合、Rule Audit ページに、この画像のような結果が表示されます。

    Rule audit - Event stream

第7章 Red Hat Ansible Automation Platform 認証情報

Event-Driven Ansible Controller が Ansible Automation Platform 2.5 にデプロイされている場合、Automation Controller URL とユーザー名およびパスワードを使用して Automation Controller に接続する Red Hat Ansible Automation Platform 認証情報を作成できます。作成されたら、Red Hat Ansible Automation Platform の認証情報をルールブックに添付し、それを使用してルールブックのアクティベーションを実行できます。これらの認証情報を使用すると、Automation Controller と Event-Driven Ansible Controller 間の通信を簡単に設定できるようになり、ルールブックのアクティブ化によってジョブテンプレートを起動できるようになります。

注記

Ansible Automation Platform 2.4 を使用して Event-Driven Ansible Controller をデプロイした場合は、コントローラートークンで Automation Controller と Event-Driven Ansible Controller を接続している可能性があります。これらのコントローラートークンは Ansible Automation Platform 2.5 では非推奨になりました。非推奨のコントローラートークンとそれに関連付けられたルールブックのアクティベーションを削除するには、Red Hat Ansible Automation Platform 認証情報の設定 に進む前に、Ansible Automation Platform 2.5 でのコントローラートークンの置き換え から始まる次の手順を完了してください。

7.1. Red Hat Ansible Automation Platform 2.5 でのコントローラートークンの置き換え

Red Hat Ansible Automation Platform 2.5 で Event-Driven Ansible Controller を使用するには、コントローラートークンが非推奨になっているため、環境で設定されている従来のコントローラートークンを Red Hat Ansible Automation Platform の認証情報に置き換える必要があります。

7.1.1. コントローラートークンを使用したルールブックのアクティベーションの削除

コントローラートークンを置き換えるには、それらに関連付けられていたルールブックのアクティベーションを削除する必要があります。

手順

  1. Ansible Automation Platform ダッシュボードにログインします。
  2. 上部のナビゲーションパネルから、Automation DecisionsRulebook Activations を選択します。
  3. コントローラートークンを使用するルールブックのアクティベーションを選択します。
  4. Rulebook Activation enabled/disabled トグルの横にある More Actions アイコン を選択します。
  5. Delete rulebook activation を選択します。
  6. ウィンドウで、Yes, I confirm that I want to delete these X rulebook activations を選択します。
  7. Delete rulebook activations を選択します。

7.1.2. コントローラートークンの削除

Red Hat Ansible Automation Platform の認証情報を設定する前に、既存のコントローラートークンを削除する必要があります。

前提条件

  • コントローラートークンを使用するすべてのルールブックのアクティベーションを削除した。

手順

  1. Ansible Automation Platform ダッシュボードにログインします。
  2. 上部のナビゲーションパネルからプロファイルを選択します。
  3. User details をクリックします。
  4. Tokens タブを選択します。
  5. 以前のコントローラートークンをすべて削除します。

コントローラートークンとルールブックアクティベーションを削除したら、Red Hat Ansible Automation Platform 認証情報の設定 に進みます。

7.2. Red Hat Ansible Automation Platform 認証情報の設定

ルールブックアクティベーションを実行するために、Red Hat Ansible Automation Platform 認証情報タイプを作成できます。

前提条件

  • ユーザーを作成した。
  • Automation Controller にアクセスするための URL と認証情報を取得した。

手順

  1. Ansible Automation Platform ダッシュボードにログインします。
  2. ナビゲーションパネルから、Automation DecisionsInfrastructureCredentials を選択します。
  3. Create credential をクリックします。
  4. 以下を入力します。

    Name
    名前を入力します。
    Description
    このフィールドは任意です。
    Organization
    リストをクリックして組織を選択するか、Default を選択します。
    認証情報タイプ

    リストをクリックして、Red Hat Ansible Automation Platform を選択します。

    注記

    認証情報タイプを選択すると、Type Details セクションと、選択した認証情報タイプに適用できるフィールドが表示されます。

  5. 必須の Red Hat Ansible Automation Platform フィールドに、Automation Controller URL を入力します。

    注記

    Event-Driven Ansible Controller 2.5 と Automation Controller 2.4 の場合は、https://<your_controller_host> などを使用してください。

    Ansible Automation Platform 2.5 の場合は、https://<your_gateway_host>/api/controller/ などを使用してください。

  6. 有効な UsernamePassword または Oauth Token を入力します。
  7. Create credential をクリックします。

この認証情報を作成したら、それを使用してルールブックアクティベーションを設定できます。

第8章 ルールブックアクティベーション

ルールブックは、イベント駆動型自動化モデルで IT アクションを実行するために Event-Driven Ansible が使用する条件付きルールのセットです。ルールブックは、どのソースでイベントをチェックするか、そのイベントが発生したときに特定の条件が満たされ場合に何を実行するかを、ユーザーが Event-Driven Ansible に指示する手段です。

ルールブックは、ルールがトリガーされたときに実行されるアクションを指定するものです。イベントがルールの条件に一致すると、ルールがトリガーされます。現在、次のアクションがサポートされています。

  • run_playbook (ansible-rulebook CLI でのみサポート)
  • run_module
  • run_job_template
  • run_workflow_template
  • set_fact
  • post_event
  • retract_fact
  • print_event
  • shutdown
  • debug
  • none

詳細を確認するには、アクション を参照してください。

ルールブックアクティベーションは、特定のルールブックを実行する決定環境によって定義されるバックグラウンドで実行されるプロセスです。ルールブックアクティベーションを設定するには、ルールブックアクティベーションの設定 に従ってください。

警告

Red Hat は、1 つの postgres データベースでサポートされていないソースプラグインを使用することを推奨していません。これにより、Ansible Automation Platform を使用する際に潜在的なリスクが生じる可能性があります。

重要

高可用性の要求を満たすために、Event-Driven Ansible Controller は、集中型の Redis (REmote DIctionary Server) を Ansible Automation Platform UI と共有します。Redis が利用できない場合は、次の機能が利用できなくなります。

  • is_enabled が True の場合は、アクティベーションの作成
  • アクティベーションの削除
  • アクティベーションの有効化 (まだ有効になっていない場合)
  • アクティベーションの無効化する (まだ無効になっていない場合)
  • アクティベーションの再開

8.1. ルールブックアクティベーションの設定

前提条件

  • Ansible Automation Platform ダッシュボードにコンテンツコンシューマーとしてログインしている。
  • プロジェクトを設定している。
  • 決定環境を設定している。

手順

  1. Ansible Automation Platform にログインします。
  2. Automation DecisionsRulebook Activations に移動します。
  3. Create rulebook activation をクリックします。
  4. 以下を入力します。

    Name
    名前を入力します。
    Description
    このフィールドは任意です。
    Organization
    組織名を入力するか、リストから Default を選択します。
    Project
    プロジェクトはルールブックの論理的なコレクションです。このフィールドは任意です。
    Rulebook
    選択したプロジェクトに応じてルールブックが表示されます。
    Credential

    このルールブックアクティベーションの認証情報を 0 個以上選択します。このフィールドは任意です。

    注記
    • このフィールドに表示される認証情報は、ルールブックアクティベーションに基づいてカスタマイズされています。表示される認証情報のタイプは、Vault、Red Hat Ansible Automation Platform、または作成したカスタム認証情報タイプだけです。認証情報の詳細は、認証情報 を参照してください。
    • Red Hat Ansible Automation Platform 認証情報を使用する場合は、ルールブックのアクティベーションに選択できる Red Hat Ansible Automation Platform 認証情報タイプは 1 つ だけです
    Decision environment

    決定環境は、Ansible ルールブックを実行するためのコンテナーイメージです。

    注記

    Event-Driven Ansible Controller では、決定環境のプルポリシーをカスタマイズすることはできません。デフォルトでは、always ポリシーの動作に従います。アクティベーションが開始されるたびに、システムはイメージの最新バージョンを取得しようとします。

    Restart policy

    これは、ソースプラグインを実行しているコンテナープロセスが終了した後にアクティベーションを再開する方法を決定するポリシーです。

    • Policies:

      1. Always: ルールブックアクティベーションが正常に終了したかどうかに関係なく、ルールブックアクティベーションを直ちに再開します。これは 5 回まで実行されます。
      2. Never: コンテナープロセスが終了したときに、ルールブックアクティベーションを再開しません。
      3. On failure: コンテナープロセスが失敗した場合にのみ、デフォルトで 60 秒後にルールブックアクティベーションを再開します。これは 5 回まで実行されます。
    Log level

    このフィールドでは、ログに記録するイベントの重大度とコンテンツのタイプを定義します。

    • Levels:

      1. Error: アクティベーションの History タブに表示されるエラーメッセージを含むログ。
      2. Info: 成功または失敗、トリガーされたアクション名と関連するアクションイベント、エラーなど、ルールブックアクティベーションに関する有用な情報を含むログ。
      3. Debug: デバッグフェーズでのみ役立ち、運用時にはあまり有用でない可能性がある情報を含むログ。このログレベルでは、エラーデータとログレベルデータの両方が対象となります。
    Service name
    これは、アクティベーションによりポートが公開される場合に、Kubernetes が受信接続を設定するためのサービス名を定義します。このフィールドは任意です。
    Rulebook activation enabled?
    これを選択すると、ルールブックアクティベーションが自動的に有効になります。
    Variables

    ルールブックの変数は JSON または YAML 形式です。内容は、ansible-rulebook コマンドの --vars フラグによって渡されるファイルと同等です。

    注記

    Automation Controller と Event-Driven Ansible Controller のコンテキストでは、extra_vars と認証情報の両方を使用して、さまざまな情報を保存できます。ただし、パスワードや API キーなどの機密情報を格納する方法として、セキュリティーと集中管理が向上するため、認証情報は優先される方法ですが、extra_vars は動的な非機密データを渡すのに適しています。

    Options
    ルール監査にイベントを表示しない場合は、Skip audit events オプションをオンにします。
  5. Create rulebook activation をクリックします。

ルールブックアクティベーションが作成され、Rulebook Activations 画面で管理できるようになります。

新しいルールブックアクティベーションを保存すると、ルールブックアクティベーションの詳細ページが、PendingRunning、または Failed ステータスとともに表示されます。詳細ページまたは Rulebook Activations リストビューから、ルールブックアクティベーションを再開または削除できます。

注記

ソースプラグインのシャットダウンが原因で、ルールブックが正常に終了するまでに一定の時間かかることがあります。ルールブックアクティベーションがシャットダウンすると、待機中のタスクがすべてキャンセルされ、アクティベーションのログに info レベルのメッセージが送信されます。詳細は、Rulebooks を参照してください。

8.2. ルールブックアクティベーションのリストビュー

Rulebook Activations ページでは、作成したルールブックアクティベーションを、Status、ルールブックの Number of rulesFire count、および Restart count とともに表示できます。

StatusRunning の場合、ルールブックアクティベーションがバックグラウンドで実行されており、ルールブックで宣言されたルールに従って必要なアクションが実行されていることを意味します。

Rulebook Activations リストビューからアクティベーションを選択すると、詳細を確認できます。

Rulebook activation][width=25px

実行されたすべてのアクティベーションについて、Details タブと History タブを表示して、実行結果に関する詳細情報を取得できます。

8.2.1. アクティベーションの出力の表示

アクティベーションの出力は History タブで確認できます。

手順

  1. History タブを選択して、すべてのアクティベーションインスタンスのリストにアクセスします。1 つのアクティベーションインスタンスは、1 回のアクティベーションの実行を表します。
  2. 対象のアクティベーションインスタンスを選択すると、その特定の実行によって生成された Output が表示されます。
ルールブックアクティベーションの履歴

アクションをトリガーした受信イベントを表示するには、Event-Driven Automation Controller ダッシュボードの Rule Audit セクションを使用できます。

8.3. ルールブックアクティベーションの有効化および無効化

手順

  1. 行レベルのスイッチを選択して、選択したルールブックを有効または無効にします。
  2. ウィンドウで、Yes, I confirm that I want to enable/disable these X rulebook activations を選択します。
  3. Enable/Disable rulebook activation を選択します。

8.4. ルールブックアクティベーションの再開

注記

ルールブックアクティベーションを再開できるのは、ルールブックアクティベーションが現在有効で、作成時に再開ポリシーを Always に設定した場合だけです。

手順

  1. Rulebook Activation enabled/disabled トグルの横にある More Actions アイコン を選択します。
  2. Restart rulebook activation を選択します。
  3. ウィンドウで、Yes, I confirm that I want to restart these X rulebook activations を選択します。
  4. Restart rulebook activations を選択します。

8.5. ルールブックアクティベーションの編集

ルールブックアクティベーションを作成または実行した後、入力を修正してフィールド(ログレベル、再起動ポリシー、監査をオフまたはオンなど)、障害による問題を軽減することができます。

手順

  1. Rulebook Activations ページで、編集するアクティベーションの横にある Rulebook Activation enabled ボタンを最初にオフの位置に切り替えて、アクティベーションを無効にします。

    Disable rulebook activations メッセージが表示され、アクティベーションを無効にすることを確認するように求められます。

  2. Yes, I confirm that I want to disable these <1> rulebook activations チェックボックス を選択し、Disable rulebook activations をクリックします。
  3. ルールブックアクティベーションの横にある Edit アイコンをクリックします。Edit フォームに移動します。

    注記

    Rulebook Activations ページでルールブックアクティベーションをクリックし、Rulebook activation enabled ボタンをクリックしてオフの位置に切り替え、アクティベーションを無効にすることを確認し、ページの右上にある Edit rulebook activation ボタンをクリックして Edit フォームにアクセスすることもできます。

  4. 目的のフィールドを編集します。

    注記

    すぐにアクティベーションを実行する場合は、Rulebook activation enabled ボタンをオン位置に切り替えてから、変更を保存します。

  5. Save rulebook activation をクリックします。

    これにより、Rulebook Activations ページに戻ります。

8.6. ルールブックアクティベーションの複製

既存のルールブックアクティベーションの 1 つに類似したフィールド入力で新しいルールブックアクティベーションを設定する場合は、各フィールドに手動で入力を入力する代わりに、Duplicate rulebook activation 機能を使用できます。ルールブックアクティベーションの設定は長いプロセスになる可能性がありますが、既存のアクティベーションから必須フィールドを複製する機能は時間を節約でき、場合によっては人的エラーの可能性が低減します。

手順

  1. Rulebook Activations ページで、複製するアクティベーションの行にある More Actions アイコン をクリックします。その他のアクション リストは、次の 3 つのオプションとともに表示されます。

    • ルールブックアクティベーションの再起動
    • ルールブックアクティベーションの重複
    • ルールブックアクティベーションの削除
  2. Duplicate rulebook activation を選択します。

    A message is appear: "<Name of rulebook activation 1> duplicate."最初は、Rulebook Activations ページで、元のアクティベーションと同じ名前で無効と表示され、その後に 24 時間形式でタイムスタンプが続きます(例:<Name of rulebook activation 1> @ 18:43:27)。

    重要

    元のルールブックアクティベーションは、複製した後も引き続き実行されます。フィールド(Name フィールドを含む)を編集して元のフィールドと区別せずに重複したアクティベーションを有効にしようとすると、ルールブックアクティベーションが元のルールから複製されたことを示すメッセージが表示され、それを有効にするとジョブが重複したり、重複したジョブやその他の競合が発生したりする可能性があります。

  3. ルールブックの重複アクティベーションを実行する前に、次の手順を実行してフィールドを編集します。

    1. 重複したルールブックアクティベーションの横にある Edit アイコンをクリックします。Edit フォームに移動します。
    2. 目的のフィールドを編集します。

      注記

      新たに複製したアクティベーションに、元のアクティベーションと区別する意味のある Name が指定されていることを確認します。

  4. Enable rulebook activation ボタンをオン位置に切り替えます。
  5. すべての編集が完了したら、Save rulebook activation をクリックします。

    これにより、ルールブックアクティベーションが開始され、正常に実行されると、ステータスが Running または Completed に変わります。

8.7. ルールブックアクティベーションの削除

手順

  1. Rulebook Activation enabled/disabled トグルの横にある More Actions アイコン を選択します。
  2. Delete rulebook activation を選択します。
  3. ウィンドウで、Yes, I confirm that I want to delete these X rulebook activations を選択します。
  4. Delete rulebook activations を選択します。

8.8. Webhook ルールブックのアクティブ化

Openshift 環境では、ルールブックアクティベーションの Kubernetes サービスを公開するルートを作成することで、Webhook が特定のポートを介して activation-job-pod に到達できるようにすることが可能です。

前提条件

  • ルールブックアクティベーションを作成した。
注記

特定の Webhook を含むルールブックの例を以下に示します。

- name: Listen for storage-monitor events
  hosts: all
  sources:
    - ansible.eda.webhook:
        host: 0.0.0.0
        port: 5000
  rules:
    - name: Rule - Print event information
    condition: event.meta.headers is defined
    action:
      run_job_template:
        name: StorageRemediation
        organization: Default
        job_args:
          extra_vars:
             message: from eda
             sleep: 1

手順

  1. サービスを公開するためのルートを (OpenShift Container Platform 上に) 作成します。以下は、決定環境 Pod のポート 5000 で POST を要求する ansible-rulebook ソースのルートの例です。

    kind: Route
    apiVersion: route.openshift.io/v1
    metadata:
      name: test-sync-bug
      namespace: dynatrace
      labels:
        app: eda
        job-name: activation-job-1-5000
    spec:
      host: test-sync-bug-dynatrace.apps.aap-dt.ocp4.testing.ansible.com
      to:
        kind: Service
        name: activation-job-1-5000
        weight: 100
      port:
        targetPort: 5000
      tls:
        termination: edge
        insecureEdgeTerminationPolicy: Redirect
      wildcardPolicy: None
  2. ルートを作成したら、ルート URL へのポスト を使用してテストします。

    curl -H "Content-Type: application/json" -X POST
    test-sync-bug-dynatrace.apps.aap-dt.ocp4.testing.ansible.com -d
    '{}'
    注記

    ポートはルート (targetPort) で指定されているため、必要ありません。

8.9. Kubernetes を使用したテスト

Kubernetes を使用すると、Ingress の作成やポートの公開を行うことができます。ただし、これは実稼働環境用のものではありません。

手順

  1. 次のコマンドを実行して、クラスター上の特定のサービスのポートを公開します。

    kubectl port-forward svc/<ACTIVATION_SVC_NAME> 5000:5000
  2. localhost:5000 に対して HTTP 要求を実行して、ルールブックをトリガーします。

    curl -H "Content-Type: application/json" -X POST test-sync-bug-dynatrace.apps.aap-dt.ocp4.testing.ansible.com -d '{}'

第9章 ルールブックアクティベーションのトラブルシューティング

場合によっては、解決可能なさまざまな理由により、ルールブックアクティベーションが失敗することがあります。このセクションには、考えられる問題とその解決方法のリストが記載されています。

9.1. アクティベーションが Pending 状態でスタックする

ルールブックアクティベーションが Pending 状態でスタックする場合は、次の手順を実行します。

手順

  1. 他に実行中のアクティベーションがあるか、制限 (メモリーや CPU の制限など) に達していないかを確認します。

    1. 他のアクティベーションが実行中の場合は、可能であれば 1 つ以上のアクティベーションを終了します。
    2. そうでない場合は、デフォルトのワーカー、Redis、およびアクティベーションワーカーがすべて実行されていることを確認します。すべてのシステムが期待どおりに動作している場合は、ワーカー、スケジューラー、API、nginx コンテナーおよびサービス内の eda-server 内部ログをチェックして、問題を特定できるか確認します。

      注記

      これらのログは、コードが出力した例外、ネットワークの問題によるランタイムエラー、ルールブックコードのエラーなど、問題の原因を明らかにします。内部ログに解決につながる情報が含まれていない場合は、Red Hat サポートに問題を報告してください。

    3. 調整が必要な場合は、ルールブックアクティベーションの同時実行数の変更 を参照してください。

      注記

      OpenShift Container Platform デプロイメントで Ansible Automation Platform Operator の最大同時アクティベーション数を調整するには、OpenShift Container Platform へのインストールEvent-Driven Ansible Controller のインストール中またはインストール後にルールブックアクティベーションの同時実行数を変更する を参照してください。

9.2. アクティベーションが繰り返し再起動する

ルールブックアクティベーションの再起動が繰り返される場合は、次の手順を実行します。

手順

  1. Ansible Automation Platform にログインします。
  2. ナビゲーションパネルから、Automation DecisionsRulebook Activations を選択します。
  3. Rulebook Activations ページで、再起動を繰り返すアクティベーションをリストから選択します。Details ページが表示されます。
  4. 詳細は、History タブをクリックし、再起動を繰り返すルールブックアクティベーションを選択します。Details タブが表示され、出力情報が表示されます。
  5. アクティベーションの Restart policy フィールドを確認します。

    ここでは、On failure (コンテナープロセスが失敗した場合にルールブックアクティベーションを再開)、Always (成功または失敗にかかわらず再起動 5 回以内に再開)、Never (コンテナープロセスが終了したら決して再開しない) のいずれかを選択できます。

    1. ルールブックアクティベーションの再起動ポリシーが On failure に設定されていることを確認します。これは、何らかの問題が原因で失敗していることを示しています。
    2. ルールブックアクティベーションの YAML コードとインスタンスログでエラーを確認することで、問題を診断できる場合があります。
    3. 再起動ポリシーの値から解決策を判断できない場合は、ログレベル に関連する次の手順に進みます。
  6. アクティベーションのログレベルを確認します。

    1. デフォルトのログレベルが Error の場合は、Rulebook Activation ページに戻り、ルールブックアクティベーションの設定 で説明されている手順を実行してアクティベーションを再作成します。
    2. Log levelDebug に変更します。
    3. アクティベーションを再度実行し、アクティベーションの詳細ページから History タブに移動します。
    4. History ページで、最近のアクティベーションの 1 つをクリックし、Output を表示します。

9.3. イベントストリームがアクティベーションにイベントを送信しない

イベントストリームを使用してルールブックアクティベーションにイベントを送信する場合、イベントがルールブックアクティベーションに正常にルーティングされないことがあります。

手順

  • これを解決するには、次のオプションを試してください。

    1. Event-Driven Ansible Controller の各イベントストリームが Test モードに なっていない ことを確認します。これは、アクティベーションがイベントを受信しないことを意味します。
    2. 元のサービスが要求を適切に送信していることを確認します。
    3. プラットフォームゲートウェイインスタンスへのネットワーク接続が安定していることを確認します。イベントストリームを設定している場合、これは送信者からのイベントストリーム要求のエントリーです。
    4. プラットフォームゲートウェイのプロキシーが実行されていることを確認します。
    5. イベントストリームワーカーが起動して実行されており、要求を処理できることを確認します。
    6. イベントストリームで認証情報が正しく設定されていることを確認します。
    7. 要求が、設定された認証情報に基づく認証メカニズムに準拠していることを確認します (たとえば、Basic には認証情報を含むヘッダーが含まれている必要があり、HMAC にはヘッダー内のコンテンツに署名が含まれている必要があります)。

      注記

      Event-Driven Ansible Controller で変更された認証情報が、元のサービスで更新されない可能性があります。

    8. アクティベーションで実行されているルールブックがこれらのイベントに反応することを確認します。これは、イベントソースをメモし、さらに 受信するイベントを使用するアクションを追加したことを示します。それ以外の場合、イベントはアクティベーションに到達せず、アクティベートするものはありません。
    9. 自己署名付き証明書を使用している場合は、ベンダーから Webhook を送信するときに証明書の検証を無効にすることが推奨されます。ほとんどのベンダーには、テスト用または非実稼働環境用の証明書検証を無効にするオプションがあります。

9.4. アクティベーションの実行中に 2.5 Automation Controller に接続できない

アクティベーションを実行すると、Automation Controller への接続に失敗する場合があります。

手順

  1. 問題を解決するには、Red Hat Ansible Automation Platform の認証情報を設定し、正しい Automation Controller URL を取得していることを確認します。

    1. Red Hat Ansible Automation Platform の認証情報を設定していない場合は、Red Hat Ansible Automation Platform 認証情報の設定 の手順を実行します。この認証情報のホストが https://<your_gateway>/api/controller の URL 形式で設定されていることを確認します。
    2. このプロセスを完了したら、ルールブックアクティベーションを再度設定します。

第10章 ルール監査

ルール監査では、ある時点においてアクティブ化されたすべてのルールによってトリガーされたルールを監査できます。

Rule Audit リストビューには、ルールブック内の条件と一致してアクションをトリガーしたイベントを受信した各タイミングのリストが表示されます。リストにはルールブック内のルールが表示され、各見出しに実行されたルール名が表示されます。

10.1. ルール監査の詳細の表示

Rule Audit リストビューから、特定のアクションをトリガーしたイベントを確認できます。

Rule Audit リストビュー

手順

  1. ナビゲーションパネルから Automation DecisionsRule Audit を選択します。
  2. 目的のルールを選択すると、Details タブが表示されます。

ここから、作成日時、最後に起動した日時、および対応するルールブックアクティベーションを確認できます。

10.2. ルール監査イベントの表示

手順

  1. ナビゲーションパネルから、Automation DecisionsRule Audit を選択します。
  2. 目的のルールを選択すると、Details タブが表示されます。アクションをトリガーしたすべてのイベントを表示するには、Events タブを選択します。選択すると、アクションをトリガーしたイベントが表示されます。
  3. イベントを選択すると、Event logSource typeTimestamp とともに表示されます。
イベントの詳細

10.3. ルール監査アクションの表示

手順

  1. ナビゲーションパネルから Automation DecisionsRule Audit を選択します。
  2. 目的のルールを選択してから、Actions タブを選択します。

ここから、実行されたアクションを確認できます。一部のアクションは、自動化実行にリンクされています。そこで出力を確認できます。

第11章 Event-Driven Ansible Controller のパフォーマンスチューニング

Event-Driven Ansible は、非常にスケーラブルで柔軟な自動化機能です。Event-Driven Ansible Controller は、Event-Driven Ansible による自動化を実行するインターフェイスを提供します。Event-Driven Ansible Controller をチューニングし、次の方法でパフォーマンスとスケーラビリティーを最適化します。

  • ワークロードの特性評価
  • システムレベルの監視
  • パフォーマンスのトラブルシューティング

11.1. ワークロードの特性評価

Event-Driven Ansible Controller では、ワークロードに、ルールブックアクティベーションの数と受信するイベントの数が含まれます。Event-Driven Ansible Controller のワークロードの特性を評価する際には、次の要素を考慮してください。

  1. ルールブックアクティベーションの同時実行数
  2. Event-Driven Ansible Controller が受信するイベントの数

11.1.1. ルールブックアクティベーションの同時実行数の変更

デフォルトでは、Event-Driven Ansible Controller はノードごとに 12 個のルールブックアクティベーションを実行できます。たとえば、ワーカーノードまたはハイブリッドノードが 2 つある場合、同時に実行できるアクティベーションは合計 24 個に制限されます。24 個を超えるルールブックアクティベーションが作成されると、通常、後続のルールブックアクティベーションは、ルールブックアクティベーションワーカーが利用可能になるまで待機します。この場合、Event-Driven Ansible Controller インスタンスに空きメモリーと CPU が十分にある場合でも、ルールブックアクティベーションのステータスは Pending と表示されます。この動作を変更するには、実行中のルールブックアクティベーションのデフォルトの最大数を変更する必要があります。

注記
11.1.1.1. Event-Driven Ansible Controller のインストール時にルールブックアクティベーションの同時実行数を変更する

デフォルトでは、Event-Driven Ansible Controller はノードごとに 12 個のルールブックアクティベーションを実行できます。たとえば、ワーカーノードまたはハイブリッドノードが 2 つある場合、同時に実行できるアクティベーションは合計 24 個に制限されます。以下の手順を使用して、インストール時にこのデフォルト値を変更できます。

手順

仮想マシンインストーラーに変数を指定します。

  1. セットアップインベントリーファイルに移動します。
  2. [all:vars] セクションに automationedacontroller_max_running_activations を追加します。たとえば、automationedacontroller_max_running_activations=16 などです。
  3. セットアップを実行します。
11.1.1.2. Event-Driven Ansible Controller のインストール後にルールブックアクティベーションの同時実行数を変更する

デフォルトでは、Event-Driven Ansible Controller はノードごとに 12 個のルールブックアクティベーションを実行できます。たとえば、ワーカーノードまたはハイブリッドノードが 2 つある場合、同時に実行できるアクティベーションは合計 24 個に制限されます。以下の手順を使用して、インストール後にこのデフォルト値を変更できます。

手順

  1. /etc/ansible-automation-platform/eda/settings.yaml にある環境ファイルに移動します。
  2. 必要な実行中のアクティベーションの最大数を選択します。たとえば、MAX_RUNNING_ACTIVATIONS = 16 です。
  3. Event-Driven Ansible サービスを再起動するには、automation-eda-controller-service restart コマンドを使用します。

関連情報

  • ルールブックアクティベーションの詳細は、ルールブックアクティベーション を参照してください。
  • OpenShift Container Platform 上の Event-Driven Ansible の実行中または実行後にルールブックアクティベーションの同時実行数を変更する方法の詳細は、EDA_MAX_RUNNING_ACTIVATIONS を参照してください。

11.1.2. ルールブックアクティベーションごとのデフォルトのメモリー制限の変更

メモリー使用量は、Event-Driven Ansible Controller が処理する必要のあるイベントの数に基づいています。各ルールブックアクティベーションコンテナーには、200MB のメモリー制限があります。たとえば、CPU が 4 個、RAM が 16 GB の場合、割り当てられたメモリー制限が 200 MB のルールブックアクティベーションコンテナー 1 つでは、1 分あたり 150,000 件を超えるイベントを処理できません。並行して実行されるルールブックアクティベーションの数が多い場合は、各ルールブックアクティベーションが処理できるイベントの最大数は少なくなります。非常に高いレートでの受信イベントが多すぎる場合、コンテナーはイベントを処理しようとしてメモリー不足になる可能性があります。これによりコンテナーが強制終了され、ルールブックアクティベーションはステータスコード 137 で失敗します。

この障害に対処するには、次のいずれかの手順を使用して、ルールブックアクティベーションに割り当てられるメモリーの量を増やし、多数のイベントを高いレートで処理できるようにします。

  • インストール中に、ルールブックアクティベーションごとにデフォルトのメモリー制限を変更する
  • インストール後に、ルールブックアクティベーションごとにデフォルトのメモリー制限を変更する
11.1.2.1. インストール中に、ルールブックアクティベーションごとにデフォルトのメモリー制限を変更する

デフォルトでは、ルールブックアクティベーションコンテナーごとに 200MB のメモリー制限があります。以下の手順を使用して、インストール時にこのデフォルト値を変更できます。

手順

  1. セットアップインベントリーファイルに移動します。
  2. [all:vars] セクションに automationedacontroller_podman_mem_limit を追加します。たとえば、automationedacontroller_podman_mem_limit='400m' などです。
  3. セットアップを実行します。
11.1.2.2. インストール後に、ルールブックアクティベーションごとにデフォルトのメモリー制限を変更する

デフォルトでは、ルールブックアクティベーションコンテナーごとに 200MB のメモリー制限があります。以下の手順を使用して、インストール後にこのデフォルト値を変更できます。

手順

  1. /etc/ansible-automation-platform/eda/settings.yaml にある環境ファイルに移動します。
  2. デフォルトのコンテナーのメモリー制限を変更します。たとえば、PODMAN_MEM_LIMIT = '300m' です。
  3. automation-eda-controller-service restart を使用して、Event-Driven Ansible Controller サービスを再起動します。

11.2. Event-Driven Ansible Controller のシステムレベルの監視

ワークロードの特性を評価して、並行して実行しているルールブックアクティベーションの数と、特定の時点で受信しているイベントの数を特定したら、システムレベルで Event-Driven Ansible Controller ホストを監視することを検討してください。システムレベルのモニタリングを使用して、Event-Driven Ansible のパフォーマンスに関する情報を時間の経過とともに確認することで、問題を診断したり、将来的な容量の増加を検討したりする場合に役立ちます。

システムレベルの監視では、次の情報が含まれます。

  • ディスク I/O
  • RAM 使用率
  • CPU の使用率
  • ネットワークトラフィック

CPU、RAM、またはディスクの使用率が高いと、Event-Driven Ansible Controller の全体的なパフォーマンスに影響を与える可能性があります。たとえば、これらのシステムレベルリソースのうち、使用率が高い場合は、Event-Driven Ansible Controller が実行しているルールブックアクティベーションが多すぎるか、または個々のルールブックアクティベーションの一部で大量のリソースを使用していることを示しています。このような場合は、ワークロードをサポートするためにシステムレベルのリソースを増やす必要があります。

11.3. Event-Driven Ansible Controller のパフォーマンストラブルシューティング

Event-Driven Ansible Controller のデフォルトパラメーターに基づいて、ワークロードを完了するのに課題となるシナリオが発生する可能性があります。次のセクションでは、これらのシナリオおよびトラブルシューティングのガイダンスを説明します。

  • アクティベーションのステータスは "running" と表示されますが、イベントを処理していません。

    • ルールブックアクティベーションで正しいイベントソースを使用していることを確認します。ルールブック以外のソースから発生するイベントを想定している場合は、Event-Driven Ansible Controller はそのイベントを処理しません。
  • アクティベーションステータスは "running" と表示され、Event-Driven Ansible Controller もイベントを受信していますが、アクションが実行されません。

    • ルールブックアクティベーションでイベントの一致とアクションの実行に対して、正しい条件を設定していることを確認します。
  • アクティベーションは無限ループで再起動し続けます。

    • デフォルトでは、ルールブックアクティベーションのリセットポリシーは On Failure に設定されています。以下の手順を使用して、再起動ポリシーを変更します。

      1. Automation DecisionsRulebook Activations に移動します。
      2. オプションを表示するには、Restart Policy リストを選択します。
      3. 適切な値 (On FailureAlwaysNever) を選択します。

第12章 イベントフィルタープラグイン

イベントには、ルールエンジンに過度の負荷をかける余分なデータが含まれている場合があります。イベントフィルターを使用して余分なデータを削除することで、ルールにとって重要なものに絞り込むことができます。イベントフィルターは、ルール条件とデータの照合をより適切に行うために、データの形式を変更することもあります。

イベントは Python コードとして定義され、コレクションとして提供されます。デフォルトの eda コレクション には次のフィルターがあります。

名前説明

json_filter

このフィルターは、イベントオブジェクトからキーを追加または除外します。

dashes_to_underscores

このフィルターは、ペイロード内のすべてのキーのダッシュをアンダースコアに変更します。

ansible.eda.insert_hosts_to_meta

このフィルターは、ansible-rulebook がイベントを検出して使用できるように、イベントにホスト情報を追加するために使用されます。

ansible.eda.normalize_keys

このフィルターは、英数字以外のキーをアンダースコアに変更する場合に使用します。

イベントフィルターは次々と連結することができます。その場合、更新されたデータが、フィルターから次のフィルターに送信されます。イベントフィルターは、ソースを定義した後にルールブックで定義します。ルールブックがソースプラグインを起動すると、正しいフィルターが関連付けられ、データがキューに追加される前に変換されます。

sources:
  - name: azure_service_bus
    ansible.eda.azure_service_bus:
      conn_str: "{{connection_str}}"
      queue_name: "{{queue_name}}"
    filters:
      - json_filter:
          include_keys: ['clone_url']
          exclude_keys: ['*_url', '_links', 'base', 'sender', 'owner', 'user']
      - dashes_to_underscores:

この例では、データがまず json_filter を通過し、次に dashes_to_underscores フィルターを通過します。イベントペイロードでは、キーに文字、数字、アンダースコアのみを含めることができます。ネストされたキーにアクセスするには、ピリオド (.) を使用します。

すべてのイベントはイベントの発生元を記録する必要があるため、sourcetype、および received_at を追加するために、フィルター eda.builtin.insert_meta_info が ansible-rulebook によって自動的に追加されます。received_at には、日付時刻が UTC ISO8601 形式で格納され、マイクロ秒が含まれます。uuid には、イベントの一意の ID が格納されます。meta key は、イベントに関するメタデータを格納するために使用されます。これは、aap サーバー内のイベントを正確に報告するために必要です。

12.1. イベントフィルターの作成

イベントフィルターは、イベントデータに対して変換を実行する Python モジュール内の関数です。イベントフィルターを使用すると、イベントデータ構造内の任意のデータを削除、追加、変更、または移動できます。イベントフィルターは、イベントを最初の引数として受け取ります。ルールブックの設定によって、追加のキーワード引数が提供されます。

基本的な構造は次のとおりです。

   # my_namespace.my_collection/extensions/eda/plugins/event_filter/my_filter.py
    def main(event: dict, arg1, arg2):
        # Process event data here
        return event

このフィルターをルールブックで使用するには、イベントソースのフィルターリストに追加します。

  sources:
    - name: azure_service_bus
      ansible.eda.azure_service_bus:
        conn_str: "{{connection_str}}"
        queue_name: "{{queue_name}}"
      filters:
        - my_namespace.my_collection.my_filter:
            arg1: hello
            arg2: world

関連情報

作成方法の詳細な例は、ansible.eda コレクション のイベントフィルタープラグインを参照してください。

第13章 Event-Driven Ansible ロギングストラテジー

Event-Driven Ansible は、リソースに対する監査ログソリューションを提供します。サポートされている作成、読み取り、更新、削除 (CRUD) 操作が、ルールブックアクティベーション、イベントストリーム、決定環境、プロジェクト、アクティベーションに対してそれぞれ記録されます。これらのリソースの一部は、同期、有効化、無効化、再起動、起動、停止などの追加の操作をサポートしており、これらの操作のログ記録もサポートされています。これらのログは、関連付けられているコンテナーのライフサイクル期間中のみ保持されます。サポートされている各ログ操作は、次のサンプルログを参照してください。

13.1. ロギングのサンプル

各操作に対して次の API が呼び出されると、次の監査ログが表示されます。

ルールブックアクティベーション

1. Create
    1. 2024-08-15 14:13:20,384 aap_eda.api.views.activation INFO   Action: Create / ResourceType: RulebookActivation / ResourceName: quick_start_project / ResourceID: 53 / Organization: Default
2. Read
    1. 2024-08-15 14:21:26,844 aap_eda.api.views.activation INFO   Action: Read / ResourceType: RulebookActivation / ResourceName: quick_start_activation / ResourceID: 1 / Organization: Default
3. Disable
    1. 2024-08-15 14:23:57,798 aap_eda.api.views.activation INFO   Action: Disable / ResourceType: RulebookActivation / ResourceName: quick_start_activation / ResourceID: 1 / Organization: Default
4. Enable
    1. 2024-08-15 14:24:16,472 aap_eda.api.views.activation INFO   Action: Enable / ResourceType: RulebookActivation / ResourceName: quick_start_activation / ResourceID: 1 / Organization: Default
5. Delete
    1. 2024-08-15 14:24:53,847 aap_eda.api.views.activation INFO   Action: Delete / ResourceType: RulebookActivation / ResourceName: quick_start_activation / ResourceID: 1 / Organization: Default
6. Restart
    2024-08-15 14:24:34,169 aap_eda.api.views.activation INFO      Action: Restart / ResourceType: RulebookActivation / ResourceName: quick_start_activation / ResourceID: 1 / Organization: Default

EventStream ログ

1. Create
    1. 2024-08-15 13:46:26,903 aap_eda.api.views.webhook INFO     Action: Create / ResourceType: EventStream / ResourceName: ZackTest / ResourceID: 1 / Organization: Default
2. Update
    1. 2024-08-15 13:56:17,440 aap_eda.api.views.webhook INFO     Action: Update / ResourceType: EventStream / ResourceName: ZackTest / ResourceID: 1 / Organization: Default
3. Read
    1. 2024-08-15 13:56:56,271 aap_eda.api.views.webhook INFO     Action: Read / ResourceType: EventStream / ResourceName: ZackTest / ResourceID: 1 / Organization: Default
4. List
    1. 2024-08-15 13:56:17,492 aap_eda.api.views.webhook INFO     Action: List / ResourceType: EventStream / ResourceName: * / ResourceID: * / Organization: *
5. Delete
    1. 2024-08-15 13:57:13,124 aap_eda.api.views.webhook INFO     Action: Delete / ResourceType: EventStream / ResourceName: ZackTest / ResourceID: None / Organization: Default

決定環境

1. Create
    1. 2024-08-15 14:10:53,311 aap_eda.api.views.decision_environment INFO     Action: Create / ResourceType: DecisionEnvironment / ResourceName: quick_start_de / ResourceID: 86 / Organization: Default
2. Read
    1. 2024-08-15 14:10:53,349 aap_eda.api.views.decision_environment INFO     Action: Read / ResourceType: DecisionEnvironment / ResourceName: quick_start_de / ResourceID: 86 / Organization: Default
3. Update
    2024-08-15 14:11:20,970 aap_eda.api.views.decision_environment INFO     Action: Update / ResourceType: DecisionEnvironment / ResourceName: quick_start_de / ResourceID: 86 / Organization: Default
4. Delete
2024-08-15 14:11:42,369 aap_eda.api.views.decision_environment INFO     Action: Delete / ResourceType: DecisionEnvironment / ResourceName: quick_start_de / ResourceID: None / Organization: Default

プロジェクト

1. Create
    1. 2024-08-15 14:05:26,874 aap_eda.api.views.project INFO     Action: Create / ResourceType: Project / ResourceName: quick_start_project / ResourceID: 86 / Organization: Default
2. Read
    1. 2024-08-15 14:05:26,913 aap_eda.api.views.project INFO     Action: Read / ResourceType: Project / ResourceName: quick_start_project / ResourceID: 86 / Organization: Default
3. Update
    1. 2024-08-15 14:06:08,255 aap_eda.api.views.project INFO     Action: Update / ResourceType: Project / ResourceName: quick_start_project / ResourceID: 86 / Organization: Default
4. Sync
    1. 2024-08-15 14:06:30,580 aap_eda.api.views.project INFO     Action: Sync / ResourceType: Project / ResourceName: quick_start_project / ResourceID: 86 / Organization: Default
5. Delete
    1. 2024-08-15 14:06:49,481 aap_eda.api.views.project INFO     Action: Delete / ResourceType: Project / ResourceName: quick_start_project / ResourceID: 86 / Organization: Default

アクティベーションの開始/停止

1. Start
    1. 2024-08-15 14:21:29,076 aap_eda.services.activation.activation_manager INFO     Requested to start activation 1, starting.
    2024-08-15 14:21:29,093 aap_eda.services.activation.activation_manager INFO     Creating a new activation instance for activation: 1
    2024-08-15 14:21:29,104 aap_eda.services.activation.activation_manager INFO     Starting container for activation instance: 1
2. Stop
    1. eda-activation-worker-1  | 2024-08-15 14:40:52,547 aap_eda.services.activation.activation_manager INFO     Stop operation requested for activation id: 2 Stopping activation.
    eda-activation-worker-1  | 2024-08-15 14:40:52,550 aap_eda.services.activation.activation_manager INFO     Activation 2 is already stopped.
    eda-activation-worker-1  | 2024-08-15 14:40:52,550 aap_eda.services.activation.activation_manager INFO     Activation manager activation id: 2 Activation restart scheduled for 1 second.
    eda-activation-worker-1  | 2024-08-15 14:40:52,562 rq.worker INFO     activation: Job OK (activation-2)

法律上の通知

Copyright © 2025 Red Hat, Inc.
The text of and illustrations in this document are licensed by Red Hat under a Creative Commons Attribution–Share Alike 3.0 Unported license ("CC-BY-SA"). An explanation of CC-BY-SA is available at http://creativecommons.org/licenses/by-sa/3.0/. In accordance with CC-BY-SA, if you distribute this document or an adaptation of it, you must provide the URL for the original version.
Red Hat, as the licensor of this document, waives the right to enforce, and agrees not to assert, Section 4d of CC-BY-SA to the fullest extent permitted by applicable law.
Red Hat, Red Hat Enterprise Linux, the Shadowman logo, the Red Hat logo, JBoss, OpenShift, Fedora, the Infinity logo, and RHCE are trademarks of Red Hat, Inc., registered in the United States and other countries.
Linux® is the registered trademark of Linus Torvalds in the United States and other countries.
Java® is a registered trademark of Oracle and/or its affiliates.
XFS® is a trademark of Silicon Graphics International Corp. or its subsidiaries in the United States and/or other countries.
MySQL® is a registered trademark of MySQL AB in the United States, the European Union and other countries.
Node.js® is an official trademark of Joyent. Red Hat is not formally related to or endorsed by the official Joyent Node.js open source or commercial project.
The OpenStack® Word Mark and OpenStack logo are either registered trademarks/service marks or trademarks/service marks of the OpenStack Foundation, in the United States and other countries and are used with the OpenStack Foundation's permission. We are not affiliated with, endorsed or sponsored by the OpenStack Foundation, or the OpenStack community.
All other trademarks are the property of their respective owners.
Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。 最新の更新を見る.

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

© 2024 Red Hat, Inc.