ホストグループ

本シナリオでは、簡単な例としてOSの設定を題材に Exastro IT Automation の基本操作を学習します。
詳しくは ホストグループ機能 を参照してください。
ホストグループ
ホストグループとは、ホスト群を論理的な単位(機能・役割)でまとめたグループのことを指します。

パラメータ設計

本シナリオで扱うパラメータシートの設定項目は、「タイムゾーンの設定」と「サーバ用パラメータ」、「ホスト名の設定」の3つです。
ここで検討すべきポイントは、
  • タイムゾーンの設定で作成したタイムゾーン名に対応する「UTC」と「JST」の設定方法です。

データシートの作成

パラメータの登録時に手入力をすると、タイプミスなどにより作業ミスが発生する可能性が高くなります。
パラメータの選択肢を作成することで、このようなパラメータの入力ミスを防止することができます。
まずは、タイムゾーンの設定をするために必要な、Timezone (タイムゾーン名) とタイムゾーンに設定する UTCJST のデータシートを作成します。
具体的には、データシートを作成し、その中にタイムゾーンとして登録するパラメータを投入します。
データシート
Exastro IT Automation が使用する固定値のパラメータを管理するデータ構造のことです。
データシートを作成します。
パラメータシート作成 ▶ パラメータシート定義・作成 から、データシートを登録します。
データシートの作成
表 194 データシートの項目の設定値

設定項目

項目1設定値

項目2設定値

項目3設定値

項目の名前

タイムゾーン

UTC

JST

項目の名前(Rest API用)

Timezone

UTC

JST

入力方式

文字列(単一行)

文字列(単一行)

文字列(単一行)

最大バイト数

64

32

32

正規表現

初期値

必須

一意制約

説明

備考

表 195 データシート作成情報の設定値

項目名

設定値

項番

(自動入力)

パラメータシート名

タイムゾーン一覧

パラメータシート名(REST)

Timezone_list

作成対象

データシート

表示順序

99999

最終更新日時

(自動入力)

最終更新者

(自動入力)

データシート登録

パラメータリスト内に表示するパラメータを設定します。
入力用 ▶ タイムゾーン一覧 から、タイムゾーン名とUTC、JSTを登録します。
データシートの設定値入力
表 196 状態の設定値

パラメータ

備考

タイムゾーン

UTC

JST

Asia/Tokyo

+9

0

America/New_York

-4

-13

パラメータシートの作成

サーバのOS設定をする際に、1つの作業を複数のホストへ実行したい場合があると思います。
今回はホストグループという機能を使い、複数のホストへ一度に作業を実行する方法を紹介します。
パラメータシート作成 ▶ パラメータシート定義・作成 から、「サーバ用パラメータ」と「ホスト名変更用」というパラメータシートを登録します。
まずは「サーバ用パラメータ」というパラメータシートを作成します。項目1の 入力方式プルダウン選択 に設定することで、データシートの作成 で登録したデータシートを参照できるようになります。
サーバ用パラメータパラメータシート作成情報設定
表 197 パラメータ項目設定

設定項目

項目1設定値

項目2設定値

項目の名前

タイムゾーン

Nameserver_ip

項目の名前(Rest API用)

Timezone

VAR_nameserver_ip

入力方式

プルダウン選択

文字列(単一行)

最大バイト数

(項目なし)

64

正規表現

(項目なし)

選択項目

入力用:タイムゾーン一覧:パラメータ/タイムゾーン

(項目なし)

参照項目

UTC、JST

(項目なし)

初期値

必須

一意制約

説明

備考

表 198 パラメータシート作成情報の設定値

項目名

設定値

項番

(自動入力)

パラメータシート名

サーバ用パラメータ

パラメータシート名(REST)

server_parameter

作成対象

パラメータシート(ホスト/オペレーションあり)

表示順序

1

ホストグループ利用

「利用する」にチェックを入れる(有効)

最終更新日時

(自動入力)

最終更新者

(自動入力)

次に「ホスト名変更用」というパラメータシートを作成します。
ホスト名変更用パラメータシート作成情報設定
表 199 パラメータ項目設定

設定項目

項目1設定値

項目の名前

ホスト名

項目の名前(Rest API用)

VAR_hostname

入力方式

文字列(単一行)

最大バイト数

64

正規表現

初期値

必須

一意制約

説明

備考

表 200 パラメータシート作成情報の設定値

項目名

設定値

項番

(自動入力)

パラメータシート名

ホスト名変更用

パラメータシート名(REST)

Hostname_change

作成対象

パラメータシート(ホスト/オペレーションあり)

表示順序

2

ホストグループ利用

「利用する」にチェックを入れない(無効)

最終更新日時

(自動入力)

最終更新者

(自動入力)

作業手順の登録

作業手順を登録するために、作業単位となるジョブ(Movement)を定義します。
定義した Movement に対して、Ansible Playbook を紐付け、更に Ansible Playbook 内の変数とパラメータシートの項目の紐付けを行います。

Movement 登録

Ansible-Legacy ▶ Movement一覧 から、基本設定のための Movement を登録します。
Movement登録
表 201 Movement 情報の設定値

Movement名

Ansible利用情報

ホスト指定形式

ヘッダーセクション

set_timezone

IP

※ヘッダーセクションを参照

add_nameserver

IP

※ヘッダーセクションを参照

set_hostname

IP

※ヘッダーセクションを参照

リスト 456 ヘッダーセクション
- hosts: all
  remote_user: "{{ __loginuser__ }}"
  gather_facts: no
  become: yes

Ansible Playbook 登録

本シナリオでは、 「set_timezone.yml」と「add_nameserver.yml」、「set_hostname.yml」の3つのPlaybookを利用します。
以下をコピーして、それぞれのPlaybookをyml形式で作成してください。
リスト 457 set_timezone.yml
- name: Set Timezone
  timezone:
    name: "{{ VAR_locale_timezone }}"
リスト 458 add_nameserver.yml
- name: Add Nameserver
  lineinfile:
    dest: /etc/resolv.conf
    line: nameserver {{ VAR_nameserver_ip }}
リスト 459 set_hostname.yml
- name: Set a hostname
  ansible.builtin.hostname:
    name: "{{ VAR_hostname }}"
Ansible-Legacy ▶ Playbook素材集 から、から、上記のPlaybookを登録します。
ansible-playbook登録
表 202 Ansible Playbook 情報の登録

Playbook素材名

Playbook素材

set_timezone

set_timezone.yml

add_nameserver

add_nameserver.yml

set_hostname

set_hostname.yml

Movement と Ansible Playbook の紐付け

Ansible-Legacy ▶ Movement-Playbook紐付 から、Movement と Ansible Playbook の紐付けを行います。
MovementとPlaybook紐付け
表 203 Movement-Playbook紐付け情報の登録

Movement名

Playbook素材

インクルード順序

set_timezone

set_timezone

1

add_nameserver

add_nameserver

1

set_hostname

set_hostname

1

代入値自動登録設定

Ansible-Legacy ▶ 代入値自動登録設定 から、作成したパラメータシートと Ansible Playbook 内の変数の紐付けを行います。
代入値自動登録設定
表 204 代入値自動登録設定の設定値

パラメータシート(From)

登録方式

Movement名

IaC変数(To)

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

代入順序

Movement名:変数名

代入順序

代入値自動登録用:サーバ用パラメータ:パラメータ/タイムゾーン

Value型

set_timezone

set_timezone:VAR_locale_timezone

代入値自動登録用:サーバ用パラメータ:パラメータ/Nameserver_ip

Value型

add_nameserver

add_nameserver:VAR_nameserver_ip

代入値自動登録用:ホスト名変更用:パラメータ/ホスト名

Value型

set_hostname

set_hostname:VAR_hostname

ジョブフローの作成

複数の Movement を一連の作業として実行する方法に、Conductor という仕組みがあります。
Conductor を利用することで、複数の Movement をまとめて実行できるだけでなく、Movement の実行結果に応じて、後続処理を分岐させたり、ユーザ確認の為に一時停止するといった複雑なロジックを組み込む事が可能です。
Conductor ▶ Conductor編集/作業実行 から「サーバ基本設定」というジョブフローを定義します。
ジョブフローの作成
1. 右上のペイン Conductor情報 ▶ 名称 に、 サーバ基本設定 と入力します。
2. 右下のペインに、作成した set_timezoneadd_nameserverset_hostname の3つの Movement があります。これらを画面中央にドラッグアンドドロップします。
3. 各 Node 間を下記の様に接続します。
表 205 Node 間の接続

OUT

IN

Start

set_timezone

set_timezone

add_nameserver

add_nameserver

set_hostname

set_hostname

End

4. 画面上部にある、  登録 を押下します。

作業対象の登録

作業実施を行う対象機器の登録を行います。

機器登録

本シナリオでは計4台のサーバを登録します。下記登録を計4台分実施してください。
Ansible共通 ▶ 機器一覧 から、作業対象であるサーバーの接続情報を登録します。
機器一覧登録
表 206 機器一覧の設定値

HW機器種別

ホスト名

IPアドレス

ログインパスワード

ssh鍵認証情報

Ansible利用情報

ユーザ

ssh秘密鍵ファイル

Legacy/Role利用情報

認証方式

SV

dbA

192.168.0.1 ※適切なIPアドレスを設定

接続ユーザ名

(秘密鍵ファイル)

鍵認証(パスフレーズなし)

SV

dbB

192.168.0.1 ※適切なIPアドレスを設定

接続ユーザ名

(秘密鍵ファイル)

鍵認証(パスフレーズなし)

SV

webA

192.168.0.1 ※適切なIPアドレスを設定

接続ユーザ名

(秘密鍵ファイル)

鍵認証(パスフレーズなし)

SV

webB

192.168.0.1 ※適切なIPアドレスを設定

接続ユーザ名

(秘密鍵ファイル)

鍵認証(パスフレーズなし)

Tip

今回のシナリオでは鍵認証で実行しますが、パスワード認証での実行も可能です。
認証方式は、作業対象サーバーへのログインの方法に応じて適宜変更してください。

オペレーション登録

作業概要の作成

具体的なパラメータの設定や作業手順を考える前に、作業計画を立てるところから初めます。
まずは、いつ、どこの機器に対して、何を、どうするかといった情報を簡単に整理しておきましょう。
表 207 作業の方針

作業実施日時

2024/04/01 12:00:00

作業対象

作業対象サーバー(RHEL8)

作業内容

基本設定_全台用

作業概要登録

オペレーション登録では、作業を実施する際の作業概要を定義します。オペレーションは各作業ごとに1つ作成します。オペレーションは使いまわさないようにしましょう。
先に決めた作業の方針を元にオペレーション情報を記入しましょう。
オペレーション
実施する作業のことで、オペレーションに対して作業対象とパラメータが紐づきます。
基本コンソール ▶ オペレーション一覧 から、作業実施日時や作業名を登録します。
オペレーション登録
表 208 オペレーション登録内容

オペレーション名

実施予定日時

基本設定_全台用

2024/04/01 12:00:00

Tip

作業実施日時は、本シナリオでは適当な日時で問題ありませんが、作業日が定まっている場合は、正確な作業実施の予定日時を設定することを推奨します。
定期作業などの繰り返し行われる作業のように、作業日が定まっていない場合は現在の日時を登録しても問題ありません。

ホストグループ設定

ホストグループ定義

まずは、作業対象の登録 で登録したホストを登録する為にホストグループを定義します。
ホストグループ管理 ▶ ホストグループ一覧 からホストが所属するホストグループを作成します。
ホストグループ登録
表 209 ホストグループ登録内容

ホストグループ名

優先順位

All_SV

1

db_SV

2

web_SV

3

ホストグループの親子関係定義

次に、今作成したホストグループ間の親子関係を定義します。
ホストグループ管理 ▶ ホストグループ親子紐付 からホストグループ間の親子関係を紐付けます。
ホストグループ親子関係
表 210 ホストグループ親子関係紐付け

親ホストグループ

子ホストグループ

All_SV

db_SV

All_SV

web_SV

ホストグループへの登録

次に作成したホストグループに対して、作業対象ホストを紐付けます。
ホストグループ管理 ▶ ホスト紐付管理 から作成したホストグループに対して、作業対象ホストを紐付けます。
作業対象ホスト登録
表 211 作業対象ホスト登録

ホストグループ名

オペレーション

ホスト名

db_SV

基本設定_全台用

dbA

db_SV

基本設定_全台用

dbB

web_SV

基本設定_全台用

webA

作業実行1回目

パラメータ設定

作業を実行するために作成したパラメータシートにパラメータを登録していきます。
入力用 ▶ サーバ用パラメータ からパラメータを登録します。
サーバ用パラメータパラメータ入力
表 212 サーバ用パラメータパラメータの設定値

ホスト名

オペレーション

パラメータ

オペレーション名

タイムゾーン

Nameserver_ip

[HG]All_SV

2024/04/01 12:00:00_基本設定_全台用

Asia/Tokyo

10.15.1.30

[HG]db_SV

2024/04/01 12:00:00_基本設定_全台用

Asia/Tokyo

10.15.1.30

[HG]web_SV

2024/04/01 12:00:00_基本設定_全台用

Asia/Tokyo

10.15.1.62

次に、入力用 ▶ ホスト名変更用 からパラメータを登録します。
ホスト名変更用パラメータ入力
表 213 ホスト名変更用パラメータの設定値

ホスト名

オペレーション

パラメータ

オペレーション名

ホスト名

dbA

2024/04/01 12:00:00_基本設定_全台用

dbA

dbB

2024/04/01 12:00:00_基本設定_全台用

dbB

webA

2024/04/01 12:00:00_基本設定_全台用

webA

作業実行

  1. 代入値自動登録用確認

    代入値自動登録用 ▶ サーバ用パラメータ から登録した値が「ホストグループ分解機能」によって正しい値が指定されていることを確認します。
作業実行1回目事前確認
表 214 サーバ用パラメータの代入値自動登録用確認

ホスト名

オペレーション

パラメータ

最終更新者

オペレーション名

タイムゾーン

Nameserver_ip

dbA

2024/04/01 12:00:00_基本設定_全台用

Asia/Tokyo

10.15.1.30

ホストグループ分解機能

dbB

2024/04/01 12:00:00_基本設定_全台用

Asia/Tokyo

10.15.1.30

ホストグループ分解機能

webA

2024/04/01 12:00:00_基本設定_全台用

Asia/Tokyo

10.15.1.62

ホストグループ分解機能

  1. 事前確認

    現在の各サーバーの状態を確認しましょう。
    作業対象サーバに SSH ログインし、現在のホスト名を確認します。
    リスト 460 コマンド
    # ホスト名の取得
    hostnamectl status --static
    
    リスト 461 実行結果
    # 結果は環境ごとに異なります
    localhost
    
    resolv.confファイルを確認します。
    リスト 462 コマンド
    # resolv.confファイルの確認
    cat /etc/resolv.conf
    
    リスト 463 実行結果
    # 登録する情報が無いことを確認
    
  2. 作業実行

    Conductor ▶ Conductor編集/作業実行 から、 選択 を押下します。
    サーバ基本設定 Conductor を選択し、選択決定 を押下します。
    次に、画面上部の  作業実行 で、オペレーションに 基本設定_全台用 を選択し、作業実行 を押下します。
    Conductor作業確認 画面が開き、実行が完了した後に、全ての Movement のステータスが「Done」になったことを確認します。
Conductor作業実行1回目
  1. 事後確認

    再度サーバに SSH ログインして下記を確認します。
    ホスト名を確認します。
    リスト 464 コマンド
    # ホスト名の取得
    hostnamectl status --static
    
    リスト 465 実行結果
    # 作業対象サーバによって異なります。
    dbA
    dbB
    webA
    
    resolv.confファイルを確認します。パラメータで入力したデータが登録されていることを確認します。
    リスト 466 コマンド
    # resolv.confファイルの確認
    cat /etc/resolv.conf
    
    リスト 467 実行結果
    # 作業対象サーバによって異なります。
    nameserver 10.15.1.30
    nameserver 10.15.1.30
    nameserver 10.15.1.62
    

追加オペレーション登録

作業概要の作成

具体的なパラメータの設定や作業手順を考える前に、作業計画を立てるところから初めます。
まずは、いつ、どこの機器に対して、何を、どうするかといった情報を簡単に整理しておきましょう。
表 215 作業の方針

作業実施日時

2024/04/02 12:00:00

作業対象

作業対象サーバー(RHEL8)

作業内容

基本設定_追加用

作業概要登録

オペレーション登録では、作業を実施する際の作業概要を定義します。オペレーションは各作業ごとに1つ作成します。オペレーションは使いまわさないようにしましょう。
先に決めた作業の方針を元にオペレーション情報を記入しましょう。
オペレーション
実施する作業のことで、オペレーションに対して作業対象とパラメータが紐づきます。
基本コンソール ▶ オペレーション一覧 から、作業実施日時や作業名を登録します。
追加オペレーション登録
表 216 追加オペレーション登録内容

オペレーション名

実施予定日時

基本設定_追加用

2024/04/02 12:00:00

Tip

作業実施日時は、本シナリオでは適当な日時で問題ありませんが、作業日が定まっている場合は、正確な作業実施の予定日時を設定することを推奨します。
定期作業などの繰り返し行われる作業のように、作業日が定まっていない場合は現在の日時を登録しても問題ありません。

追加ホストグループ設定

ホストグループ定義

今回は、ホストグループ設定 で登録したデータを使用するので、定義は不要です。

ホストグループの親子関係定義

今回は、ホストグループ設定 で登録したデータを使用するので、定義は不要です。

ホストグループへの登録

次に、ホストグループ設定 で作成したホストグループに対して、作業対象ホストを紐付けます。
ホストグループ管理 ▶ ホスト紐付管理 から既存のホストグループに対して、追加で作業対象ホストを紐付けます。
作業対象ホストとホストグループを紐付ける際、追加で作成したオペレーションを選択することで、そのオペレーションを選択して作業実行をすると、同じホストグループでもオペレーションに紐付いているホストへのみ作業を実行することが出来ます。
作業対象ホスト追加登録
表 217 作業対象ホスト追加登録

ホストグループ名

オペレーション

ホスト名

web_SV

基本設定_追加用

webB

作業実行2回目

パラメータ設定

追加したホストに作業を実行するために、作成したパラメータシートにパラメータを登録していきます。
入力用 ▶ サーバ用パラメータ からパラメータを登録します。
追加用サーバ用パラメータパラメータ入力
表 218 追加用サーバ用パラメータパラメータの設定値

ホスト名

オペレーション

パラメータ

オペレーション名

Timezone

Nameserver_ip

[HG]web_SV

2024/04/02 12:00:00_基本設定_追加用

Asia/Tokyo

10.15.1.62

次に 入力用 ▶ ホスト名変更用 からパラメータを登録します。
ホスト名変更用パラメータ入力
表 219 ホスト名変更用パラメータの設定値

ホスト名

オペレーション

パラメータ

オペレーション名

ホスト名

webB

2024/04/02 12:00:00_基本設定_追加用

webB

作業実行

  1. 代入値自動登録用確認

    代入値自動登録用 ▶ 作成したパラメータシート から追加登録した値が「ホストグループ分解機能」によって正しい値が指定されていることを確認します。
作業実行2回目事前確認
表 220 追加用サーバ用パラメータの代入値自動登録用確認

ホスト名

オペレーション

パラメータ

最終更新者

オペレーション名

タイムゾーン

Nameserver_ip

webB

2024/04/02 12:00:00_基本設定_追加用

Asia/Tokyo

10.15.1.62

ホストグループ分解機能

  1. 事前確認

    現在の各サーバーの状態を確認しましょう。
    作業対象サーバに SSH ログインし、現在のホスト名を確認します。
    リスト 468 コマンド
    # ホスト名の取得
    hostnamectl status --static
    
    リスト 469 実行結果
    # 結果は環境ごとに異なります
    localhost
    
    resolv.confファイルを確認します。
    リスト 470 コマンド
    # resolv.confファイルの確認
    cat /etc/resolv.conf
    
    リスト 471 実行結果
    # 登録する情報が無いことを確認
    
  2. 作業実行

    Conductor ▶ Conductor編集/作業実行 から、 選択 を押下します。
    サーバ基本設定 Conductor を選択し、選択決定 を押下します。
    次に、画面上部の  作業実行 で、オペレーションに 基本設定_追加用 を選択し、作業実行 を押下します。
    Conductor作業確認 画面が開き、実行が完了した後に、全ての Movement のステータスが「Done」になったことを確認します。
    Conductor作業実行2回目
  3. 事後確認

    再度サーバに SSH ログインし、下記を確認します。
    ホスト名を確認します。
    リスト 472 コマンド
    # ホスト名の取得
    hostnamectl status --static
    
    リスト 473 実行結果
    # 作業対象サーバによって異なります。
    webB
    
    resolv.confファイルを確認します。パラメータで入力したデータが登録されていることを確認します。
    リスト 474 コマンド
    # resolv.confファイルの確認
    cat /etc/resolv.conf
    
    リスト 475 実行結果
    # データが登録されていることを確認します。
    nameserver 10.15.1.62
    

まとめ

本シナリオでは、ホストグループという機能を使い複数のホストへ同時に作業を実行してみました。
ホストグループの機能を使うことで、同時に作業を実行しても、ホストグループごとに違うパラメータの値を入力することが出来ます。
このように同じホストグループに属していても、連携するオペレーションを変更することで作業対象のホストを絞って作業を実行することが出来ます。
詳しくは ホストグループ機能 を参照してください。