LoginSignup
0
0

Exastro IT Automation(ver2.4.0)のlearnをやってみた Ansible Legacy編 その③

Last updated at Posted at 2024-06-24

はじめに

Exastro IT Automationとは

システム構成(IaC+パラメータ)を管理するためのフレームワークです。
【Exastro-suite】より

第3回目はユーザー名やパスワードなど、ユーザー情報の変更を自動化していきたいと思います。手順については、Learn Ansible Legacy を参考にしました。

今回は、以下のPlaybookを使用します。
文字コードは「UTF-8」、改行コードは「LF」、拡張子は「yml」形式で作成してください。
※ファイルアップロードができなかったり、実行エラーが発生するため、インデントにご注意ください。

user.yml
---
- name: create/update group
  group:
    name: "{{ item.0 }}"
    gid: "{{ item.1 }}"
  with_together:
    - "{{ group_name }}"
    - "{{ group_id }}"
    - "{{ group_action }}"
  when: item.2 == 'present'

- name: create/update group
  group:
    name: "{{ item.0 }}"
    gid: "{{ item.1 }}"
  with_together:
    - "{{ group_name }}"
    - "{{ group_id }}"
    - "{{ group_action }}"
  when: item.2 == 'absent'
group.yml
---
- name: create user
  user:
    name: "{{ item.0 }}"
    uid: "{{ item.1 }}"
    group: "{{ item.2 }}"
    comment: "{{ item.3 }}"
    home: "{{ item.4 }}"
    shell: "{{ item.5 }}"
    password: "{{ item.6 | password_hash('sha512') }}"
  with_together:
    - "{{ user_name }}"
    - "{{ user_id }}"
    - "{{ group }}"
    - "{{ comment }}"
    - "{{ home_dir }}"
    - "{{ login_shell }}"
    - "{{ password }}"
    - "{{ user_action }}"
    - "{{ password_apply }}"
  when: item.7 == 'present' and password_apply

- name: create user
  user:
    name: "{{ item.0 }}"
    uid: "{{ item.1 }}"
    group: "{{ item.2 }}"
    comment: "{{ item.3 }}"
    home: "{{ item.4 }}"
    shell: "{{ item.5 }}"
  with_together:
    - "{{ user_name }}"
    - "{{ user_id }}"
    - "{{ group }}"
    - "{{ comment }}"
    - "{{ home_dir }}"
    - "{{ login_shell }}"
    - "{{ user_action }}"
    - "{{ password_apply }}"
  when: item.6 == 'present' and not password_apply

- name: delete user
  user:
    state: absent
    name: "{{ item.0 }}"
    remove: 'yes'
  with_together:
    - "{{ user_name }}"
    - "{{ user_action }}"
  when: item.1 == 'absent'

以下のように、公式ドキュメントにあるシナリオを3回に分けて実施しています。
パッケージ管理
Exastro IT Automation(ver2.4.0)のlearnをやってみた Ansible Legacy編 その①

ジョブフロー
Exastro IT Automation(ver2.4.0)のlearnをやってみた Ansible Legacy編 その②

ユーザー管理
Exastro IT Automation(ver2.4.0)のlearnをやってみた Ansible Legacy編 その③

作業環境

前回同様、以下の環境で進めていきます。
画像3.png

  • Exastro IT Automation 2.4.0
  • RHEL8(ITAサーバ用)
  • RHEL8(ターゲットマシン用)
  • Windows10(クライアント)
  • Google Chrome(Win10側)

シナリオ

【事前準備】
1.パラメータシートの作成(グループ用)
2.パラメータシートの作成(ユーザ用)
3.機器一覧にターゲットマシンを登録
4.ジョブ(Movement)の登録
5.Ansible Playbookの登録
6.ジョブ(Movement)とAnsible Playbookの紐付け
7.パラメータシートの項目とPlaybookの変数を紐付け

【ユーザー追加作業】
8.作業名(オペレーション)の登録
9.パラメータシートにデータを登録(グループ用)
10.パラメータシートにデータを登録(ユーザ用)
11.事前確認
12.作業実行
13.実行結果の確認

事前準備

1.パラメータシートの作成(グループ用)

データシートを作成します。
「パラメータシート作成」メニューグループ → 「パラメータシート定義・作成」メニューを選択します。
左上の「項目」をクリックすることで複数登録できるようになります。
画像4.png

以下のように登録しました。

設定項目 項目1設定値 項目2設定値 項目3設定値
項目の名前 グループ名 グループID 状態
項目の名前(Rest API用) group_name group_id state
入力方式 文字列(単一行) 整数 プルダウン選択
最小値 (項目なし) 1000 (項目なし)
最第値 (項目なし) (項目なし)
最大バイト数 32 (項目なし) (項目なし)
正規表現 (項目なし) (項目なし)
選択項目 (項目なし) (項目なし) 入力用:状態:present-absent
参照項目 (項目なし) (項目なし)
必須
一意制約

画像76.png

以下のように登録しました。

設定項目 設定値
パラメータシート名 グループ
パラメータシート名(REST用) groups
作成対象 パラメータシート(ホスト/オペレーションあり)
表示順序 4
バンドル利用 「利用する」に✓入れる

入力後、作成をクリックします。

2.パラメータシートの作成(ユーザ用)

パラメータシートを作成します。
「パラメータシート作成」メニューグループ → 「パラメータシート定義・作成」メニューを選択します。

画像77.png

画像78.png

以下のように登録しました。

設定項目 項目1設定値 項目2設定値 項目3設定値 項目4設定値 項目5設定値 項目6設定値 項目7設定値 項目8設定値 項目9設定値
項目の名前 ユーザー名 ユーザーID パスワード パスワード設定 グループ ホームディレクトリ ログインシェル コメント 状態
項目の名前(Rest API用) user_name user_id password password_apply group home_dir login_shell comment state
入力方式 文字列(単一行) 整数 パスワード プルダウン選択 プルダウン選択 文字列(単一行) 文字列(単一行) 文字列(単一行) プルダウン選択
最大バイト数 32 (項目なし) 32 (項目なし) (項目なし) 128 32 128 (項目なし)
正規表現 (項目なし) (項目なし) (項目なし) (項目なし) (項目なし)
最小値 (項目なし) 1000 (項目なし) (項目なし) (項目なし) (項目なし) (項目なし) (項目なし) (項目なし)
最大値 (項目なし) (項目なし) (項目なし) (項目なし) (項目なし) (項目なし)
選択項目 (項目なし) (項目なし) (項目なし) パラメータシート作成:選択2:True-False 入力用:グループ:グループ名 (項目なし) (項目なし) (項目なし) 入力用:状態:present-absent
参照項目 (項目なし) (項目なし) (項目なし) (項目なし) (項目なし)
初期値 (項目なし) False /bin/bash
必須
一意制約

画像79.png

設定項目 設定値
パラメータシート名 ユーザー
パラメータシート名(REST用) users
作成対象 パラメータシート(ホスト/オペレーションあり)
表示順序 3
バンドル利用 「利用する」に✓入れる

入力後、作成をクリックします。

3.機器一覧にターゲットマシンを登録

下記のホスト名登録を参照。
Exastro IT Automation(ver2.4.0)のlearnをやってみた Ansible Legacy編 その③

4.ジョブ(Movement)の登録

ジョブ(Movement)の登録を行います。
「Ansible-Lagacy」メニューグループ → 「Movement一覧」メニューを選択します。

画像80.png

以下のように登録しました。

Movement名 ホスト指定形式
ユーザー管理 IP

入力後は、「編集確認」 → 「編集反映」をクリックします。

5.Ansible Playbookの登録

playbookを登録します。
「Ansible-Lagacy」メニューグループ → 「Playbook素材集」メニュー → 「登録」選択し、事前に準備しておいた「group.yml」と「user.yml」をアップロードします。

画像81.png

以下のように登録しました。

Playbook素材名 Playbook素材
group group.yml
user user.yml

入力後は、「編集確認」 → 「編集反映」をクリックします。

6.ジョブ(Movement)とAnsible Playbookの紐付け

「Ansible-Lagacy」メニューグループ → 「Playbook素材集」メニュー → 「登録」を選択し、事前に準備しておいた「group.yml」と「user.yml」をアップロードします。

以下のように登録しました。

Movement名 Playbook素材 インクルード順序
ユーザ管理 group.yml 1
ユーザ管理 user.yml 2

入力後は、「編集確認」 → 「編集反映」をクリックします。

7.パラメータシートの項目とPlaybookの変数を紐付け

件数が多いので登録用フォーマットを使用して一括登録したいと思います。
まず、「Ansible-Lagacy」メニューグループ → 「代入値自動登録設定」メニューを選択します。
次に、「ダウンロード・ファイル一括登録」タブから「新規登録用ダウンロード(Excel)」をクリックし、フォーマットをダウンロードします。
画像46.png

ダウンロードしたフォーマットを開き、行を追加します。(今回は105行分入力します。)
設定値は Ansible Legacy Learnのユーザー管理 をご参照ください。

簡単に整理すると、下記の3列は105行すべてで共通です。

C列 実行処理種別 H列 登録方式 I列 Movement名
登録 Value型 ユーザ管理

下記はgroup.ymlとuser.ymlに記載したパラメータです。
グループのパラメータが3種類、ユーザーのパラメータが9種類あります。
また、Ansible Legacy Learnのユーザー管理 にあるように、グループのパラメータは5行ずつ、ユーザーのパラメータは10行ずつとなっています。

F列 メニューグループ:メニュー:項目J列 Movement名:変数名 G列K列 代入順序 行数
代入値自動登録用:グループ:パラメータ/グループ名 ユーザー管理:group_name 5
代入値自動登録用:グループ:パラメータ/グループID ユーザー管理:group_id 5
代入値自動登録用:グループ:パラメータ/状態 ユーザー管理:group_action 5
代入値自動登録用:ユーザ:パラメータ/ユーザー名 ユーザー管理:user_name 10
代入値自動登録用:ユーザ:パラメータ/ユーザID ユーザー管理:user_id 10
代入値自動登録用:ユーザ:パラメータ/パスワード ユーザー管理:password 10
代入値自動登録用:ユーザ:パラメータ/パスワード設定 ユーザー管理:password_apply 10
代入値自動登録用:ユーザ:パラメータ/グループ ユーザー管理:group 10
代入値自動登録用:ユーザ:パラメータ/ホームディレクトリ ユーザー管理:home_dir 10
代入値自動登録用:ユーザ:パラメータ/ログインシェル ユーザー管理:login_shell 10
代入値自動登録用:ユーザ:パラメータ/コメント ユーザー管理:comment 10
代入値自動登録用:ユーザ:パラメータ/状態 ユーザー管理:user_action 10

「ファイル一括登録」 → 「一括登録開始」をクリックします。
画像47.png

ユーザー追加作業

8.作業名(オペレーション)の登録

「基本コンソール」メニューグループ → 「オペレーション一覧」メニュー → 「登録」選択します。
画像82.png

以下のように登録しました。

オペレーション名 実施予定順序
Webサーバへユーザー追加作業 2024/04/01 12:00:00

入力後は、「編集確認」 → 「編集反映」をクリックします。

9.パラメータシートにデータを登録(グループ用)

「入力用」メニューグループ → 「グループ」メニュー → 「登録」選択します。
以下のように登録します。

ホスト名 オペレーション名 代入順序 グループ名 グループID 状態
Web01 2024/04/01 12:00:00_Webサーバへユーザー追加作業 1 www 10001 present
Web01 2024/04/01 12:00:00_Webサーバへユーザー追加作業 2 app 1002 present

画像83.png

入力後は、「編集確認」 → 「編集反映」をクリックします。

10.パラメータシートにデータを登録(ユーザ用)

項目が多いのでフォーマットを使用して一括登録します。
「入力用」メニューグループ → 「ユーザ」を選択します。
「ダウンロード・ファイル一括登録」タブから「新規登録用ダウンロード(Excel)」をクリックし、フォーマットをダウンロードします。

画像46.png

ダウンロードしたフォーマットを開き、設定値を入力していきます。
設定値は Ansible Legacy Learnのユーザー管理 をご参照ください。

「ファイル一括登録」 → 「一括登録開始」をクリックします。
画像47.png

11.事前確認

実行する前に現在の状態を確認します。

# グループ一覧の取得
cat /etc/group|grep -E "www|app"
# 何も表示されない
# ユーザー一覧の取得
cat /etc/passwd|grep -E "www|app"
# 何も表示されない

12.作業実行

「Ansible-Lagacy」メニューグループ → 「作業実行」メニューを選択します。
実行するジョブ(Movement)を選択し、作業実行をクリックします。
画像84.png

実行するオペレーションを選択し、作業実行をクリックします。
画像85.jpg

13.実行結果の確認

再度サーバに SSH ログインし、ホスト名が変更されていることを確認します。

# グループ一覧の取得
cat /etc/group|grep -E "www|app"
# 結果
www:x:10001:
app:x:10002:
# ユーザー一覧の取得
cat /etc/passwd|grep -E "www|app"
# 結果
wwwuser01:x:10001:10001:Web server mainterner:/home/wwwuser01:/bin/bash
wwwuser02:x:10002:10001:Web server mainterner:/home/wwwuser02:/bin/bash
appuser01:x:20001:10002:Application server mainterner:/home/appuser01:/bin/bash
appuser02:x:20002:10002:Application server mainterner:/home/appuser02:/bin/bash

おわりに

今回は、Ansible 3モードの1つであるAnsible-Legacyを使用し、ユーザー情報の変更を実施しました。

Ansible-LegacyのLearnを3回に分けて実施してきましたが、今まで行ってきた手順を応用して他にも自動化できることがたくさんあると思います。
興味がある方は、公式ドキュメントにも目を通してみてはいかがでしょうか。

■クイックスタート
ホスト名管理
Exastro IT Automation(ver2.4.0)のクイックスタートをやってみた(Ansible Legacy)

■Learn
パッケージ管理
Exastro IT Automation(ver2.4.0)のlearnをやってみた Ansible Legacy編 その①

ジョブフロー
Exastro IT Automation(ver2.4.0)のlearnをやってみた Ansible Legacy編 その②

ユーザー管理
Exastro IT Automation(ver2.4.0)のlearnをやってみた Ansible Legacy編 その③

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0