パッケージ管理

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

Tip

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

パラメータ設計

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

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

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

選択肢の作成

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

データシートの作成

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

設定項目

項目1設定値

項目の名前

present-absent

項目の名前(Rest API用)

present-absent

入力方式

文字列(単一行)

最大バイト数

16

正規表現

初期値

必須

一意制約

説明

備考

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

項目名

設定値

項番

(自動入力)

パラメータシート名

状態

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

state

作成対象

データシート

表示順序

99999

最終更新日時

(自動入力)

最終更新者

(自動入力)

選択肢を登録

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

パラメータ

備考

present-absent

present

インストール

absent

アンインストール

パラメータシートの作成

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

設定項目

項目1設定値

項目2設定値

項目の名前

パッケージ名

状態

項目の名前(Rest API用)

package_name

state

入力方式

文字列(単一行)

プルダウン選択

最大バイト数

64

(項目なし)

正規表現

(項目なし)

選択項目

(項目なし)

入力用:状態:present-absent

参照項目

(項目なし)

初期値

必須

一意制約

説明

備考

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

項目名

設定値

項番

(自動入力)

パラメータシート名

導入パッケージ

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

packages

作成対象

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

表示順序

2

バンドル利用

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

最終更新日時

(自動入力)

最終更新者

(自動入力)

作業手順の登録

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

Movement 登録

Ansible-Legacy ▶ Movement一覧 から、パッケージ管理のための Movement を登録します。
Movement登録
表 95 Movement 情報の設定値

Movement名

Ansible利用情報

ホスト指定形式

ヘッダーセクション

パッケージ管理

IP

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

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

Ansible Playbook 登録

本シナリオでは、 以下のPlaybookを利用します。以下をコピーして、yml形式でpackage.ymlを作成してください。
リスト 400 package.yml
---
- name: install package
  yum:
    state: installed
    name: "{{ item.0 }}"
  with_together:
    - "{{ pkg_name }}"
    - "{{ action }}"
  when: item.1 == 'present'

- name: uninstall package
  yum:
    state: removed
    name: "{{ item.0 }}"
  with_together:
    - "{{ pkg_name }}"
    - "{{ action }}"
  when: item.1 == 'absent'
Ansible-Legacy ▶ Playbook素材集 から、から、上記のPlaybookを登録します。
ansible-playbook登録
表 96 Ansible Playbook 情報の登録

Playbook素材名

Playbook素材

package

package.yml

Movement と Ansible Playbook の紐付け

Ansible-Legacy ▶ Movement-Playbook紐付 から、Movement と Ansible Playbook の紐付けを行います。
本シナリオでは、 package.ymlを利用します。
MovementとPlaybook紐づけ
表 97 Movement-Playbook紐付け情報の登録

Movement名

Playbook素材

インクルード順序

パッケージ管理

package.yml

1

代入値自動登録設定

package.yml では、pkg_name という変数に管理するパッケージ名を、action という変数にパッケージの状態を代入することで、対象サーバーのパッケージを管理することができます。
Ansible-Legacy ▶ 代入値自動登録設定 から、導入パッケージパラメータシートのパッケージ名と状態の項目に入るパラメータと、 Ansible Playbook の pkg_nameaction 内の変数の紐付けを行います。
代入値自動登録設定
表 98 代入値自動登録設定の設定値

パラメータシート(From)

登録方式

Movement名

IaC変数(To)

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

代入順序

Movement名:変数名

代入順序

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

1

Value型

パッケージ管理

パッケージ管理:pkg_name

1

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

1

Value型

パッケージ管理

パッケージ管理:action

1

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

2

Value型

パッケージ管理

パッケージ管理:pkg_name

2

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

2

Value型

パッケージ管理

パッケージ管理:action

2

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

3

Value型

パッケージ管理

パッケージ管理:pkg_name

3

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

3

Value型

パッケージ管理

パッケージ管理:action

3

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

4

Value型

パッケージ管理

パッケージ管理:pkg_name

4

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

4

Value型

パッケージ管理

パッケージ管理:action

4

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

5

Value型

パッケージ管理

パッケージ管理:pkg_name

5

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

5

Value型

パッケージ管理

パッケージ管理:action

5

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

6

Value型

パッケージ管理

パッケージ管理:pkg_name

6

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

6

Value型

パッケージ管理

パッケージ管理:action

6

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

7

Value型

パッケージ管理

パッケージ管理:pkg_name

7

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

7

Value型

パッケージ管理

パッケージ管理:action

7

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

8

Value型

パッケージ管理

パッケージ管理:pkg_name

8

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

8

Value型

パッケージ管理

パッケージ管理:action

8

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

9

Value型

パッケージ管理

パッケージ管理:pkg_name

9

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

9

Value型

パッケージ管理

パッケージ管理:action

9

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

10

Value型

パッケージ管理

パッケージ管理:pkg_name

10

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

10

Value型

パッケージ管理

パッケージ管理:action

10

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

作業対象の登録

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

機器登録

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

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

作業概要の作成

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

作業実施日時

2024/04/02 12:00:00

作業対象

db01(RHEL8)

作業内容

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

作業概要登録

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

オペレーション名

実施予定日時

RHEL8のパッケージ管理

2024/04/02 12:00:00

パラメータ設定

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

ホスト名

オペレーション

代入順序

パラメータ

オペレーション名

パッケージ名

状態

db01

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

1

postgresql-server

present

作業実行

  1. 事前確認

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

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

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

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

作業概要の作成

先ほどと同様に、まずは作業計画を立てましょう。
表 102 作業の方針

作業実施日時

2024/05/02 12:00:00

作業対象

db01(RHEL8)

作業内容

DBパッケージへ変更

作業概要登録

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

オペレーション名

実施予定日時

RHEL8をDBパッケージへ変更

2024/05/02 12:00:00

パラメータ設定

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

ホスト名

オペレーション

代入順序

パラメータ

オペレーション名

パッケージ名

状態

db01

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

1

postgresql-server

absent

db01

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

2

mariadb-server

present

作業実行

  1. 事前確認

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

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

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

まとめ

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

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

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

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