3.13. ルールブックアクティベーションの作成および実行
Event-Driven Ansible では、ルールブックアクティベーションは、特定のルールブックを実行する決定環境によって定義され、バックグラウンドで実行されるプロセスです。
3.13.1. ルールブックアクティベーションの設定
前提条件
- プロジェクトを設定している。
- 決定環境を設定している。
手順
-
ナビゲーションパネルから、
を選択します。 - をクリックします。
以下の情報を入力します。
- Name: 名前を入力します。
- Description: このフィールドは任意です。
- Organization: このフィールドは任意です。
- Project: このフィールドは任意です。
- Rulebook: 選択したプロジェクトに応じてルールブックが表示されます。
Credential: このルールブックアクティベーションの認証情報を 0 個以上選択します。このフィールドは任意です。
注記このフィールドに表示される認証情報は、ルールブックアクティベーションに基づいてカスタマイズされています。表示される認証情報のタイプは、Vault、Red Hat Ansible Automation Platform、または作成したカスタム認証情報タイプだけです。認証情報の詳細は、「自動化決定の使用」ガイドの 認証情報 を参照してください。
Decision environment: 決定環境は、Ansible ルールブックを実行するためのコンテナーイメージです。
注記Event-Driven Ansible Controller では、決定環境のプルポリシーをカスタマイズすることはできません。デフォルトでは、always ポリシーの動作に従います。アクティベーションが開始されるたびに、システムはイメージの最新バージョンを取得しようとします。
Restart policy: これは、ソースプラグインを実行しているコンテナープロセスが終了した後にアクティベーションを再開する方法を決定するポリシーです。以下のオプションから選択します。
- Always: ルールブックアクティベーションが正常に終了したかどうかに関係なく、ルールブックのアクティベーションを直ちに再開します。これは 5 回まで実行されます。
- Never: コンテナープロセスが終了したときに、ルールブックアクティベーションを再開しません。
- On failure: コンテナープロセスが失敗した場合にのみ、デフォルトで 60 秒後にルールブックアクティベーションを再開します。これは 5 回まで実行されます。
Log level: このフィールドでは、ログに記録するイベントの重大度とコンテンツのタイプを定義します。次のいずれかのオプションを選択します。
- Error: アクティベーションの History タブに表示されるエラーメッセージを含むログ。
- Info: 成功または失敗、トリガーされたアクション名と関連するアクションイベント、エラーなど、ルールブックアクティベーションに関する有用な情報を含むログ。
- Debug: デバッグフェーズでのみ役立ち、運用時にはあまり有用でない可能性がある情報を含むログ。このログレベルでは、エラーデータとログレベルデータの両方が対象となります。
- Service name: アクティベーションによってポートが公開される場合に、Kubernetes が受信接続を設定するためのサービス名を定義します。このフィールドは任意です。
- Rulebook activation enabled?: ルールブックアクティベーションを自動的に有効にして実行するかどうかを切り替えます。
-
Variables: ルールブックの変数は JSON または YAML 形式です。内容は、ansible-rulebook コマンドの
--vars
フラグによって渡されるファイルと同等です。 - Options: ルール監査にイベントを表示しない場合は、Skip audit events オプションをオンにします。
- をクリックします。
ルールブックアクティベーションが作成され、Rulebook Activations 画面で管理できるようになります。
新しいルールブックアクティベーションを保存すると、ルールブックアクティベーションの詳細ページが、Pending、Running、または Failed ステータスとともに表示されます。詳細ページまたは Rulebook Activations リストビューから、ルールブックアクティベーションを再開または削除できます。
ソースプラグインのシャットダウンが原因で、ルールブックが正常に終了するまでに一定の時間かかることがあります。ルールブックアクティベーションがシャットダウンすると、待機中のタスクがすべてキャンセルされ、アクティベーションのログに info レベルのメッセージが送信されます。詳細は、Rulebooks を参照してください。
3.13.1.1. ルールブックアクティベーションのリストビュー
Rulebook Activations ページでは、作成したルールブックアクティベーションを、Status、ルールブックの Number of rules、Fire count、および Restart count とともに表示できます。
Status が Running の場合、ルールブックアクティベーションがバックグラウンドで実行されており、ルールブックで宣言されたルールに従って必要なアクションが実行されていることを意味します。
Rulebook Activations リストビューからアクティベーションを選択すると、詳細を確認できます。
実行されたすべてのアクティベーションについて、Details タブと History タブを表示して、実行結果に関する詳細情報を取得できます。
3.13.2. ルールブックアクティベーションの有効化および無効化
手順
- 行レベルのスイッチを選択して、選択したルールブックを有効または無効にします。
- ウィンドウで、 を選択します。
- を選択します。
3.13.3. ルールブックアクティベーションの再開
ルールブックアクティベーションを再開できるのは、ルールブックアクティベーションが現在有効で、作成時に再開ポリシーを Always に設定した場合だけです。
手順
- Rulebook Activation enabled/disabled トグルの横にある アイコン ⋮ を選択します。
- を選択します。
- ウィンドウで、 を選択します。
- を選択します。
3.13.4. ルールブックアクティベーションの削除
手順
- Rulebook Activation enabled/disabled トグルの横にある アイコン ⋮ を選択します。
- を選択します。
- ウィンドウで、 を選択します。
- を選択します。
3.13.5. 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
- 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
手順
サービスを公開するためのルートを (OpenShift Container Platform 上に) 作成します。以下は、決定環境 Pod のポート 5000 で POST を要求する ansible-rulebook ソースのルートの例です。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 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
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
ルートを作成したら、ルート URL へのポスト を使用してテストします。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow curl -H "Content-Type: application/json" -X POST test-sync-bug-dynatrace.apps.aap-dt.ocp4.testing.ansible.com -d '{}'
curl -H "Content-Type: application/json" -X POST test-sync-bug-dynatrace.apps.aap-dt.ocp4.testing.ansible.com -d '{}'
注記ポートはルート (targetPort) で指定されているため、必要ありません。