4.9.2.1 監視抑止

連携テンプレートを使用することにより、JP1/IMのシステム管理機能との連携が可能になり、JP1/IMの設定ファイル「共通除外条件拡張定義ファイル(common_exclude_filter.conf)」の取得と適用ができます。これにより、Ops IのワークフローからJP1/IMに対するジョブを実行することが可能で、特定条件のイベント監視の抑止および、抑止解除の制御ができます。例えば、メンテナンス中、サーバを停止させたい時にアラートが発生しないようにしたい場合などで活用できます。
JP1/IMとの連携のため、Ops Iでは以下の内容を提供します。(以下、これらを総称して「連携テンプレート」と呼びます。)

  • JP1/IMのイベント監視抑止などの内容が定義されたWorkflowなどのYAMLファイル
  • Workflowの定義で使用するOps I提供部品
  • JP1/IMとの連携機能を実装したPlaybook

提供するYAMLファイルについては「連携テンプレートの取得と登録」を参考にしてください。また、playbookについては「認証情報およびジョブテンプレートのAWXへの登録」の手順5.を参考にしてください。Ops I提供部品については、一覧を次に示します。

(表)Ops I提供部品(JP1/IM連携用)

Ops I提供部品 説明
im.apply_common_exclusion_conditions_file 共通除外条件拡張定義ファイルへの適用
im.get_common_exclusion_conditions_file 共通除外条件拡張定義ファイルの取得
im.set_common_exclusion_conditions_valid 共通除外条件定義の有効/無効を切り替え
※監視抑止/抑止解除の設定する際に使用するJP1/IMの定義ファイルです。

Ops I提供部品の各パラメータには、ワークフローのYAMLファイルで定義するものと、ワークフロー実行時にGUIから入力するものがあります。以下の説明に従って作業してください。


次に、JP1/IMの連携テンプレート実行の流れを以下に示します。

(図)JP1/IMの連携テンプレート実行の構成図

JP1/IM連携テンプレート実行の構成図 JP1/IM連携テンプレート実行の構成図

JP1/IMの連携テンプレートは以下の流れで実行されます。
①、②、③はJP1/IMの連携テンプレートを使用します。①および③のPlaybookは実行内容にあわせてカスタム可能です。

①ワークフローを実行
②JP1/IMに対するジョブ実行のためのOps I提供部品を実行
③自動化(AWX)のジョブテンプレートを実行
 Playbookがコントロールプレーンに登録されます。
④JP1/IMにある中継サーバから③のPlaybookを取得
⑤Playbook実行により、Playbookに定義されたJP1/IMコマンドを実行
 GitLabと中継サーバとの間で、JP1/IMの共通除外条件拡張定義ファイルの取得又は更新が行われます。


(1)前提条件

連携テンプレートを実行するユーザーはそれぞれ必要なロールを付与してください。Ops Iのロールの詳細は「Ops Iロール」を参照してください。

JP1/IMは以下の条件が満たされている必要があります。この条件は、「JP1/AJS3」のジョブ管理機能との連携と同じ条件です。

(表)JP1/IMの条件(オンプレミス)

サポートOS 前提条件
Windows Server
・Ops Iの中継サーバからJP1/IMのサーバにWinRMを使用して接続することができる。
・PowerShell 5.1以上がインストール済みである。
・.NET 4.0以上がインストール済みである。

また、連携テンプレートにおいて、jcochfilterコマンドを使用するために、以下の条件が満たされている必要があります。

  • JP1/IMの共通除外条件の動作モードを拡張モードにしてください。拡張モードに設定していない場合は、共通除外条件拡張定義ファイル(common_exclude_filter.conf)が存在しないため、JP1/IMの連携テンプレートが使用できません。
  • JP1/IMの追加共通除外条件は、使用しないでください。Ops Iから共通除外条件を変更すると、JP1/IMの共通除外条件拡張定義ファイル(common_exclude_filter.conf)を上書き更新するため、JP1/IMで追加した設定以外の内容が削除されます。
  • JP1/IMの共通除外条件は、JP1/IM - ViewおよびJP1/IMのコマンドで変更しないでください。変更する場合は、Ops Iを使用した運用で実施してください。Ops IとJP1/IMで同時に操作した場合に、ファイルアクセスが競合して処理が正常に動作しない可能性があります。


(2)JP1/IMの連携テンプレート実行のための設定

JP1/IMの連携テンプレート実行のための設定を説明します。
設定項目は以下になります。

a. 中継サーバの設定
b. AWXの「組織」の作成
c. JP1/IMの接続情報・認証情報をシークレット管理へ保存
d. 認証情報およびジョブテンプレートのAWXへの登録

【a. 中継サーバの設定】

中継サーバの設定」を参考に、AWXのインスタンスグループと中継サーバの接続設定を行います。
接続設定後に、ノード一覧画面で該当の中継サーバのノードのステータスが「Ready」になっていることを確認してください。


【b. AWXの「組織」の作成】

組織管理」を参考に、AWXを使用するために必要な、AWXの「組織」を作成する。


【c. JP1/IMの接続情報・認証情報をシークレット管理へ保存】

まず、自動化(AWX)からシークレットにアクセスするための認証情報を取得します。作成方法は「自動化からシークレットにアクセスするための認証情報の取得」を参照してください。
次に、「AWXの「組織」の作成」で作成した組織に対して、Ops I提供部品の実行に必要なシークレット情報の登録を行います。用途ごとに必要なシークレット情報の設定内容を示します。
それぞれのSecrets Engines、Secretの作成方法は以下を参照してください。

1. GitLabのリポジトリにアクセスするための認証情報を登録します。自動化からシークレットにアクセスするための認証情報とプロジェクトの設定で使用します。
① Secrets Enginesを作成します。Secrets Engines名は任意です。(例: secrets/gitlab)
② Secretを作成します。シークレットへのパスは任意です。(例:git)
キーは以下を設定してください。
  • access_token(GitLabのリポジトリにアクセスするためのアクセストークン。GitLabアクセストークンの詳細は「GitLabアクセストークン取得方法」を参照してください。)

2. AWXアクセス用のシークレット情報を登録します。(登録した情報をWorkflowのYAMLファイルに定義します。)
① Secrets Enginesを作成します。Secrets Engines名は任意です。(例:secrets/awx)
② Secretを作成します。シークレットへのパスは任意です。(例:user/credential)
キーは以下を設定してください。
  • password(AWXアクセス用のOps Iのパスワード)
  • user_name(AWXアクセス用のOps Iのユーザー名)
AWXへのアクセスはPATを使用して認証することも可能です。PATについては「PATを使用した認証情報」を参照してください。

3. JP1/IMのサーバアクセス用のシークレット情報を登録します。(登録した情報をWorkflowのYAMLファイルに定義します。)
① Secrets Enginesを作成します。Secrets Engines名は任意です。(例:secrets/im)
② Secretを作成します。シークレットへのパスは任意ですが、JP1/IM - Managerが稼働するホスト名またはIPアドレスの設定を推奨します。(例:host0001)
キーは以下を設定してください。
  • logical_host_name(論理ホスト名)※任意
  • manager(JP1/IM - Managerが稼働するIPアドレス)
  • password(JP1/IMのサーバのOSのパスワード)
  • user_name(JP1/IMのサーバのOSのユーザー名)

4. ユーザーのクレデンシャル情報を登録します。ワークフロー内のoi.fetch_access_tokenの実行に必要なシークレットです。oi.fetch_access_tokenの詳細は「Ops I提供部品」、登録方法は「ユーザーのクレデンシャル情報登録」を参照してください。
① Secrets Enginesを作成します。Secrets Engines名は任意です。(例: secrets/opsi)
② Secretを作成します。シークレットへのパスは任意です。(例:user/credential)
キーは以下を設定してください。
  • username(Ops Iアクセストークンを取得するユーザー名)
  • password(Ops Iアクセストークンを取得するユーザーのパスワード)
  • domain(Ops IのFQDN(例:"テナント名.ops-integration.com"))

5. ワークフロー内で利用するユーザーのOps IトークンとOps Iのドメイン名を登録します。
① Secrets Enginesを作成します。Secrets Engines名は任意です。(例:secrets/opsi)
② Secretを作成します。シークレットへのパスは任意です。(例:user/opsi_token)
キーは以下を設定してください。
  • opsi_token(API「GET /documents」、「GET /container-items」、「POST /container-items/{id}/files」が実行できるユーザーのOps Iトークン)
  • opsi_domain(Ops Iのドメイン名)


【d. 認証情報およびジョブテンプレートのAWXへの登録】

自動化」を参考に、JP1/IMの連携テンプレート実行に必要な以下のAWXの設定を行います。

1. 以下の認証情報を登録します。①、②の詳細は「認証情報の登録」を参照してください。
① Vault:
認証情報タイプ「HashiCorp Vault Secret Lookup」
② GitLab:
認証情報タイプ「ソースコントロール」
③ JP1/IM:
認証情報タイプ「IM Credential type」
名前は「JP1/IMの接続情報・認証情報をシークレット管理へ保存」の手順3.で登録したJP1/IMのシークレットのパスを指定します。(例:secrets/im/host0001)
タイプの詳細は②と同様に①で登録したVaultの認証情報を指定します。その他のフィールドは「(表)外部シークレット管理システムのメタデータ入力一覧」を参考にしてください。「logical_host_name」への入力は任意です。
④ Ops I:
認証情報タイプ「OpsI Credential type」
名前は「JP1/IMの接続情報・認証情報をシークレット管理へ保存」の手順5.で登録したOps Iクレデンシャルのシークレットのパスを指定します。(例:secrets/opsi/user/opsi_token)
タイプの詳細は②と同様に①で登録したVaultの認証情報を指定します。その他のフィールドは「(表)外部シークレット管理システムのメタデータ入力一覧」を参考にしてください。ただし「username」と「password」はここでは使用しないため、入力は不要です。
⑤ 中継サーバ:
中継サーバ使用手順」を参照してください。

2. 「プロジェクトの設定」を参考にプロジェクトを設定します。プロジェクトの名前は「System」を入力します。
また、オプションにあるチェックボックス「起動時のリビジョン更新」のチェックは任意ですが、チェックするとplaybookを更新したときに自動で更新後のplaybookを実行します。

3. 「インベントリーの登録」を参考にインベントリーを登録します。変数の記載は不要です。

4. 「インベントリーの登録」を参考に、手順3.で登録したインベントリーにひもづく以下の①、②のホストを作成します。
① 名前:localhost
変数:「(表)ホストにlocalhostを登録する例」の変数を参考にしてください。
② 名前:「JP1/IMの接続情報・認証情報をシークレット管理へ保存」の手順3.②で設定したmanagerの値(JP1/IM - ManagerのIPアドレスを想定)
変数:以下の記載例を参考に設定してください。

記載例

---
ansible_connection: winrm
ansible_ssh_port: 5986
ansible_winrm_transport: basic
ansible_winrm_server_cert_validation: ignore
ansible_user: "{{ lookup('env','im_user_name') }}"
ansible_password: "{{ lookup('env','im_password') }}"


5. 「ジョブテンプレートの登録」を参考にジョブテンプレートを登録します。
ジョブテンプレート登録の入力項目について以下に示します。

(表)ジョブテンプレート登録の入力項目

項目 説明
名前 任意の名前を設定します。
Ops I提供部品に定義しているデフォルト値を以下に示します。ジョブテンプレート名を変更する場合は、WorkflowのYAMLファイルに定義するジョブテンプレート名と一致させてください。
Ops I提供部品 ジョブテンプレート名
im.apply_common_exclusion_conditions_file IM Apply Common Exclusion Conditions File
im.get_common_exclusion_conditions_file IM Get Common Exclusion Conditions File
im.set_common_exclusion_conditions_valid IM Set Common Exclusion Conditions Valid
ジョブタイプ 実行を選択します。
インベントリー アイコンをクリックし、上記3.で登録したインベントリーを選択します。
プロジェクト アイコンをクリックし、上記2.で登録したプロジェクトを選択します。
実行環境、インスタンスグループ、認証情報 中継サーバ使用手順」を参照し設定してください。
Playbook 「system」グループの「system」リポジトリに登録されている、実行したいJP1/IMジョブテンプレート提供部品のPlaybookを設定します。
(表)actionのリスト(JP1/IM連携用Ops I提供部品)」のPlaybook nameを参考に、設定してください。
また、Playbookをカスタマイズしたい場合は、「system」グループの「system」リポジトリよりダウンロード後カスタマイズし、Ops Iの任意のリポジトリ(YAMLファイルの管理が有効)にpushしたPlaybookをジョブテンプレートに設定することにより使用可能となります。
起動プロンプト 「認証情報」と「変数」のチェックボックスにチェックします。


(3)連携テンプレートの取得と登録

JP1/IMの連携テンプレートを実行するため、連携テンプレートを取得し、リポジトリに登録します。JP1/IMの連携テンプレートはWorkflow、Catalog、UI、およびDatamodelのYAMLファイルがzipファイルにまとめられてGitLabに格納されています。それぞれのYAMLファイルには、JP1/IMに対するジョブを実行するための内容が定義されています。ユーザーは、実行するジョブやシークレット情報など必要に応じて、カスタマイズします。

【JP1/IMの連携テンプレートを取得】

GitLabの以下の場所から、JP1/IMの連携テンプレートを取得します。systemリポジトリは、GitアプリケーションのExploreタブに表示されます。

(表)JP1/IMの連携テンプレートの格納場所とファイル名

グループ リポジトリ ディレクトリ ファイル名
system system integration templates/JP1 JP1_integration_templates.zip

【WorkflowのYAMLファイルの定義】

Ops I提供部品をワークフローから実行するため、以下の通りWorkflowのYAMLファイルのactionにOps I提供部品、inputにパラメータを定義します。パラメータにはそれぞれ「シークレットの作成」で作成したシークレット情報を定義します。シークレットは、常に最新のシークレットのバージョンのものを設定してください。
Ops I提供部品とパラメータの詳細については、「(表)actionのリスト(JP1/IM連携用Ops I提供部品)」を参照してください。

(表)Workflowのactionとinputの定義内容

ラベル 説明
action: 実行するJP1/IMのOps I提供部品
input: 各パラメータに対して、「JP1/IMの接続情報・認証情報をシークレット管理へ保存」で設定した以下の値を入力します。
awx_vault_~ "awx_vault_~"で始まるパラメータにAWXアクセス用のシークレットのSecrets Engines名とシークレットへのパスを定義します。
im_vault_~ "im_vault_~"で始まるパラメータにJP1/IMのサーバアクセス用のシークレットのSecrets Engines名とシークレットへのパスを定義します。
job_template_~ "job_template_~"で始まるパラメータにAWXのジョブテンプレートの情報を定義します。

【各YAMLファイルのリポジトリへの登録】

Ops I提供部品を定義したWorkflowのYAMLファイルと、取得したCatalog、UI、およびDatamodelのYAMLファイルを任意のリポジトリに登録します。リポジトリにはYAMLファイルの管理が有効である必要があります。リポジトリのYAMLファイルの管理については「リポジトリ管理」を参照してください。また、登録先のリポジトリのディレクトリは、取得したJP1/IMの連携テンプレートのフォルダ構成と同じである必要があります。リポジトリのディレクトリ構成について以下に示します。

(図)JP1/IMとの連携用のリポジトリのディレクトリ構成

IMディレクトリ構成 IMディレクトリ構成

※1:各ワークフローで共通のデータを格納するdatamodelです。各ワークフローで共通のデータについては、「ワークフロー詳細画面の各入力項目」を参照してください。
※2:ワークフローの説明を表示するガイダンス画面です。Workflowの定義の詳細については「Workflow」を参照してください。

登録するYAMLファイルには依存関係があります。すべてのYAMLファイルを同時にGitLabに登録する場合は、依存関係を意識する必要はありませんが、1つずつYAMLファイルを登録する場合、Script、Datamodel、UI、Workflow、Catalogの順番で登録してください。ここでの「登録」は、GUIでの操作ではcommit、CUIでの操作ではpushを指します。

(4)共通除外条件拡張定義ファイルの格納先

JP1/IMの連携テンプレート「共通除外条件拡張定義ファイル取得」実行時に取得したファイルの格納先を準備します。

1. LibraryのYAML定義をOps Iに登録して、共通除外条件拡張定義ファイル格納用のコンテナとコンテナアイテムフォルダを登録します。Libraryの詳細については「Library」を参照してください。

2. ユーザーグループ、リポジトリと手順1.で登録したコンテナ、コンテナアイテムフォルダを指定して共通除外条件拡張定義ファイルをファイル名「common_exclude_filter.conf.txt」で登録します。コンテナ、コンテナアイテムフォルダのインスタンスを作成することが目的のため、この時点ではファイルの中身は空でも問題ありません。

定義ファイルの格納について推奨する内容を示します。
■ ユーザーグループ

  • 定義ファイルを編集するため、リポジトリ管理画面を表示、操作できる以下のPre-Installedロールが割り当てられているユーザーが所属するグループであること。
    ・System Administrator
    ・Site Reliability Engineer
  • リポジトリ管理画面でリポジトリ一覧を表示するため、GitロールのMaintainerが割り当てられているユーザーグループであること。
  • Ops Iが複数のシステムを管理していて複数のJP1/IMがある場合、適切なロールが割り当てられたユーザーグループ、リポジトリにそれぞれ格納する。

■ コンテナ名、コンテナアイテムフォルダ名、コンテナアイテムフォルダ内のディレクトリパス

  • コンテナ名:JP1/IM
  • コンテナアイテムフォルダ名:Common Exclusion Conditions File
  • コンテナアイテムフォルダ内のディレクトリパス:JP1/IMのサーバごとにディレクトリを分ける
例)jp1im_A/common_exclude_filter.conf
jp1im_B/common_exclude_filter.conf …


(5)中継サーバのプロキシ設定

中継サーバでプロキシを利用する場合、以下を実施してください。

【AWXのホストの修正】

認証情報およびジョブテンプレートのAWXへの登録」の手順4.でJP1/IM用に設定したインベントリーのAWXのホストを修正します。変数の記載内容は以下を参考にしてください。

---
ansible_connection: local
ansible_python_interpreter: '{{ ansible_playbook_python }}'
https_proxy: "{利用するプロキシのurl}"


【IPブロックの追加】

以下の手順でIPブロックの追加とノードグループへのひもづけを行ってください。
1. プロキシとDNSのIPアドレスをIPブロックに追加します。IPブロックの名前は任意です。詳細は「IPブロック管理」を参照してください。
2. 追加したIPブロックをノードグループにひもづけます。詳細は「ノードグループ管理」を参照してください。


(6)連携テンプレートの実行と結果確認

連携テンプレートの取得と登録」で登録したJP1/IMの連携テンプレートを、サービスカタログから実行します。実行ステップごとの詳細について以下に示します。
「共通除外条件拡張定義ファイルの取得と適用」を実行した場合を例として、実行ステップごとの詳細について以下に示します。入力情報および表示情報の詳細は「ワークフロー詳細画面の各入力項目」を参照してください。

(表)実行ステップごとの詳細

ステップ 作業者 説明
1 サービスカタログ起動 申請者 JP1/IMに対するジョブが定義されたカタログアイテムをクリックします。
2 ワークフロー開始 申請者 ワークフローのガイダンス画面が表示されます。内容を確認し、操作ボタンの「申請開始」をクリックします。
3 共通除外条件拡張定義ファイル格納場所の情報を入力 申請者 ワークフローの申請画面より共通除外条件拡張定義ファイルの格納先を指定して、操作ボタンの「定義ファイル取得」をクリックします。
4 共通除外条件拡張定義ファイルを取得 自動実行 JP1/IMから共通除外条件拡張定義ファイルを取得します。取得した定義ファイルは、指定したコンテナアイテムフォルダ内のパスに格納されます。
5 共通除外条件拡張定義ファイル更新 申請者 取得した共通除外条件拡張定義ファイルを更新します。詳細は「共通除外条件拡張定義ファイルの更新」を参照してください。
6 申請 申請者 ワークフローの申請画面より、操作ボタンの「申請」をクリックします。
申請ボタンは共通除外条件拡張定義ファイル取得のステータスが「successful」で活性化します。
7 申請情報を確認 運用担当者 申請情報を確認し、確認結果に応じて操作ボタンの「確認完了」または、「却下」をクリックします。
8 申請情報の承認 運用管理者 申請情報を確認し、確認結果に応じて操作ボタンの「承認」または、「却下」をクリックします。
操作ボタンの「承認」がクリックされるとJP1/IMに対するジョブが自動実行され、更新した共通除外条件拡張定義ファイルが適用されます。
9 ワークフロー終了後の確認 申請者 ステップ1~8の内容をワークフロー操作画面で確認して、操作ボタンの「確認完了」をクリックします。


(7)共通除外条件拡張定義ファイルの更新

共通除外条件拡張定義ファイルは、監視抑止/抑止解除をjcochfilterコマンドで設定する際に使用するファイルです。ワークフロー実行で取得した共通除外条件拡張定義ファイルの更新例を以下に示します。

(図)共通除外条件拡張定義ファイルの更新例

共通除外条件拡張定義ファイルの例 共通除外条件拡張定義ファイルの例

サーバのメンテナンス作業開始のため当該サーバの監視(イベント発生)を抑止したい場合、上図※内のdef~end-defの1ブロックを追加して、cnd(イベント条件)に当該サーバに一致する条件を記載します。



(8)ワークフロー詳細画面の各入力項目

ワークフローの詳細画面の各入力項目について説明します。この入力項目は、Ops I提供部品として提供されているパラメータが表示されます。各項目は、ステップによって表示や入力の可不可が切り替わります。

申請者入力項目について以下に示します。

(表)申請者入力項目

項目 必須 説明
JP1/IMの接続情報 Yes JP1/IMの接続情報・認証情報をシークレット管理へ保存」の手順3.②で設定したJP1/IMのサーバアクセス用のシークレットへのパスを設定します。
共通除外条件拡張定義ファイル格納場所 取得した共通除外条件拡張定義ファイルの格納場所を指定します。指定内容の詳細は「共通除外条件拡張定義ファイルの格納先」を参照してください。
グループパス Yes 格納先のグループパスを指定します。
リポジトリ Yes 格納先のリポジトリ名を指定します。
コンテナ名 Yes 格納先のコンテナ名を指定します。
コンテナアイテム名 Yes 格納先のコンテナアイテムフォルダ名を指定します。
ディレクトリパス Yes 格納先のコンテナアイテムフォルダ内のディレクトリパスを指定します。
ファイルURL No 申請者が定義ファイル取得ボタンをクリックした後、取得処理のステータスが「successful」になった場合に自動で入力されます。参照のみ可能な項目です。
運用担当者・運用管理者宛てのコメント No 運用担当者および運用管理者宛てのコメントを入力します。

その他の項目について以下に示します。

(表)その他の項目

項目 必須 説明
共通除外条件拡張定義ファイル取得 共通除外条件拡張定義ファイルの取得結果が表示されます。参照のみ可能な項目です。
ステータス No ステータスが表示されます。
実行結果 No 実行結果が表示されます。
ジョブURL No ジョブURLが表示されます。
差戻理由 運用担当者または運用管理者が差戻し理由を入力する項目です。
差戻理由(運用担当者) No 運用担当者が差戻し理由を入力します。
差戻理由(運用管理者) No 運用管理者が差戻し理由を入力します。
共通除外条件拡張定義ファイル適用 共通除外条件拡張定義ファイルの適用結果が表示されます。参照のみ可能な項目です。
ステータス No ステータスが表示されます。
実行結果 No 実行結果が表示されます。
ジョブURL No ジョブURLが表示されます。