2. パッケージ管理

本シナリオでは、パッケージのインストールやアンインストールといったパッケージ管理を通して、より実用的なパラメータシートの管理・運用のテクニックについて学習します。

Tip

本シナリオに入る前に、 前のシナリオ を完了させておくことを推奨します。

2.1. パラメータ設計

本シナリオで扱うパラメータシートの設定項目は、「パッケージ名」と「あるべきインストール状態」の2つの設定項目です。
ここで検討すべきポイントは、
  • 「あるべきインストール状態」である「インストールされている状態」か「インストールされていない状態」のいずれかの状態を管理する方法

  • 不定数のパッケージを管理する方法

の2点です。
このポイントを中心に、パラメータシートの設計方法を見ていきましょう。

2.1.1. 選択肢の作成

パラメータの登録時に手入力をすると、タイプミスなどにより作業ミスが発生する可能性が高くなります。
パラメータの選択肢を作成することで、このようなパラメータの入力ミスを防止することができます。
まずは、「あるべきインストール状態」である present (インストールされている状態) と absent (インストールされていない状態) の選択肢を作成します。
具体的には、データシートを作成し、その中に選択肢として表示するパラメータを投入します。
データシート
Exastro IT Automation が使用する固定値のパラメータを管理するデータ構造のことです。

データシートの作成

データシートを作成します。
パラメータシート作成 ▶ パラメータシート定義・作成 から、データシートを登録します。
データシートの作成
表 2.9 データシートの項目の設定値

設定項目

項目1設定値

項目の名前

present-absent

項目の名前(Rest API用)

present-absent

入力方式

文字列(単一行)

最大バイト数

16

正規表現

初期値

必須

一意制約

説明

備考

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

項目名

設定値

項番

(自動入力)

メニュー名

状態

メニュー名(REST)

state

作成対象

データシート

表示順序

99999

最終更新日時

(自動入力)

最終更新者

(自動入力)

選択肢を登録

パラメータリスト内に表示するパラメータを設定します。
入力用 ▶ 状態 から、パッケージのあるべきインストール状態を登録します。
選択肢を登録
表 2.11 状態の設定値

パラメータ

備考

present-absent

present

インストール

absent

アンインストール

2.1.2. パラメータシートの作成

サーバやネットワーク機器のパラメータを管理する際に、1つの設定項目に対して複数のパラメータが存在することがあります。
例えば、IP アドレスやユーザなどのように、一つの機器上に複数の値を管理する必要がある場合があります。
こういったパラメータをテーブル形式で管理する場合、IPアドレスやユーザが増えるごとにテーブル内の項目を増やす必要があるため、パラメータシートのフォーマット修正が都度必要となり、管理が煩雑になってしまいます。
そこで、本シナリオではバンドルというパラメータシートを使い、複数のパラメータを管理する方法を紹介します。
パラメータシート作成 ▶ パラメータシート定義・作成 から、パラメータシートを登録します。
項目1の 入力方式プルダウン選択 に設定することで、データシートの作成 で登録したデータシートを参照できるようになります。
パラメータ項目設定
表 2.12 パラメータ項目設定

設定項目

項目1設定値

項目2設定値

項目の名前

パッケージ名

状態

項目の名前(Rest API用)

package_name

state

入力方式

文字列(単一行)

プルダウン選択

最大バイト数

64

(項目なし)

正規表現

(項目なし)

選択項目

(項目なし)

入力用:状態:present-absent

参照項目

(項目なし)

初期値

必須

一意制約

説明

備考

パラメータシート作成情報で バンドル利用 を「利用する」にチェックを入れることで、1つの設定項目に対して複数のパラメータを設定することが可能になります。
パラメータシート作成情報設定
表 2.13 パラメータシート作成情報の設定値

項目名

設定値

項番

(自動入力)

メニュー名

導入パッケージ

メニュー名(REST)

packages

作成対象

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

表示順序

2

バンドル利用

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

最終更新日時

(自動入力)

最終更新者

(自動入力)

2.2. 作業手順の登録

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

2.2.1. Movement 登録

Ansible-LegacyRole ▶ Movement一覧 から、ホスト名設定のための Movement を登録します。
Movement登録
表 2.14 Movement 情報の設定値

Movement名

Ansible利用情報

ホスト指定形式

ヘッダーセクション

パッケージ管理

IP

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

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

2.2.2. Ansible Role 登録

利用するロールパッケージは 前のシナリオ で登録した Exastro Playbook Collection を利用するため、作業は不要です。

2.2.3. Movement と Ansible Role の紐付け

Ansible-LegacyRole ▶ Movement-ロール紐付 から、Movement と Ansible Role パッケージの紐付けを行います。
本シナリオでは、 RPM管理用の Ansible Role パッケージ を利用します。
MovementとRole紐づけ
表 2.15 Movement-ロール紐付け情報の登録

Movement名

ロールパッケージ名:ロール名

インクルード順序

パッケージ管理

OS-RHEL8:OS-RHEL8/RH_rpm/OS_build

1

2.2.4. 変数ネスト管理

ホスト名の場合、1台のサーバーに命名できるホスト名は1つだけなので、 VAR_RH_hostname は単純な変数として扱うように定義されています。
リスト 2.29 VAR_RH_hostname の変数構造
# VAR_RH_hostname に対する、値は1つのみ
VAR_RH_hostname: myhostname
一方で、パッケージの場合は、1台のサーバー上に複数のパッケージを管理することは一般的なため、VAR_RH_rpm は複数の変数のセットを配列で管理する多段変数として扱うように定義されています。
リスト 2.30 VAR_RH_rpm の変数構造(=多段変数)
# VAR_RH_rpm に対して、変数のセット(action と pkg_name)が繰り返し、かつ、セット数が不定
VAR_RH_rpm:
- action: absent
  pkg_name: httpd
- action: present
  pkg_name: vsftpd
  ...
VAR_RH_rpm のような多段変数の場合、その上限数を予め決めておく必要があります。
本シナリオでは、管理するパッケージ数を 10 として、設定しておくこととします。
Ansible-LegacyRole ▶ 変数ネスト管理 から、管理するパッケージ数の上限値の設定を行います。
変数ネスト管理
表 2.16 変数ネスト情報の登録

Movement名

変数名

メンバー変数名(繰返し有)

最大繰返数

パッケージ管理

VAR_RH_rpm

0

10

2.2.5. 代入値自動登録設定

OS-RHEL8 Ansible Role パッケージでは、VAR_RH_rpm という変数に管理するパッケージ名と状態を代入することで、対象サーバーのホスト名を設定することができます。
Ansible-LegacyRole ▶ 代入値自動登録設定 から、導入パッケージパラメータシートのパッケージ名と状態の項目に入るパラメータを Ansible Role パッケージの VAR_RH_rpm 内の変数の紐付けを行います。
代入値自動登録設定
表 2.17 代入値自動登録設定の設定値

パラメータシート(From)

登録方式

Movement名

IaC変数(To)

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

代入順序

Movement名:変数名

Movement名:変数名:メンバー変数

代入値自動登録用:導入パッケージ:パッケージ名

1

Value型

パッケージ管理

パッケージ管理:VAR_RH_rpm

パッケージ管理:VAR_RH_rpm:[0].pkg_name

代入値自動登録用:導入パッケージ:状態

1

Value型

パッケージ管理

パッケージ管理:VAR_RH_rpm

パッケージ管理:VAR_RH_rpm:[0].action

代入値自動登録用:導入パッケージ:パッケージ名

2

Value型

パッケージ管理

パッケージ管理:VAR_RH_rpm

パッケージ管理:VAR_RH_rpm:[1].pkg_name

代入値自動登録用:導入パッケージ:状態

2

Value型

パッケージ管理

パッケージ管理:VAR_RH_rpm

パッケージ管理:VAR_RH_rpm:[1].action

代入値自動登録用:導入パッケージ:パッケージ名

3

Value型

パッケージ管理

パッケージ管理:VAR_RH_rpm

パッケージ管理:VAR_RH_rpm:[2].pkg_name

代入値自動登録用:導入パッケージ:状態

3

Value型

パッケージ管理

パッケージ管理:VAR_RH_rpm

パッケージ管理:VAR_RH_rpm:[2].action

代入値自動登録用:導入パッケージ:パッケージ名

4

Value型

パッケージ管理

パッケージ管理:VAR_RH_rpm

パッケージ管理:VAR_RH_rpm:[3].pkg_name

代入値自動登録用:導入パッケージ:状態

4

Value型

パッケージ管理

パッケージ管理:VAR_RH_rpm

パッケージ管理:VAR_RH_rpm:[3].action

代入値自動登録用:導入パッケージ:パッケージ名

5

Value型

パッケージ管理

パッケージ管理:VAR_RH_rpm

パッケージ管理:VAR_RH_rpm:[4].pkg_name

代入値自動登録用:導入パッケージ:状態

5

Value型

パッケージ管理

パッケージ管理:VAR_RH_rpm

パッケージ管理:VAR_RH_rpm:[4].action

代入値自動登録用:導入パッケージ:パッケージ名

6

Value型

パッケージ管理

パッケージ管理:VAR_RH_rpm

パッケージ管理:VAR_RH_rpm:[5].pkg_name

代入値自動登録用:導入パッケージ:状態

6

Value型

パッケージ管理

パッケージ管理:VAR_RH_rpm

パッケージ管理:VAR_RH_rpm:[5].action

代入値自動登録用:導入パッケージ:パッケージ名

7

Value型

パッケージ管理

パッケージ管理:VAR_RH_rpm

パッケージ管理:VAR_RH_rpm:[6].pkg_name

代入値自動登録用:導入パッケージ:状態

7

Value型

パッケージ管理

パッケージ管理:VAR_RH_rpm

パッケージ管理:VAR_RH_rpm:[6].action

代入値自動登録用:導入パッケージ:パッケージ名

8

Value型

パッケージ管理

パッケージ管理:VAR_RH_rpm

パッケージ管理:VAR_RH_rpm:[7].pkg_name

代入値自動登録用:導入パッケージ:状態

8

Value型

パッケージ管理

パッケージ管理:VAR_RH_rpm

パッケージ管理:VAR_RH_rpm:[7].action

代入値自動登録用:導入パッケージ:パッケージ名

9

Value型

パッケージ管理

パッケージ管理:VAR_RH_rpm

パッケージ管理:VAR_RH_rpm:[8].pkg_name

代入値自動登録用:導入パッケージ:状態

9

Value型

パッケージ管理

パッケージ管理:VAR_RH_rpm

パッケージ管理:VAR_RH_rpm:[8].action

代入値自動登録用:導入パッケージ:パッケージ名

10

Value型

パッケージ管理

パッケージ管理:VAR_RH_rpm

パッケージ管理:VAR_RH_rpm:[9].pkg_name

代入値自動登録用:導入パッケージ:状態

10

Value型

パッケージ管理

パッケージ管理:VAR_RH_rpm

パッケージ管理:VAR_RH_rpm:[9].action

これだけの項目の設定に設定値を入力するのは、 Web 画面の操作ではかなり苦労することでしょう。
このような大量のデータを一度に登録するような場合は、全件ダウンロード・ファイル一括登録を使って、ファイルからデータを投入する方法が適切です。
Ansible-Legacy ▶ 代入値自動登録設定 ▶ 全件ダウンロード・ファイル一括登録 から、新規登録用ファイルをダウンロードします。ダウンロードしたファイルを編集し、ファイル一括登録にてファイルを登録すると代入値自動登録設定が簡単に行うことが出来ます。
代入値自動登録設定(一括登録)

2.3. 作業対象の登録

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

2.3.1. 機器登録

作業対象となるサーバーは 前のシナリオ で登録した db01 を利用するため、作業は不要です。

2.4. パッケージのインストール実施(1回目)

2.4.1. 作業概要の作成

前のシナリオ と同様に、まずは作業計画を立てましょう。
表 2.18 作業の方針

作業実施日時

2023/04/02 12:00:00

作業対象

db01(RHEL8)

作業内容

パッケージのインストール・アンインストール

2.4.2. 作業概要登録

基本コンソール ▶ オペレーション一覧 から、作業実施日時や作業名を登録します。
オペレーション登録
表 2.19 オペレーション登録内容

オペレーション名

実施予定日時

RHEL8のパッケージ管理

2023/04/02 12:00:00

2.4.3. パラメータ設定

パラメータシートには、設定したい値を機器ごとに登録します。
本シナリオでは、db01 というホストに対して、 postgresql-server というパッケージをインストールし DB サーバーを構築します。
入力用 ▶ 導入パッケージ から、ホストに対するパラメータを登録します。
パラメータ設定
表 2.20 導入パッケージパラメータの設定値

ホスト名

オペレーション

代入順序

パラメータ

オペレーション名

パッケージ名

状態

db01

2023/04/02 12:00:00_RHEL8のパッケージ管理

1

postgresql-server

present

2.4.4. 作業実行

  1. 事前確認

    まずは、現在のサーバーの状態を確認しましょう。
    サーバに SSH ログインし、 postgresql-server のインストール状況を確認します。
    リスト 2.31 コマンド
    rpm -q postgresql-server
    
    リスト 2.32 実行結果
    package postgresql-server is not installed
    
  2. 作業実行

    Ansible-LegacyRole ▶ 作業実行 から、パッケージ管理 Movement を選択し、 作業実行 を押下します。
    次に、作業実行設定 で、オペレーションに RHEL8のパッケージ管理 を選択し、作業実行 を押下します。
    作業状態確認 画面が開き、実行が完了した後に、ステータスが「完了」になったことを確認します。
    作業実行
  3. 事後確認

    再度サーバに SSH ログインし、postgresql-server のインストール状況を確認し postgresql-server がインストールされていることを確認します。
    リスト 2.33 コマンド
    rpm -q postgresql-server
    
    リスト 2.34 実行結果
    # 環境ごとにバージョンは異なります
    postgresql-server-10.23-1.module+el8.7.0+17280+3a452e1f.x86_64
    

2.5. パッケージのインストール実施(2回目)

2.5.1. 作業概要の作成

前のシナリオ と同様に、まずは作業計画を立てましょう。
表 2.21 作業の方針

作業実施日時

2024/05/02 12:00:00

作業対象

db01(RHEL8)

作業内容

DBパッケージへ変更

2.5.2. 作業概要登録

基本コンソール ▶ オペレーション一覧 から、作業実施日時や作業名を登録します。
オペレーション登録
表 2.22 オペレーション登録内容

オペレーション名

実施予定日時

RHEL8をDBパッケージへ変更

2024/05/02 12:00:00

2.5.3. パラメータ設定

本シナリオでは、db01 というホストに対して、 postgresql-server というパッケージをインストールし DB サーバーを構築しました。
しかし、その後、postgresql-server ではなく mariadb-server に変更する必要が出てきました。
入力用 ▶ 導入パッケージ から、新たなパラメータを登録します。
パラメータ設定2
表 2.23 導入パッケージパラメータの設定値

ホスト名

オペレーション

代入順序

パラメータ

オペレーション名

パッケージ名

状態

db01

2024/05/02 12:00:00_RHEL8をDBパッケージへ変更

1

postgresql-server

absent

db01

2024/05/02 12:00:00_RHEL8をDBパッケージへ変更

2

mariadb-server

present

2.5.4. 作業実行

  1. 事前確認

    現在のサーバーの状態を確認しましょう。
    サーバに SSH ログインし、パッケージのインストール状態を確認します。
    リスト 2.35 コマンド
    rpm -q postgresql-server
    
    リスト 2.36 実行結果
    # 環境ごとにバージョンは異なります
    postgresql-server-10.23-1.module+el8.7.0+17280+3a452e1f.x86_64
    
    リスト 2.37 コマンド
    rpm -q mariadb-server
    
    リスト 2.38 実行結果
    package mariadb-server is not installed
    
  2. 作業実行

    Ansible-LegacyRole ▶ 作業実行 から、パッケージ管理 Movement を選択し、 作業実行 を押下します。
    次に、作業実行設定 で、オペレーションに RHEL8をDBパッケージへ変更 を選択し、作業実行 を押下します。
    作業状態確認 画面が開き、実行が完了した後に、ステータスが「完了」になったことを確認します。
    作業実行2
  3. 事後確認

    再度サーバに SSH ログインし、postgresql-server がアンインストールされ、mariadb-server がインストールされていることを確認します。
    リスト 2.39 コマンド
    rpm -q postgresql-server
    
    リスト 2.40 実行結果
    package postgresql-server is not installed
    
    リスト 2.41 コマンド
    rpm -q mariadb-server
    
    リスト 2.42 実行結果
    mariadb-server-10.3.35-1.module+el8.6.0+15949+4ba4ec26.x86_64
    

2.6. まとめ

本シナリオでは、RHEL8 サーバ上のパッケージを管理するシナリオを通して、Exastro IT Automation のパラメータシートの運用方法について紹介をしました。
  • 入力値が確定している場合は、データシートを利用して入力ミスを防ぐことが可能です。

  • 複数かつ数が不定のパラメータを管理する場合は、「バンドル」を利用することで柔軟なパラメータ管理が行うことが可能です。

  • 大量のパラメータを設定する場合は、「全件ダウンロード・ファイル一括登録」を利用することでファイルからのデータ登録を行うことが可能です。

次のシナリオ では、一連の作業を実行する方法について紹介をします。