3. Ansible-Pioneer

3.1. はじめに

本書では、Ansible driverのPioneer機能および操作方法について説明します。

3.2. Ansible-Pioneer概要

Ansibleに独自モジュールを追加し、対話形式による設定投入を可能とします。
Telnet, SSH でログイン可能なサーバ・ストレージ・ネットワーク各機器に対応しています。

3.3. Ansible-Pioneer メニュー構成

本章では、Ansible-Pioneerのメニュー構成について説明します。

3.3.1. メニュー/画面一覧

  1. 基本コンソールのメニュー
Ansible-Pioneerで利用する 基本コンソールのメニュー一覧を以下に記述します。
表 3.33 基本コンソール メニュー/画面一覧

No

メニュー画面

説明

1

オペレーション一覧

オペレーション一覧をメンテナンス(閲覧/登録/更新/廃止)できます。


  1. Ansible共通のメニュー
Ansible共通のメニュー一覧を以下に記述します。
表 3.34 Ansible共通 メニュー/画面一覧

No

メニュー・画面

説明

1

機器一覧

作業対象の機器情報を管理します。

2

インターフェース情報

Ansible Core、Ansible Automation Controllerサーバのどちらを実行エンジンとし構築作業をするか選択をします。
実行エンジンのサーバへの接続インターフェース情報を管理します。

3

Ansible Automation Controllerホスト一覧

Ansible Automation ControllerのRestAPI実行に必要な情報、および構築資材をAnsible Automation Controllerにファイル転送するために必要な情報を管理します。

4

グローバル変数管理

各モードのPlaybookや対話ファイルで共通利用する変数と具体値を管理します。

5

ファイル管理

各モードのPlaybookや対話ファイルで共通利用する素材ファイルと埋込変数を管理します。

6

テンプレート管理

各モードのPlaybookや対話ファイルで共通利用するテンプレートファイルと埋込変数を管理します。

7

管理対象外変数リスト

変数抜出対象資材 」で抜出した変数で、各モード ▶ 代入値自動登録設定Movement名:変数名 に表示したくない変数を管理します。

8

共通変数利用リスト (※1)

Ansible共通 ▶ グローバル変数管理Ansible共通 ▶ ファイル管理Ansible共通 ▶ テンプレート管理 に登録されている変数が、どの素材( Ansible-Legacy ▶ Playbook素材集Ansible-Pioneer ▶ 対話ファイル素材集Ansible-LegacyRole ▶ ロールパッケージ管理 )で使用しているかを閲覧できます。

Tip

※1 非表示メニューは、内部処理で使用するメニューです。
ITAをインストールした状態では表示されないメニューに設定されています。
非表示メニューを表示するには、管理コンソール ▶ ロール・メニュー紐付管理 で各メニューの復活処理を行います。詳細は「 管理コンソール 」を参照してください。
内部処理で使用するメニューには、登録を行わないようにしてください。

  1. Ansible-Pioneerのメニュー
Ansible-Pioneerのメニュー一覧を以下に記述します。
表 3.35 Ansible-Pioneer メニュー/画面一覧

No

メニュー・画面

説明

1

Movement一覧

Movementの一覧を管理します。

2

対話種別

同一目的の対話ファイルをまとめる対話種別を管理します。

3

OS種別

Pioneerより作業対象となる機器のOS種別を管理します。

4

対話ファイル素材集

対話種別に紐づけるOS種別とITAシステム独自フォーマットの作業手順ファイル(以降、対話ファイルと称す。)を管理します。

5

Movement-対話種別紐付

Movementでインクルードする対話ファイルに対応した対話種別を管理します。

6

代入値自動登録設定

パラメータシートに登録されているオぺレーションとホスト毎の項目値を紐付けるMovementと変数を管理します。

7

作業実行

作業実行するMovementとオペレーションを選択し実行を指示します。

8

作業管理

作業実行履歴を管理します。

9

作業状態確認

作業実行状態を表示します。

10

作業対象ホスト

作業実行毎の作業対象ホストを表示します。

11

代入値管理

作業実行毎の変数の具体値を表示します。

12

Movement-変数紐付 (※1)

Movementで使用している変数を管理します。

Tip

※1 非表示メニューは、内部処理で使用するメニューです。
ITAをインストールした状態では表示されないメニューに設定されています。
非表示メニューを表示するには、管理コンソール ▶ ロール・メニュー紐付管理 で各メニューの復活処理を行います。詳細は「 管理コンソール 」を参照してください。
内部処理で使用するメニューには、登録を行わないようにしてください。

3.4. Ansible-Pioneer利用手順

Ansible-Pioneerの利用手順について説明します。

3.4.1. Ansible-Pioneer作業フロー

以下は、Ansible-Pioneerで作業を実行するまでの流れです。
  • 作業フロー詳細と参照先

    1. OS種別の登録
      Ansible-Pioneer ▶ OS種別 から、作業対象のOS種別を登録します。
      詳細は「 OS種別 」を参照してください。
    2. 作業対象への接続情報を登録
      Ansible共通 ▶ 機器一覧 から、作業対象への接続情報を登録します。
      詳細は「 機器一覧 」を参照してください。
    3. オペレーション名の登録
      基本コンソール ▶ オペレーション一覧 から、作業用のオペレーション名を登録します。
      詳細は「 オペレーション一覧 」を参照してください。
    4. Ansible Automation Controllerホスト情報を登録(必要に応じて実施)
      Ansible共通 ▶ Ansible Automation Controllerホスト一覧 から、Ansible Automation Controllerのホスト情報を登録します。
      詳細は「 Ansible Automation Controller ホスト一覧 」を参照してください。
    5. インターフェース情報の登録
      Ansible共通 ▶ インターフェース情報 から、Ansible Core、Ansible Automation Controllerのどちらを実行エンジンにするかを選択し、実行エンジンのサーバへの接続情報を登録します。
      詳細は「 インターフェース情報 」を参照してください。
    6. Movementの登録
      Ansible-Pioneer ▶ Movement一覧 から、作業用のMovementを登録します。
      詳細は「 Movement一覧 」を参照してください。
    7. 対話種別の登録
      Ansible-Pioneer ▶ 対話種別 から、対話種別を登録します。
      詳細は「 対話種別 」を参照してください。
    8. 対話ファイルの登録
      Ansible-Pioneer ▶ 対話ファイル素材集 から、対話種別とOS種別の組み合わせに対して対話ファイルを登録します。
      詳細は「 対話ファイル素材集 」を参照してください。
    9. グローバル変数の登録(必要に応じて実施)
      Ansible共通 ▶ グローバル変数管理 から、対話ファイルで使用するグローバル変数を登録します。
      詳細は「 グローバル変数管理 」を参照してください。
    10. テンプレートファイルの登録(必要に応じて実施)
      Ansible共通 ▶ テンプレート管理 から、対話ファイルで使用するテンプレートファイルとテンプレート埋込変数を登録します。
      詳細は「 テンプレート管理 」を参照してください。
    11. ファイル素材の登録(必要に応じて実施)
      Ansible共通 ▶ ファイル管理 から、対話ファイルで使用するファイル素材とファイル埋込変数を登録します。
      詳細は「 ファイル管理 」を参照してください。
    12. 管理対象外変数の登録(必要に応じて実施)
      Ansible共通 ▶ 管理対象外変数リスト から、変数抜出対象の資材から抜出した変数で、 Ansible-Pioneer ▶ 代入値自動登録Movement名:変数名 に表示したくない変数を登録します。
      詳細は「 管理対象外変数リスト 」を参照してください。
    13. Movementに対話ファイルを登録
      Ansible-Pioneer ▶ Movement-対話種別紐付 から、登録したMovementでインクルードする対話ファイルに対応した対話種別を登録します。
      詳細は「 Movement-対話種別紐付 」を参照してください。
    14. パラメータシートの作成
      パラメータシート作成・定義 から、作業対象の設定に使用するデータを登録するためのパラメータシートを作成します。
      詳細は「 パラメータシート作成機能 」を参照してください。
    15. パラメータシートにデータを登録
      前項で作成したパラメータシートから、作業対象の設定に使用するデータを登録します。
      詳細は「 パラメータシート作成機能 」を参照してください。
    16. 代入値自動登録設定
      Ansible-Pioneer ▶ 代入値自動登録設定 から、パラメータシートに登録されているオペレーションとホスト毎の項目の設定値と、Movementの変数を紐付けます。
      詳細は「 代入値自動登録設定 」を参照してください。
    17. 作業実行
      Ansible-Pioneer ▶ 作業実行 から、Movementとオペレーションを選択し作業の実行を行います。
      詳細は「 作業実行 」を参照してください。
    18. 作業状態確認
      Ansible-Pioneer ▶ 作業状態確認 から、実行した作業の状態をリアルタイムで閲覧できます。また、作業の緊急停止や、実行ログ、エラーログを監視することができます。
      詳細は「 作業状態確認 」を参照してください。
    19. 作業履歴確認
      Ansible-Pioneer ▶ 作業管理 から、実行した作業の一覧が表示され履歴が確認できます。
      詳細は「 作業管理 」を参照してください。

3.5. Ansible-Pioneer メニュー操作方法説明

本章では、Ansible-Pioneerで利用するメニューについて説明します。

3.5.1. 基本コンソール

基本コンソールについての操作は「 基本コンソール 」を参照してください。

3.5.2. Ansible共通

Ansible共通についての操作は「 Ansible共通 」を参照してください。

3.5.3. Ansible-Pioneer

本節では、Ansible-Pioneerでの操作について記載します。

OS種別

  1. 作業対象となる機器のOS種別のメンテナンス(閲覧/登録/更新/廃止)を行います。
    サブメニュー画面(OS種別)

    図 3.32 サブメニュー画面(OS種別)

  2. 登録 ボタンより、OS種別の登録を行います。
    登録画面(OS種別)

    図 3.33 登録画面(OS種別)

  3. 登録画面の項目一覧は以下のとおりです。
    表 3.36 登録画面項目一覧(OS種別)

    項目

    説明

    入力必須

    入力形式

    制約事項

    項番

    登録時に自動採番した36桁の文字列が表示されます。

    自動入力

    OS種別名

    任意のOS名称を入力します。

    手動入力

    最大長255バイト

    機種別

    SV

    サーバ機器の場合「True」を選択します。

    リスト選択

    NW

    ネットワーク機器の場合「True」を選択します。

    リスト選択

    ST

    ストレージ機器の場合「True」を選択します。

    リスト選択

    備考

    自由記述欄です。

    手動入力

Movement一覧

  1. Movement情報のメンテナンス(閲覧/登録/更新/廃止)を行います。
    サブメニュー画面(Movement一覧)

    図 3.34 サブメニュー画面(Movement一覧)

  2. 登録 ボタンより、Movement情報の登録を行います。
    登録画面(Movement一覧)

    図 3.35 登録画面(Movement一覧)

  3. 登録画面の項目一覧は以下のとおりです。
    表 3.37 登録画面項目一覧(Movement一覧)

    項目

    説明

    入力必須

    入力方法

    制約事項

    MovementID

    登録時に自動採番した36桁の文字列が表示されます。

    自動入力

    Movement名

    Movementの名称を入力します。

    手動入力

    最大長255バイト

    遅延タイマー

    Movementの実行が指定期間遅延した場合に Ansible-Pioneer ▶ 作業状態確認ステータス を「実行中(遅延)」として警告表示したい場合に指定期間(1~)を入力します。(単位:分)

    未入力の場合は警告表示しません。

    手動入力

    0~2,147,483,647

    Ansible利用情報

    ホスト指定形式

    IPアドレスで表現しないホストを指定したい場合に「ホスト名」を選択します。

    リスト選択

    説明欄記載のとおり。

    並列実行数

    ansible-playbookコマンドのオプションパラメータ「--forks」を指定したい場合に値を入力します。

    手動入力

    1~4,294,967,296

    ansible.cfg

    作業実行時に使用するansible.cfgをアップロードします。

    未アップロードの場合は、デフォルトが使用されます。

    ファイル選択

    最大サイズ100Mバイト

    Ansible Automation Controller利用情報

    実行環境 ※1

    Ansible Automation Controllerに構築されている実行環境が表示されます。

    使用する実行環境を選択します。

    未選択の場合は、Ansible Automation Controllerに設定されているデフォルトの実行環境が使用されます。

    リスト選択

    説明欄記載のとおり。

    備考

    自由記述欄です。

    手動入力

    最大長4000バイト

    Tip

    ※1 「 Ansible Automation Controllerデータ同期 」により取得したデータから選択します。

対話種別

  1. 対話種別のメンテナンス(閲覧/登録/更新/廃止)を行います。
    Ansible-Pioneerでは、「OS種別」ごとの差異を対話ファイルごとに定義し、同一目的の対話ファイルを「対話種別」として纏めて機器差分を吸収(抽象化)します。
    サブメニュー画面(対話種別)

    図 3.36 サブメニュー画面(対話種別)

  2. 登録 ボタンより、対話種別の登録を行います。
    登録画面(対話種別)

    図 3.37 登録画面(対話種別)

  3. 登録画面の項目一覧は以下のとおりです。
    表 3.38 登録画面項目一覧(対話種別)

    項目

    説明

    入力必須

    入力方法

    制約事項

    項番

    登録時に自動採番した36桁の文字列が表示されます。

    自動入力

    対話種別名

    対話種別名を入力します。

    リスト選択

    最大長255バイト

    備考

    自由記述欄です。

    手動入力

    最大長4000バイト

対話ファイル素材集

  1. ユーザが作成した対話ファイルのメンテナンス(閲覧/登録/更新/廃止)を行います。
    対話ファイルの記述に関しては、「 対話ファイル(Ansible-Pioneer)の記述方法 」を参照してください。
    対話種別とOS種別の組み合わせごとに対話ファイルを登録します。
    1つの対話種別で複数のOSに対応させたい場合は、同じ対話種別で、OS種別それぞれについて対話ファイルを登録してください。
    サブメニュー画面(対話ファイル素材集)

    図 3.38 サブメニュー画面(対話ファイル素材集)

  2. 登録 ボタンより、対話ファイル素材の登録を行います。
    登録画面(対話ファイル素材集)

    図 3.39 登録画面(対話ファイル素材集)

  3. 登録画面の項目一覧は以下のとおりです。
    表 3.39 登録画面項目一覧(対話ファイル素材集)

    項目

    説明

    入力必須

    入力方法

    制約事項

    項番

    登録時に自動採番した36桁の文字列が表示されます。

    自動入力

    対話種別名

    Ansible-Pioneer ▶ 対話種別 で登録した 対話種別 が表示されます。

    登録する対話ファイルの対話種別を選択します。

    リスト選択

    説明欄記載のとおり。

    OS種別

    Ansible-Pioneer ▶ OS種別 で登録した OS種別 が表示されます。

    登録する対話ファイルのOS種別を選択します。

    リスト選択

    説明欄記載のとおり。

    対話ファイル素材

    対話種別OS種別 に対応する対話ファイルをアップロードします。

    アップロードする対話ファイルは、文字コードがUTF-8のBOMなしで作成してください。

    対話ファイルはYAML書式に準じた記述をしてください。

    ファイル選択

    最大サイズ100Mバイト

    ターゲット

    Linux

    Linuxで使用可能なPlaybookの場合、「*」を選択します。

    未選択でも、作業実行に影響はありません。

    リスト選択

    説明欄記載のとおり。

    Windows

    Windowsで使用可能なPlaybookの場合、「*」を選択します。

    未選択でも、作業実行に影響はありません。

    リスト選択

    説明欄記載のとおり。

    その他

    Linux、Windows以外の用途で使用可能なPlaybookの場合、Playbookの用途を入力します。

    手動入力

    最大長4000バイト

    Python要否

    ターゲットの機器にPythonが必要の場合、「*」を選択します。

    未選択でも、作業実行に影響はありません。

    リスト選択

    説明欄記載のとおり。

    説明

    Playbookについての説明を入力します。

    手動入力

    最大長4000バイト

    説明(en)

    Playbookについての説明を英語で入力します。

    手動入力

    最大長4000バイト

    備考

    自由記述欄です。

    手動入力

    最大長4000バイト

警告

対話ファイル内に定義した変数を取り出すタイミング
内部の処理で対話ファイル内に定義している変数を抽出します。抽出した変数は、「 代入値自動登録設定 」で具体値の登録が可能になります。
抽出のタイミングはリアルタイムではないので、「 代入値自動登録設定 」で変数が扱えるまでに 時間がかかる 場合があります。

Movement-対話種別紐付

  1. Movementでインクルードする対話ファイルに対応した対話種別のメンテナンス(閲覧/登録/更新/廃止)を行います。
    サブメニュー画面(Movement-対話種別紐付)

    図 3.40 サブメニュー画面(Movement-対話種別紐付)

  2. 登録 ボタンより、Movementでインクルードする対話ファイルに対応した対話種別の登録を行います。
    登録画面(Movement-対話種別紐付)

    図 3.41 登録画面(Movement-対話種別紐付)

  3. 登録画面の項目一覧は以下のとおりです。
    表 3.40 登録画面項目一覧(Movement-対話種別紐付の場合)

    対話種別

    説明

    入力必須

    入力方法

    制約事項

    項番

    登録時に自動採番した36桁の文字列が表示されます。

    自動入力

    Movement

    Ansible-Pioneer ▶ Movement一覧 で登録した Movement名 が表示されます。
    Movement を選択します。

    リスト選択

    説明欄記載のとおり。

    対話種別

    Ansible-Pioneer ▶ 対話種別 で登録した 対話種別 が表示されます。
    Movementでインクルードする対話ファイルに対応した対話種別を選択します。
    作業対象毎にOS種別と対話種別に紐付く対話ファイルが実行対象となります。

    リスト選択

    説明欄記載のとおり。

    インクルード順序

    対話種別の実行順序(1~)を入力します。
    入力されたインクルード順序(昇順)で対話種別に紐付く対話ファイル素材が実行されます。

    手動入力

    1~2,147,483,647

    備考

    自由記述欄です。

    手動入力

    最大長4000バイト

代入値自動登録設定

  1. パラメータシートの項目の設定値とMovementの変数との紐付管理(閲覧/登録/更新/廃止)を行います。
    登録した情報は作業実行により Ansible-Pioneer ▶ 代入値管理Ansible-Pioneer▶ 作業対象ホスト に反映されます。
    サブメニュー画面(代入値自動登録設定)

    図 3.42 サブメニュー画面(代入値自動登録設定)

  2. 登録 ボタンより、パラメータシートの項目の設定値とMovementの変数との紐付登録を行います。
    登録画面(代入値自動登録設定)

    図 3.43 登録画面(代入値自動登録設定)

  3. 登録画面の項目一覧は以下のとおりです。
    表 3.41 登録画面項目一覧(代入値自動登録設定)

    項目

    説明

    入力必須

    入力方法

    制約事項

    項番

    登録時に自動採番した36桁の文字列が表示されます。

    自動入力

    パラメータシート(From)

    メニューグループ:メニュー:項目

    パラメータシートの項目が表示されます。

    対象の項目を選択します。

    選択対象となるパラメータシートはパラメータシート作成 ▶ パラメータシート定義・作成 ▶ 作成対象で、パラメータシート(ホスト/オペレーションあり)を選択して作成したパラメータシートの項目になります。

    リスト選択

    説明欄記載のとおり。

    代入順序

    パラメータシートがバンドルの場合、パラメータシートで登録している 代入順序 を入力します。

    ※1

    手動入力

    1~2,147,483,647

    登録方式

    IaC変数(To) で選択した変数の具体値に設定する内容を選択します。

    • Value型
      項目の設定値が IaC変数(To) で選択した変数の具体値になります。
    • Key型
      項目の名称が IaC変数(To) で選択した変数の具体値になります。

    リスト選択

    説明欄記載のとおり。

    Movement名

    Ansible-Pioneer ▶ Movement一覧 で登録したMovement名 が表示されます。

    Movementを選択します。

    リスト選択

    説明欄記載のとおり。

    IaC変数(To)

    Movement名:変数名

    Ansible-Pioneer ▶ Movement-対話種別紐付 で登録した資材で使用している変数が表示されます。

    パラメータシート(From) で選択した項目の具体値を紐付けたい変数を選択します。

    リスト選択

    説明欄記載のとおり。

    代入順序

    複数具体値変数にする場合に入力してください。

    具体値の代入順序(1~)を入力します。入力値に従い昇順で代入されます。具体値が複数ない場合でも代入順序(1~)を入力します。

    ※2

    手動入力

    1~2,147,483,647

    NULL連携

    パラメータシートの具体値がNULL(空白)の場合にAnsible-Pioneer ▶ 代入値管理 にNULL(空白)の値を登録するかを選択します。

    • True
      パラメータシートの値がどのような値でも Ansible-Pioneer ▶ 代入値管理 に登録が行われます。
    • False
      パラメータシートに値が入力されていれば Ansible-Pioneer ▶ 代入値管理 に登録が行われます。

    未選択の場合、Ansible共通 ▶ インターフェース情報NULL連携 の値が適用されます。

    リスト選択

    説明欄記載のとおり。

    備考

    自由記述欄です。

    手動入力

    最大長4000バイト

Tip

※1: パラメータシート(バンドル)を使用する場合のみ必須
パラメータシート(バンドル)のリピート設定されている項目とMovementの変数を紐付ける場合、 Ansible-Pioneer ▶ 代入値自動登録設定 でパラメータシート(From) の代入順序を入力する必要があります。
パラメータシート(バンドル)と代入値自動登録設定の関係を以下の図に示します。
パラメータシート(バンドル)使用時の代入値自動登録設定登録方法

Tip

※2: 代入順序の入力
Ansible-Pioneer では、代入順序が未入力の場合は、通常変数として扱います。
代入順序が入力されている場合は、複数具体値変数として扱います。複数具体値変数の場合は複数の
具体値が必要ない場合(具体値が 1 個でよい)でも代入順序は入力してください。
特定の複数具体値変数に対して代入順序が連続していなくても問題ありません。
連続していない場合は詰めて処理されます。

e.g.)複数具体値変数に代入順序を入力して作業実行する場合
  1. Ansible-Pioneer ▶ 代入値自動登録設定 でパラメータシートに登録されている項目の設定値と対話ファイル内の変数を紐付けします。
    表 3.42 パラメータシートの登録内容

    ホスト名

    オペレーション名

    パラメータ

    項目1

    項目2

    項目3

    項目4

    test-host

    test-ope

    value1

    value2

    value3

    value4

    表 3.43 代入値自動登録設定の登録内容

    メニュー名

    項目

    変数名

    代入順序

    sample-menu

    項目1

    VAR_substitutionA

    30

    sample-menu

    項目2

    VAR_substitutionA

    10

    sample-menu

    項目3

    VAR_substitutionA

    20

    sample-menu

    項目1

    VAR_substitutionB

    2

    sample-menu

    項目2

    VAR_substitutionB

    4

    sample-menu

    項目3

    VAR_substitutionB

    1

    sample-menu

    項目4

    VAR_substitutionB

    3

  2. 作業実行時、ホスト変数ファイル(host_vars/test-host)には、代入値自動登録設定で登録した変数が下記のように出力されます。
    ホスト変数ファイルへの出力内容
    VAR_substitutionA:
      - value2
      - value3
      - value1
    VAR_substitutionB:
      - value3
      - value1
      - value4
      - value2
    

Tip

ホスト変数ファイルへの出力
代入値自動登録設定で登録した変数のみが作業実行時にホスト変数ファイルへ出力されます。
作業実行時に 対話ファイルで使用している変数が代入値自動登録設定に登録されていない場合、作業実行がエラーとなります。

Tip

ファイル埋込変数とテンプレート埋込変数を対話ファイルの変数に紐付して使用する例
e.g.) ファイル埋込変数 CPF_test とテンプレート埋込変数 TPF_sample を代入値自動登録設定で対話ファイルの変数に紐付して使用する場合
  1. Ansible共通 ▶ ファイル管理Ansible共通 ▶ テンプレート管理 で下記のように登録します。
    表 3.44 ファイル管理の登録内容

    ファイル埋込変数名

    ファイル素材

    CPF_test

    test_file.txt

    表 3.45 テンプレート管理の登録内容

    テンプレート埋込変数名

    テンプレート素材

    TPF_sample

    sample.tpl

  2. パラメータシート定義・作成 で「Ansible共通:ファイル管理:ファイル埋込変数名」「Ansible共通:テンプレート管理:テンプレート埋込変数名」をパラメータシートの項目としてパラメータシート作成後、パラメータシートで項目の設定値としてファイル埋込変数とテンプレート埋込変数を登録します。
    パラメータシート定義・作成画面

    図 3.44 パラメータシート定義・作成画面

    表 3.46 サンプルパラメータシートの登録内容

    ホスト名

    オペレーション名

    パラメータ

    ファイル管理

    テンプレート管理

    test-host

    test-ope

    CPF_test

    TPF_sample

  3. Ansible-Pioneer ▶ 代入値自動登録設定 で2. のパラメータシートに登録した項目の設定値と対話ファイルの変数を紐付して Ansible-Pioneer ▶ 作業実行 で作業実行します。
    表 3.47 代入値自動登録設定の登録内容

    メニュー名

    項目

    変数名

    サンプルパラメータシート

    ファイル管理

    VAR_filetest

    サンプルパラメータシート

    テンプレート管理

    VAR_temptest

  4. Ansible-Pioneer ▶ 作業状態確認代入値確認 ボタンで具体値に '{{ CPF_test }}' '{{ TPF_sample }}' が反映されていることが確認できます。
    作業状態確認の代入値管理

    図 3.45 作業状態確認の代入値管理

作業実行

作業対象のMovementをMovement一覧から選択します。
作業対象のオペレーションをオペレーション一覧から選択します。
作業実行には、3種類の実行種別があります。実行種別に応じたボタンをクリックすることで Ansible-Pioneer ▶ 作業状態確認 に遷移し、実行されます。
作業実行画面

図 3.46 作業実行画面

実行種別ついて以下に説明します。
  1. 作業実行
    作業実行 ボタンをクリックすると、作業対象に対して構築作業を実行します。
  2. ドライラン
    ドライラン ボタンをクリックすると、実際に作業対象に対して構築作業をせず、ドライランを行うことができます。
    ドライランを行った場合の動作は、Ansible-Playbookコマンドの--checkパラメータを指定した実行となります。
  3. パラメータ確認
    パラメータ確認 ボタンをクリックすると、実際に作業対象に対して構築作業をせず、 Ansible-Pioneer ▶ 代入値自動登録設定 に登録してある情報から作業対象のオペレーションとMovementに紐付く情報を Ansible-Pioneer ▶ 代入値管理Ansible-Pioneer ▶ 作業対象ホスト に反映し、確認することが出来ます。

Tip

予約日時の指定
「予約日時」を入力することで、実行を予約することがきます。
「予約日時」には、未来の日時のみ入力可能です。

作業状態確認

作業の実行状態を監視します。
サブメニュー画面(作業状態確認)

図 3.47 サブメニュー画面(作業状態確認)

  1. 実行状態表示
    実行状況に応じた「ステータス」が表示されます。
    また、実行ログ、エラーログに実行状況の詳細が表示されます。
    「実行種別」には、作業実行の場合は「通常」、ドライランの場合は「ドライラン」、パラメータ確認の場合は「パラメータ確認」が表示されます。
    ステータスが想定外エラーで終了した場合、エラーログにメッセージが表示されます。
    「呼出元Conductor」には、Conductorから実行した場合に、どのConductorから実行されたかを表示します。Ansible-Pioneerから直接実行した場合は空欄になります。
  2. 作業対象ホスト確認
    作業対象ホスト確認 ボタンで Ansible-Pioneer ▶ 作業対象ホスト が表示され、作業対象のオペレーションとMovementに絞り込んだホストが表示されます。
  3. 代入値確認
    代入値確認 ボタンで Ansible-Pioneer ▶ 代入値管理 が表示され、作業対象のオペレーションとMovementに絞り込んだ変数と具体値が表示されます。
  4. 緊急停止/予約取り消し
    緊急停止 ボタンで構築作業を停止させることができます。
    また、実行前の「予約実行」の作業の場合は、 予約取消 ボタンが表示されます。 予約取消 ボタンで予約実行が取り消せます。
  5. 実行ログ表示
    Ansible Automation Controllerで実行した場合、作業対象の Ansible共通 ▶ 機器一覧ユーザパスワードssh秘密鍵ファイルパスフレーズ接続タイプインスタンスグルーブ の項目値でグループ化された作業対象の単位で対話ファイルが実行され、ansibleの実行ログが分割されます。
    さらに、 Ansible共通 ▶ インターフェース情報オプションパラメータ でジョブスライス数を指定することによりグループ化された作業対象をさらにジョブスライス数で分割しplaybookが実行され、ansibleの実行ログも分割されます。
    実行ログが分割された場合、実行ログがTabで分割表示され、表示したい実行ログを選択する事ができます。
    実行ログのTabに表示される名称は以下の2種類があります。
    exec.log: 全ての実行ログをまとめたログファイルです。
    exec.log以外: 分割された実行ログファイルです。ファイル命名規則は以下になります。
    exec_<グループ番号>_<通番>
    表 3.48 分割された実行ログファイルの命名要素

    要素

    内容

    グループ番号

    作業対象の Ansible共通 ▶ 機器一覧ユーザパスワードssh秘密鍵ファイルパスフレーズ接続タイプインスタンスグルーブ の項目値でグルーブ化した 1 からの通番です。

    通番

    ジョブスライス数の設定によりグループ内を分割した 1 からの通番です。
    0 の場合はジョブスライス数で分割されなかったことを表します。
  6. ログ検索
    実行ログ、エラーログは、各ログのログ検索テキストボックスに検索したい文字列を入力することで、入力した文字列の箇所がハイライトで表示されます。
    また、「ログ検索」のチェックボックスをチェックすると、該当する行だけが表示されます。
    実行ログ、エラーログのリフレッシュ表示間隔と最大表示行数を、 Ansible共通 ▶ インターフェース情報状態監視周期(単位ミリ秒)進行状態表示行数 で設定できます。
  7. 投入データ
    実行したPlaybookなどをダウンロードすることができます。
    投入データの構成は「 Ansible実行時に使用される投入データとITAメニューの紐づけ 」を参照してください。
  8. 結果データ
    実行ログ、エラーログなどをダウンロードすることができます。
    結果データの構成は「 Ansible実行時に作成される結果データ 」を参照してください。

作業管理

作業の履歴を閲覧できます。
条件を指定し フィルタ ボタンをクリックすると、該当する作業の履歴を閲覧できます。
詳細 ボタンで Ansible-Pioneer ▶ 作業状態確認 に遷移し、実行状態の詳細を閲覧することができます。
サブメニュー画面(作業管理)

図 3.48 サブメニュー画面(作業管理)

  1. 閲覧画面の項目一覧は以下のとおりです。
    表 3.49 閲覧画面項目一覧(作業管理)

    項目

    説明

    作業No.

    自動採番した36桁の文字列が表示されます。

    実行種別

    実行種別を表示します。

    ステータス

    作業実行のステータスを表示します。

    実行エンジン

    作業実行した実行エンジンを表示します。

    呼出元Conductor

    Conductorから実行した場合にConductor名が表示されます。

    実行ユーザ

    作業実行したユーザ名が表示されます。

    登録日時

    作業実行でボタンをクリックした日時が表示されます。

    Movement

    ID

    作業実行で選択したMovementのIDが表示されます。

    名称

    作業実行で選択したMovementの名称が表示されます。

    遅延タイマー

    作業実行で選択したMovementの遅延タイマーが表示されます。

    Ansible利用情報

    ホスト指定形式

    作業実行で選択したMovementのホスト指定形式が表示されます。

    WinRM接続

    作業実行で選択したMovementのWinRM接続が表示されます。

    ヘッダーセクション

    作業実行で選択したMovementのヘッダーセクションが表示されます。

    ansible.cfg

    作業実行で選択したMovementのansible.cfgがアップロード出来ます。

    Ansible Automation Controller 利用情報

    実行環境

    作業実行で選択したMovementの実行環境が表示されます。

    オペレーション

    No.

    作業実行で選択したオペレーションのIDが表示されます。

    名称

    作業実行で選択したオペレーションの名称が表示されます。

    投入データ

    投入データ一式をzip形式でアップロード出来ます。

    結果データ

    結果データ一式をzip形式でアップロード出来ます。

    作業状況

    予約日時

    作業実行で予約日時を設定した場合に予約日時が表示されます。

    開始日時

    作業実行を開始した日時が表示されます。

    終了日時

    作業実行が終了した日時が表示されます。

    収集状況

    ステータス

    収集機能のステータスを表示します。

    収集ログ

    収集機能のログがダウンロード出来ます。

    Conductorインスタンス番号

    Conductorから実行された場合にConductorインスタンス番号を表示します。

作業対象ホスト

  1. 作業実行毎の作業対象ホストを閲覧できます。
    サブメニュー画面(作業対象ホスト)

    図 3.49 サブメニュー画面(作業対象ホスト)

  2. 閲覧画面の項目一覧は以下のとおりです。
    表 3.50 閲覧画面項目一覧(作業対象ホスト)

    項目

    説明

    項番

    作業実行時に自動採番した36桁の文字列が表示されます。

    作業No

    作業実行時の作業Noが表示されます。

    オペレーション

    作業実行時のオペレーションが表示されます。

    Movement名

    作業実行時のMovementが表示されます。

    ホスト名

    作業実行時の対象ホストが表示されます。

    備考

    自由記述欄です。

代入値管理

  1. 作業実行毎の変数の具体値を閲覧できます。
    サブメニュー画面(代入値管理)

    図 3.50 サブメニュー画面(代入値管理)

  2. 閲覧画面の項目一覧は以下のとおりです。
    表 3.51 閲覧画面項目一覧(代入値管理)

    項目

    説明

    項番

    作業実行時に自動採番した36桁の文字列が表示されます。

    作業No

    作業実行時の作業Noが表示されます。

    オペレーション

    作業実行時のオペレーションが表示されます。

    Movement名

    作業実行時のMovementが表示されます。

    ホスト名

    作業実行時の作業対象ホストが表示されます。

    Movement名:変数名

    作業実行時の変数が表示されます。

    具体値

    文字列

    Sensitive設定

    「True」または「False」が表示されます。

    作業実行時の変数の具体値が表示されます。

    • Sensitive設定 が「True」の場合
      パラメータシートで入力した具体値は暗号化されITA上では表示されません。変数の具体値は、ansible-vaultで暗号化した内容が設定されます。
    • Sensitive設定 が「False」の場合
      パラメータシートで入力した具体値が表示されます。

    ファイル

    作業実行の変数に紐づくファイル名が表示されます。

    代入順序

    複数具体値変数の場合に、代入順序が表示されます。

    備考

    自由記述欄です。

3.6. 対話ファイル(Ansible-Pioneer)の記述方法

Ansible-Pioneerでは、ITA独自モジュールをAnsibleに組込んでいます。
本節で使用している用語について説明します。
表 3.52 用語説明

用語

説明

コマンドプロンプト

ターミナルから作業対象サーバーにsshで接続した場合に、コマンド入力待ちの状態を示す文字列です。

標準出力

作業対象サーバーにコマンド投入後、コマンドプロンプトより前に出力されるコマンドの処理結果です。

コマンドプロンプトと標準出力

図 3.51 コマンドプロンプトと標準出力

3.6.1. 対話ファイルの構成

対話ファイルは2種類のセクションにより構成されます。
表 3.53 対話ファイルのセクション一覧

セクション名

用途

conf

timeoutパラメータによりタイムアウト値を指定します。

タイムアウト値:1~3600(単位:秒)

exe_list

4種類の対話モジュールにより作業対象への構築処理を記述します。

対話ファイルの先頭にconfセッションのtimeoutパラメータを記述します。
  • e.g.)confセッションのtimeoutパラメータの記述例
    # コメント
    conf:
    △△timeout: 10
    exec_list:
    
    △:半角スペース
    
ITA 独自モジュールは、対話ファイル実行時に作業対象とsshまたはtelnet接続を行ってます。
必要に応じて、exec_listセッションの先頭の処理でパスワード認証をが必要です。
  • e.g.)パスワード認証の記述例
    exec_list:
      # ssh接続でパスワード入力のプロンプトを待ち合せてパスワードを投入します。
      - expect: '*assword'
        exec: 'password'
    
以降に対話モジュールの説明を記述します。

3.6.2. 対話モジュール

対話モジュールは以下の4種類があります。
表 3.54 対話モジュール一覧

モジュール

用途

expect

作業対象ホストからのコマンドプロンプトを待受け後、コマンドを投入します。

state

作業対象ホストにコマンドを投入し、コマンドプロンプトを待受け後、投入コマンドの標準出力の内容を外部Shellで解析し結果判定をします。

command

作業対象ホストにコマンドを連続投入が可能で、投入前後に条件分岐を行うことができます。

localaction

Ansible Core/Ansible Automation Controllerが実行される環境でコマンドを投入します。

expectモジュール

概要
作業対象ホストからのコマンドプロンプトを待受け後、コマンドを投入します。
expectモジュールの動作概要は以下の図のとおりです。
expectモジュールの動作概要
①直前の処理で投入したコマンドの標準出力からexpectで指定されているコマンドプロンプトを待ち受ける。
②execで指定されているコマンドを投入する。
③②で投入したコマンドの標準出力からexpectで指定されているコマンドプロンプトを待ち受ける。
④execで指定されているコマンドを投入する。
書式
expectモジュールの書式は以下のとおりです。
表 3.55 expectモジュールの書式

パラメータ

書式

必須/任意

説明

expect

exec_list:
△△-△expect:△パラメータ値

△:半角スペース

必須

コマンドプロンプトを記述します。正規表現で記述できます。

conf->timeoutパラメータで指定された時間内にコマンドプロンプトが受取れない場合は

、対話ファイルを異常終了します。

exec

exec_list:
△△-△expect:△パラメータ値
△△△△exec:△パラメータ値

△:半角スペース

必須

expectで指定したコマンドプロンプトを待受け後に投入するコマンドを記述します。

記述例
expectモジュールの記述例を記述します。
  • e.g.)expectモジュールの記述例
    # ssh接続でパスワード入力のプロンプトを待ち合せてパスワードを投入します。
    - expect: '*assword'
      exec: 'password'
    

stateモジュール

概要
作業対象ホストにコマンドを投入しコマンドプロンプトを待受け後、標準出力の内容を外部Shellで解析し結果判定を行います。
stateモジュールの動作概要は以下の図のとおりです。
stateモジュールの動作概要
①直前の処理で投入したコマンドの標準出力からpromptで指定されているコマンドプロンプトを待ち受ける。
②stateで指定されているコマンドを投入する。
③②で投入したコマンドの標準出力からpromptで指定されているコマンドプロンプトを待ち受ける。
④stdout_fileで指定されているファイルに標準出力の内容を保存する。
⑤parameterで指定しているワードでstdout_fileの内容をgrepする。
⑥直後の処理でコマンドプロンプトの待ち受けが出来るようにリターンを投入する。
書式
stateモジュールの書式は以下のとおりです。
表 3.56 stateモジュールの書式

パラメータ

書式

必須/任意

説明

state

exec_list:
△△-△state:△パラメータ値

△:半角スペース

必須

投入するコマンドを記述します。

prompt

exec_list:
△△-△state:△パラメータ値
△△△△prompt:△パラメータ値

△:半角スペース

必須

コマンドプロンプトを記述します。正規表現で記述できます。

conf->timeoutパラメータで指定された時間内にコマンドプロンプトが受取れない場合は、対話ファイルを異常終了します。

shell

exec_list:
△△-△state:△パラメータ値
△△△△shell:△パラメータ値

△:半角スペース

任意

ユーザが作成したshellで投入したコマンド結果を確認する場合に、 shellファイル名を記述します。

作成したshellのexitコードが0の場合は正常、他は異常と判定します。

デフォルトのshellで結果を確認する場合、本パラメータは不要です。

デフォルトのshellはparameter(-)で指定された文字列で標準出力の内容をgrepします。

マッチする行が1行でもあれば正常とし、マッチする行がなければ異常と判定します。

また、parameterを記述しなかった場合は、異常と判定します。

stateに記載したコマンドの標準出力をstdout_fileで指定したファイルに退避したい目的で使用する場合、ignore_errors: yes を指定してください。

ユーザ作成のshell起動時の引数について以下に説明します。

ユーザ作成shell $1 $2~

   $1: stdout_file

     stdout_fileの記述が無い場合は、ITAが自動生成したファイルファイル名

   $2~: parameterの内容

parameter

exec_list:
△△-△state:△パラメータ値
△△△△parameter:
△△△△△△-△'パラメータ値'
△△△△△△-△'パラメータ値'

△:半角スペース
' :シングルクォーテーション
   条件式をシングルクォーテーション\
   で囲む

任意

stateに記載したコマンドの結果(標準出力)を検索する文字列を指定します。 複数ある場合は検索文字列を列挙します。

shellを指定している場合、ユーザが作成したshellへの起動パラメータになります。

stdout_file

exec_list:
△△-△state:△パラメータ値
△△△△stdout_file:△パラメータ値

△:半角スペース

任意

stateに記載したコマンドの結果(標準出力)を退避するファイルです。

stdout_fileの指定が無かった場合、ITAが自動生成したファイルファイル名で退避します。

success_exit

exec_list:
△△-△state:△パラメータ値
△△△△success_exit:△<yes/no>

△:半角スペース

任意

検索結果が正常の場合で、かつ以降の処理を行わずに対話ファイルを正常終了する場合に「yes」を指定します。

「no」の場合、正常の場合は次の処理に進みます。

デフォルトは「no」

ignore_errors

exec_list:
△△-△state:△パラメータ値
△△△△ignore_errors:△<yes/no>

△:半角スペース

任意

検索結果が異常でも次の処理に進む場合に「yes」を指定します。

「no」の場合は、異常の場合に対話ファイルを異常終了します。

デフォルトは「no」

記述例
stateモジュールの記述例を以下に記述します。
  • e.g.)stateモジュールの記述例
    # hostsファイルをcatします。標準出力の内容をparameter値でgrepします。
    # 127.0.0.1、localhostを含む行があれば正常と判定し次の処理に進みます。
    # 行がなければ異常と判定し対話ファイルを異常終了します。
    exec_list:
      - state: 'cat /etc/hosts'
        prompt: '{{ __loginuser__ }}@{{ __inventory_hostname__ }}'
        parameter:
          - '127.0.0.1'
          - 'localhost'
      - expect: '{{ __loginuser__ }}@{{ __inventory_hostname__ }}'
        exec: exit
    
  • e.g.)success_exitの使用例
    # hostsファイルをcatします。標準出力の内容をparameter値でgrepします。
    # 127.0.0.1、localhostを含む行があれば正常と判定しますが「success_exit: yes」の設定により対話ファイルを正常終了します。
    # 対象行がなければ異常と判定し対話ファイルを異常終了します。
    
    exec_list:
      - state: 'cat /etc/hosts'
        prompt: '{{ __loginuser__ }}@{{ __inventory_hostname__ }}'
        parameter:
          - '127.0.0.1'
          - 'localhost'
        success_exit: yes
      - expect: '{{ __loginuser__ }}@{{ __inventory_hostname__ }}'
        exec: exit
    
  • e.g.)ignore_errorsの使用例
    # hostsファイルをcatします。標準出力の内容をparameter値でgrepします。
    # 127.0.0.1、localhostを含む行があれば正常と判定し次の処理に進みます。
    # 対象行がなければ異常と判定しますが「ignore_errors: yes」の設定により次の処理に進みます。
    
    exec_list:
     - state: 'cat /etc/hosts'
       prompt: '{{ __loginuser__ }}@{{ __inventory_hostname__ }}'
       parameter:
         - '127.0.0.1'
         - 'localhost'
       ignore_errors: yes
     - expect: '{{ __loginuser__ }}@{{ __inventory_hostname__ }}'
       exec: exit
    
  • e.g.)shellの使用例
    # hostsファイルをcatし、ユーザ作成のshellで標準出力の内容を判定します。
    # parameter値をユーザ作成のshellのパラメータで渡します。
    # ユーザ作成のshellが異常終了した場合、対話ファイルを異常終了します。
    
    exec_list:
     - state: 'cat /etc/hosts'
       prompt: '{{ __loginuser__ }}@{{ __inventory_hostname__ }}'
       shell: '/tmp/grep.sh'
       stdout_file: '/tmp/stdout.txt'
       parameter:
         - '127.0.0.1'
         - 'localhost'
     - expect: '{{ __loginuser__ }}@{{ __inventory_hostname__ }}'
       exec: exit
    
  • e.g.) ユーザshell(/tmp/grep.sh)の例
    #!/bin/bash
    STDOUT=/tmp/STDOUT.tmp
    STDERR=/tmp/STDERR.tmp
    cat $1 | grep $2 | grep $3 | wc -l >${STDOUT} 2>${STDERR}
    RET=$?
    if [ $RET -ne 0 ]; then
       EXIT_CODE=$RET
    else
       if [ -s ${STDERR} ]; then
           EXIT_CODE=1
       else
           CNT=`cat ${STDOUT}`
           if [ ${CNT} -eq 0 ]; then
               EXIT_CODE=1
           else
               EXIT_CODE=0
           fi
       fi
    fi
    /bin/rm -rf ${STDOUT} ${STDERR} >/dev/null 2&>1
    
  • e.g.)stateモジュールで作業対象ホストのファイルを、「結果データ」に保存する例
    # hostsファイルをcatします。標準出力の内容をstdout_fileで指定したファイルに保存し次の処理に進みます。
    # デフォルトのshellはparameterの設定がないと異常と判定します。次の処理に進める為に「ignore_errors: yes」を設定します。
    exec_list:
     - state: 'cat /etc/hosts'
       prompt: '{{ __loginuser__ }}@{{ __inventory_hostname__ }}'
       stdout_file: '{{ __workflowdir__ }}/hosts'
       ignore_errors: yes
     - expect: '{{ __loginuser__ }}@{{ __inventory_hostname__ }}'
       exec: exit
    

commandモジュール

概要
作業対象ホストにコマンドの連続投入が可能で、投入前後に条件分岐を行うことができます。
commandモジュールの動作概要は以下の図のとおりです。
commandモジュールの動作概要
①直前の処理で投入したコマンドの標準出力からpromptで指定されているコマンドプロンプトを待ち受ける。
②{{ commands }}の具体値を投入する。
③②で投入したコマンドの標準出力からpromptで指定されているコマンドプロンプトを待ち受ける。
④registerで指定されているregister変数名に標準出力の内容を保存する。
⑤{{ commands }}の具体値を投入する。
⑥⑤で投入したコマンドの標準出力からpromptで指定されているコマンドプロンプトを待ち受ける。
⑦registerで指定されているregister変数名に標準出力の内容を保存する。
⑧直後の処理でコマンドプロンプトの待ち受けが出来るようにリターンを投入する。
書式
commandモジュールの書式は以下のとおりです。
表 3.57 commandモジュールの書式

パラメータ

書式

必須/任意

説明

command

exec_list:
△△-△command:△パラメータ値

△:半角スペース

必須

投入するコマンドを記述します。

prompt

exec_list:
△△-△command:△パラメータ値
△△△△prompt:△パラメータ値

△:半角スペース

必須

コマンドプロンプトを記述します。正規表現で記述できます。

timeout

exec_list:
△△-△command:△パラメータ値
△△△△timeout:△パラメータ値

△:半角スペース

任意

commandに記載したコマンドを投入後、コマンドプロンプトを待ち合わせるタイマ値を記述します。

省略した場合は、conf->timeoutを使用します。

register

exec_list:
△△-△command:△パラメータ値
△△△△register:△パラメータ値

△:半角スペース

任意

commandに記載したコマンドを投入後に標準出力の情報を退避する変数「任意の文字列」を記述します。

with_itemsでループしている場合は、最後のコマンド投入後の標準出力の情報が退避されます。

設定した変数はcommandモジュールの条件判定(when・exec_when・failed_when)でのみ使用できます。

設定した変数は、1つのみ保持できます。次にregisterで別の変数に値を退避した場合、前に退避した変数の情報は削除されます。

with_items

exec_list:
△△-△command:△パラメータ値
△△△△with_items:△
△△△△△△-△'{{△変数名△}}'

△:半角スペース
' :シングルクォーテーション
   変数をシングルクォーテーションで\
   で囲む

任意

with_itemsはコマンドを連続投入する場合に使用します。

with_itemsには複数具体値変数の変数名を記述します。

commandモジュールの各パラメータで、この変数の値を使用する場合、{{ item.X }}(Xは0から99)で記述します。

with_itemsに設定する各変数の具体値数が同じでない場合、各変数の具体値数の最大値数でループします。具体値が不足している変数の具体値は空「null」として扱います。

with_itemsに設定した変数を、promptとtimeoutを利用する場合、具体値数に注意が必要です。

prompt→command→prompt→command→prompt・・・

の順で各変数の値を必要します。promptので使用する変数の具体値はcommandより1個多く必要 です。 timeoutも同様

詳しくは、「記述例」を参照してください。

prompt、timeout の変数の具体値数が不足していると、作業実行時にエラーになります。

when

exec_list:
△△-△command:△パラメータ値
△△△△when:△
△△△△△△-△'条件式'

△:半角スペース
' :シングルクォーテーション
   条件式をシングルクォーテーション\
   で囲む

任意

commandに記載したコマンドの投入前の条件判定です。

条件にマッチしていればcommandに記載したコマンドの投入ます。

条件にマッチしていなければ次の処理に進みます。

条件式

 変数定義判定

 VAR_xx is define   変数が定義されている  true

 VAR_xx is undefine  変数が未定義      true

  • e.g.)変数の定義・未定義の判定の記述例
    - 'VAR_status is define'
    - 'VAR_status is undefine'

変数具体値判定

VAR_xxまたはregister変数 比較演算子 文字列

VAR_xxまたはregister変数 比較演算子 VAR_xx

VAR_xxまたはregister変数 match(正規表現文字列またはVAR_xx)

VAR_xxまたはregister変数 no match(正規表現文字列またはVAR_xx)

※比較演算子は「==」、「!=」、「>」、「>=」、「<」、「<=」

※比較演算子の「>」、「>=」、「<」、「<=」は数値を想定しています。

  • e.g.)変数具体値判定の記述例
    - '{{ VAR_status }} match(active)'
    - '{{ VAR_status }} == active'
  • e.g.)正規表現判定の記述例
    - 'register変数 match(*active)'

 ※ activeなどの条件判定する文字列をクォーテーションで囲む必要はありません。

and/orによる複合条件

or条件を行いたい場合、判定条件の間にORを記述します。

  • e.g.)orによる複合条件判定の記述例
    - '{{ VAR_status }} == 1 OR {{ VAR_status }} == 2'

and条件を行いたい場合、複数行に分けて記述するとand条件になります。

  • e.g.)or/andによる複合条件判定の記述例
    - '{{ VAR_status }} == 1 OR {{ VAR_status }} == 2'
    - '{{ VAR_sub_status }} == 1'

exec_when

exec_list:
△△-△command:△パラメータ値
△△△△exec_when:△
△△△△△△-△'条件式'

△:半角スペース
' :シングルクォーテーション
   条件式をシングルクォーテーション\
   で囲む

任意

ループ毎の条件判定です。(continue条件)

with_itemsが記述されている場合に条件判定を行います。

条件にマッチしていれば該当ループのコマンドを実行します。

マッチしていなければ次のループへ移ります。

条件式

 when:と同様の記述が行えます。

failed_when

exec_list:
△△-△command:△パラメータ値
△△△△failed_when:△
△△△△△△-△'条件式'

△:半角スペース
' :シングルクォーテーション
   条件式をシングルクォーテーション\
   で囲む

任意

commandに記載したコマンドの投入後(ループ毎)のstdoutの内容に対する条件判定です。

with_itemsが記述されている場合に条件判定を行います。

条件にマッチしていれば正常とします。

マッチしていなければ異常とし、対話ファイルが異常終了します。

条件式

 when:と同様の記述が行えます。

commandに記載したコマンドの投入後の標準出力の内容を「stdout」で記述出来ます。  stdout 比較演算子 文字列

記述例
commandモジュールの記述例を以下に記述します。
  • e.g.) commandモジュールの記述例
    commandモジュールで下記コマンドを投入する場合
    systemctl start httpd
    systemctl start mysql
    
    対話ファイルの記述とwith_itemsで使用する変数の具体値は以下の様になります。
    • 対話ファイルの記述内容
    - command: "systemctl  {{ item.0 }}  {{ item.1 }}"
      prompt: '{{ item.2 }}'
      timeout: '{{ item.3 }}'
      with_items:
        - '{{ VAR_status_list }}'    # item.0
        - '{{ VAR_service_list }}'   # item.1
        - '{{ VAR_prompt_list }}'    # item.2
        - '{{ VAR_timeout_list }}'   # item.3
    
    • with_itemsで使用する変数の具体値
    VAR_status_list:
      - start
      - start
    VAR_service_list:
      - httpd
      - mysql
    # commandで使用している変数の具体値が2個あるので
    # promptとtimeoutで使用している変数の具体値は3個必要になります。
    VAR_prompt_list:
      - コマンドプロンプト
      - コマンドプロンプト
      - コマンドプロンプト
    VAR_timeout_list:
      - 10
      - 10
      - 10
    
  • e.g.) whenを使用した例
    conf:
      timeout: 30
    
    exec_list:
      - expect: 'password:'
        exec:   '{{ __loginpassword__ }}'
    
      # VAR_hosts_makeというITA変数がホスト変数ファイルに記載(代入値自動登録でパラメータシートの項目と変数の紐付を行ってる)されている場合、
      # hostsファイルをcatします。記載されていない場合は、スキップします。
      - command: cat /etc/hosts
        prompt: '{{ __loginuser__ }}@{{ __inventory_hostname__ }}'
        when:
          - VAR_hosts_make is define
      - expect: '{{ __loginuser__ }}@{{ __inventory_hostname__ }}'
        exec: exit
    
  • e.g.) exec_whenとregisterを使用した例
    conf:
      timeout: 30
    
    exec_list:
      - expect: 'password:'
        exec:   '{{ __loginpassword__ }}'
    
      # VAR_hosts_makeという変数がホスト変数ファイルに記載されている場合、hostsファイルをcatします。
      # 記載されていない場合は、スキップします。
      # catにより、標準出力されたhostsファイルの内容をresult_stdoutに退避します。
      - command: cat /etc/hosts
        prompt: '{{ __loginuser__ }}@{{ __inventory_hostname__ }}'
        register: result_stdout
        when:
          - VAR_hosts_make is define
    
      # VAR_hosts_makeという変数がホスト変数ファイルに記載されている場合、
      # コマンドを投入します。記載されていない場合は、スキップします。
      # with_itemsの複数具体値変数に設定されている具体値数分、コマンドを投入します。
      # ループ毎の条件判定として、hostsファイルに該当行「ipアドレス ホスト名」
      # がない場合、コマンドを投入し、hostsファイルの最終行に「IPアドレス ホスト名」
      # が追記されます。
      - command: 'echo {{ item.0 }}  {{ item.1 }} >> /etc/hosts'
        prompt: '{{ __loginuser__ }}@{{ __inventory_hostname__ }}'
        when:
          - VAR_hosts_make is define
        with_items:
          - '{{ VAR_hosts_ip }}'     # item.0
          - '{{ VAR_hosts_name }}'   # item.1
        exec_when:
          - result_stdout no match({{ item.0 }} *{{ item.1 }})
    
      - expect: '{{ __loginuser__ }}@{{ __inventory_hostname__ }}'
        exec: exit
    
  • e.g.)failed_whenを使用した例
    conf:
      timeout: 30
    
    exec_list:
      - expect: 'password:'
        exec:   '{{ __loginpassword__ }}'
    
      # with_itemsの複数具体値変数に設定されている具体値数分コマンドを投入します。
      # サービスの自動起動を設定します。
      - command: 'systemctl enable {{ item.0 }}'
        prompt: '{{ __loginuser__ }}@{{ __inventory_hostname__ }}'
        with_items:
          - '{{ VAR_service_name_list }}'  # item.0
    
      # with_itemsの複数具体値変数に設定されている具体値数分コマンドを投入します。
      # サービスを起動します。
      - command: 'systemctl start {{ item.0 }}'
        prompt: '{{ __loginuser__ }}@{{ __inventory_hostname__ }}'
        with_items:
          - '{{ VAR_service_name_list }}'  # item.0
    
      # with_itemsの複数具体値変数に設定されている具体値数分コマンドを投入します。
      # サービスのステータスを退避(stdout)します。
      # 標準出力(stdout)の内容に、item.1がある場合、正となります。
      # 例えば、VAR_service_status_listの具体値をrunningと設定し、サービスが起動している場合、
      # 「Active: active (running)」のrunnigが一致するので正となります。(次のループに移ります)
      # そうでない場合は、異常と判断し、対話ファイルは異常終了します。
      - command: 'systemctl status {{ item.0 }}'
        prompt: '{{ __loginuser__ }}@{{ __inventory_hostname__ }}'
        with_items:
          - '{{ VAR_service_name_list }}'  # item.0
          - '{{ VAR_service_status_list }}'  # item.1
        failed_when:
          - stdout match({{ item.1 }})
    
      - expect: '{{ __loginuser__ }}@{{ __inventory_hostname__ }}'
        exec: exit
    
  • e.g.) whenでor/and条件を使用した例
    conf:
      timeout: 30
    
    exec_list:
      - expect: 'password:'
        exec:   '{{ __loginpassword__ }}'
    
      # and/orによる複合条件の記述例です。
      # or条件を行いたい場合、条件を横に記述することができます。
      # and条件を行いたい場合、複数行に分けて記述するとand条件になります。
      # 今回、whenを例にしていますが、exec_when、failed_whenも同様です。
      - command: systemctl stop my_service
        prompt: '{{ __loginuser__ }}@{{ __inventory_hostname__ }}'
        when:
          - '{{ VAR_status }} == 10 OR {{ VAR_status }} == 11'
          - '{{ VAR_sub_status }} == 20 OR {{ VAR_sub_status }} == 21'
    
      - expect: '{{ __loginuser__ }}@{{ __inventory_hostname__ }}'
        exec: exit
    

localactionモジュール

概要
Ansible Core/Ansible AutomationControllerが実行される環境でコマンドを投入します。
書式
localactionモジュールの書式は以下のとおりです。
表 3.58 localactionモジュールの書式

パラメータ

書式

必須/任意

説明

localaction

exec_list:
△△-△localaction:△パラメータ値

△:半角スペース

必須

投入するコマンドを記載します。
confセクションのtimeoutパラメータでのタイマ監視は適用外です。
コマンドが完了するまで次の処理に進みません。

ignore_errors

exec_list:
△△-△localaction:△パラメータ値
△△△△ignore_errors:△<yes/no>

△:半角スペース

任意

コマンドの実行結果が異常でも次の処理に進む場合に「yes」を指定します。

「no」の場合は、異常の場合に対話ファイルを異常終了します。

デフォルトは「no」

記述例
localactionモジュールの記述例を以下に記述します。
  • e.g.)localactionの記述例
    exec_list:
      - expect: 'password:'
        exec:   '{{ __loginpassword__ }}'
      # Movementで共有するディレクトリ({{ __workflowdir__ }})にホスト毎のディレクトリを作成する。
      - localaction: mkdir -p 0755 {{ __workflowdir__ }}/{{ __inventory_hostname__ }}
        ignore_errors: yes
      # hostsファイルの内容をlocalactionモジュールで作成したディレクトリに退避する。
      - state: cat /etc/hosts
        prompt: '{{ __loginuser__ }}@{{ __inventory_hostname__ }}'
        stdout_file: '{{ __workflowdir__ }}/{{ __inventory_hostname__ }}/hosts'
        ignore_errors: yes
      - expect: '{{ __loginuser__ }}@{{ __inventory_hostname__ }}'
        exec: exit
    

3.6.3. 正規表現

下記のモジュール及びパラメータに記述した文字列は正規表現で評価されます。
- expectモジュールのexpectパラメータ
- stateモジュールのpromptパラメータ
- commandモジュールのpromptパラメータ
- commandモジュールのwhen/exec_when/failed_whenパラメータのmatch()
正規表現で記述した文字列に下記の文字が含まれている場合、エスケープ文字「\」を挿入する必要があります。
表 3.59 エスケープが必要な文字

対象文字

エスケープ後

\

\\

*

\*

.

\.

+

\+

?

\?

|

\|

{ }

\{ \}

( )

\( \)

[ ]

\[ \]

^

\^

$

\$

  • e.g.) 正しい例
    expect: 'XAMPP Developer Files ¥[Y/n¥] exec_list:'
    
  • e.g.) 誤った例
    expect: 'XAMPP Developer Files [Y/n] exec_list:'
    

3.6.4. 注意事項

stateモジュールとcommandモジュールの使用時の注意事項

  1. promptパラメータに正規表で後方一致「.*」を記述した場合
    stateモジュールとcommandモジュールは、コマンドを投入後、promptパラメータで指定されたコマンドプロンプトより前のデータを標準出力として扱います。
    後方一致「.*」を記述すると、実行したコマンドの結果(標準出力)が空となります。
    後方一致の正規表現は使用しないでください。
    • e.g.)正規表現で後方一致の使用例
    - state: echo 'saple data'
      prompt: '\.\*{{ __loginuser__ }}@{{ __inventory_hostname__ }}'
      stdout_file: '{{ __workflowdir__ }}/{{ __inventory_hostname__ }}/hosts'
    
  2. 対話コマンドを処理する場合
    commandとstateモジュールでは処理できません。expectモジュールで対話ファイルを作成してください。
    • e.g.)対話コマンド「ssh-keygen」を処理する例
    # ssh-keygenを対話ファイルで処理する。
    conf:
      timeout: 10
    
    exec_list:
      # ssh接続 パスワード認証
      - expect: 'assword:'
        exec: '{{ __loginpassword__ }}'
    
      # ssh-keygenコマンド実行
      - expect: '{{ __loginuser__ }}@{{ __loginhostname__ }}'
        exec: ssh-keygen
    
      # 以降がコマンドプロンプト以外のプロンプトに対する処理
      # 秘密鍵ファイルのパスを設定
      # expectは正規表現で評価されるので、エスケープが必要な文字にはエスケープ文字(\)を挿入する必要があります。
      - expect: 'id_rsa\):'
        exec: '{{ VAR_id_rsa_path }}'
    
      # パスフレーズを設定
      - expect: ' passphrase\):'
        exec: '{{ VAR_passphrase }}'
    
      # パスフレーズを確認
      - expect: ' passphrase again:'
        exec: '{{ VAR_passphrase }}'
    
      # 生成された 秘密鍵ファイルを確認
      - expect: '{{ __loginuser__ }}@{{ __loginhostname__ }}'
        exec: 'ls -al {{ VAR_id_rsa_path }}'
    
      # ssh接続クローズ
      - expect: '{{ __loginuser__ }}@{{ __loginhostname__ }}'
        exec: exit
    

複数具体値変数使用時の注意事項

対話ファイルで複数具体値変数が使用出来るパラメータは、commandモジュールのwith_itemsパラメータのみです。これ以外で使用した場合、作業実行時にエラーとなります。

対話ファイル終了時の注意事項

対話ファイルの最終行に、セッションを終了するコマンド「exit」を投入するようにしてください。
最終行の処理が終了すると、 コマンドプロンプトを待ち合わせしないで、セッションを切断します。
最終行にファイルコピーなど処理に時間がかかるコマンドが記載されている場合、コマンド終了前にセッションが切断され、コマンドが異常終了してしまう場合があります。
  • e.g.)対話ファイルの最終行に、セッションを終了するコマンド「exit」を投入する例
    conf:
      timeout: 10
    
    exec_list:
      # ssh接続 パスワード認証
      - expect: 'assword:'
        exec: '{{ __loginpassword__ }}'
    
      # ファイルコピー
      - expect: '{{ __loginuser__ }}@{{ __loginhostname__ }}'
        exec: 'cp -rfp {{ VAR_src_path }} {{ VAR_dest_path }}'
    
      # 直前のコマンド終了をコマンドプロンプトで待ち合わせ、exitコマンドを投入する記載を対話ファイルの最後に挿入
      - expect: '{{ __loginuser__ }}@{{ __loginhostname__ }}'
        exec: exit
    

対話ファイルをyaml形式で記載する際の注意事項

対話ファイルはyaml形式のファイルとして扱います。以下のようなYAML形式に準じていない記載があると対話モジュールの登録時にエラーとなります。
  • 各モジュールのパラメータに変数を記載している場合でパラメータ全体をクォーテーションで囲んでいない場合。
  • 各パラメータを定数のみで記載している場合で、定数の終端が「:」の場合など、パラメータ全体をクォーテーションで囲んでいない場合。
各モジュールのパラメータは、パラメータ全体をクォーテーションで囲んでください。
対話ファイルをyaml形式で記載する際の注意事項

図 3.52 対話ファイルをyaml形式で記載する際の注意事項

作業対象のログインユーザのLANGについての注意事項

ログインユーザの「LANG」は、「UTF-8/euc/shift_jis」の3種類をサポートしています。
ログインユーザの「LANG」の設定は Ansible共通 ▶ 機器一覧LANG より行ってください。
「euc/shift_jis」を設定した場合、作業対象との通信制御で使用しているpexpectモジュールのUTF-8へのデコード処理の特性で対話ファイルを正しく処理出来ない場合があります。
一部の全角文字( ①②等)をUTF-8にデコード出来ません。デコード出来ない文字は??で表示されます。
一部の全角文字( - 等)をexpect等のコマンドプロンプト待ちで使用した場合、UTF-8では待ち受けが正しく出来ますが、euc/shift_jisでは待ち受けがタイムアウトしてしまいます。

作業対象へ投入するコマンドの終端コードについての注意事項

作業対象へ投入するコマンドの終端コードは「LF」を送信します。作業対象のコマンド終端コードが「CRLF」の場合、対話ファイルで作業対象に投入するコマンドの末尾に「r」を追加してください。

conf:
  timeout: 10
exec_list:
  - expect: 'password:'
    exec: 'XXXXXXXX\r'
  - command: '{{ VAR_command }}\r'
    prompt: '{{ __loginuser__ }}@{{ __loginhostname__ }}'
  - state: '{{ VAR_state }}\r'
    prompt: '{{ __loginuser__ }}@{{ __loginhostname__ }}'
    parameter:
     - '{{ VAR_parameter1 }}'
     - '{{ VAR_parameter2 }}'

Operating System Commandシーケンス

作業対象に依存しますが、作業対象から送られてくるコマンドプロンプトの直前にOperating System Commandシーケンスが付加されている場合があります。promptパラメータで指定された文字列の直前にあるエスケープシーケンスをITAが排除しています。

3.7. 付録

3.7.1. Ansible実行時に使用される投入データとITAメニューの紐づけ

ITAの各メニューより情報を抜出してAnsible実行に必要な投入データを作ります。この際、 Ansible共通 ▶ 機器一覧パスワードAnsible-Pioneer ▶ 代入値管理Sensitive設定 が「True」に設定されている変数の具体値は、ansible-vaultで暗号化されています。
「投入データ」はZIP形式で Ansible-Pioneer ▶ 作業状態確認投入データ よりダウンロードが可能です。
ダウンロードした投入データを所定のディレクトリに解凍することで、Ansibleを直接実行することも可能です。

各種データとITAメニューの関係性は以下の通りです。

Ansible-Pioneer投入データ

表 3.60 Ansible-Pioneer投入データ

メニューグループ

メニュー

項目

ディレクトリ解凍時のパス

Ansible-Pioneer

対話ファイル素材集

対話ファイル

/child_playbooks

Ansible 共通

テンプレート管理

テンプレート素材

/template_files

Ansible 共通

ファイル管理

ファイル素材

/copy_files

Ansible-Pioneer

代入値管理

具体値(ファイル)

/upload_files

Ansible 共通

グローバル変数管理

変数名/具体値

/host_vars

Ansible-Pioneer

代入値管理

変数名/具体値

/host_vars

Ansible-Pioneer

template 管理

テンプレート埋込変数

/host_vars

Ansible-Pioneer

ファイル管理

ファイル埋込変数

/host_vars

Ansible共通

機器一覧

ログインユーザ ID
ログインパスワード ITA独自 で暗号化
プロトコル
ホスト名
DNSホスト名
IPアドレス

/host_vars

Ansible共通

機器一覧

ssh 認証鍵ファイル

/ssh_key_files

Ansible共通

インターフェース情報

オプションパラメータ

/AnsibleExecOption.txt

Ansible-Pioneer

Movement一覧

並列実行数

/AnsibleExecOption.txt

Ansible共通

機器一覧

ホスト名
DNSホスト名
IP アドレス

/hosts

Ansible共通

機器一覧

接続オプション

/host_vars

Ansible-Pioneer

Movement-対話種別紐付

対話ファイル
インクルード順序

/playbook.yml

3.7.2. Ansible実行時に作成される結果データ

「投入データ」をansibleで実行した結果を「結果データ」としてZIP形式で保存します。
「結果データ」はZIP形式で Ansible-Pioneer ▶ 作業状態確認結果データ よりダウンロードが可能です。

Ansible-Pioneer結果データに保存されるファイル一覧

表 3.61 Ansible-Pioneer結果データに保存されるファイル一覧

ファイル名

記録内容

Ansible Coreの場合

Ansible Automation Controllerの場合

result.txt

Ansibleの実行結果を記録

xxx.pid

Ansible-playbbokコマンドのプロセスIDを記録するファイル
xxx: Ansible-playbbokコマンドのプロセスID

pioneer.xxx

PioneerモジュールのプロセスIDを記録するファイル。
xxx: PioneerモジュールのプロセスID

xxx_private.log

Pioneerモジュールのログを記録するファイル。
xxx: 作業対象ホスト

error.log

作業実行時のエラーメッセージ出力先ファイル
Ansible-playbbokコマンドの標準エラー出力の出力先ファイル
作業実行確認のエラーログに表示される内容

exec.log.org

Ansible-playbbokコマンドの標準出力の出力先ファイル

exec.log

Aexec.log.orgを加工したファイル
作業実行確認の実行ログに表示される内容

exec_<作業番号>_<グループ番号>

分割された実行ログファイル
ファイル名の命名規則は「 作業状態確認 」の実行ログ表示を参照してください。

forced.txt

緊急停止をした場合の記録ファイル

user_files

実行したplaybookでITA独自変数「__workflowdir__」にファイル出力をした場合の出力先ディレクトリ。