ユーザー管理 (解答)¶
問題 (再掲)¶
ユーザー名 |
ユーザーID |
ログインパスワード |
グループ名 |
---|---|---|---|
wwwuser01 |
10001 |
password01 |
www |
wwwuser02 |
10002 |
password02 |
www |
appuser01 |
20001 |
password01 |
app |
appuser02 |
20002 |
password02 |
app |
パラメータ設計¶
グループのパラメータシート作成¶
---
- 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_name |
グループ名 |
group_id |
グループID |
action |
構築時の設定
present: 作成/更新
absent: 削除
|
Tip
Tip

設定項目 |
項目1設定値 |
項目2設定値 |
項目3設定値 |
---|---|---|---|
項目の名前 |
グループ名 |
グループID |
状態 |
項目の名前(Rest API用) |
group_name |
group_id |
state |
入力方式 |
文字列(単一行) |
整数 |
プルダウン選択 |
最小値 |
(項目なし) |
1000 |
(項目なし) |
最大値 |
(項目なし) |
(項目なし) |
|
最大バイト数 |
32 |
(項目なし) |
(項目なし) |
正規表現 |
(項目なし) |
(項目なし) |
|
選択項目 |
(項目なし) |
(項目なし) |
入力用:状態:present-absent |
参照項目 |
(項目なし) |
(項目なし) |
|
初期値 |
|||
必須 |
✓ |
✓ |
✓ |
一意制約 |
✓ |
✓ |
|
説明 |
|||
備考 |
項目名 |
設定値 |
---|---|
項番 |
(自動入力) |
パラメータシート名 |
グループ |
パラメータシート名(REST) |
groups |
作成対象 |
パラメータシート(ホスト/オペレーションあり) |
表示順序 |
4 |
バンドル利用 |
「利用する」にチェックを入れる(有効) |
最終更新日時 |
(自動入力) |
最終更新者 |
(自動入力) |
ユーザーのパラメータシート作成¶
---
- 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'
項目 |
説明 |
---|---|
user_name |
ユーザー名 |
user_id |
ユーザーID |
group_id |
グループID |
comment |
コメント |
home_dir |
ホームディレクトリ |
login_shell |
ログインシェル名 |
password |
パスワード |
action |
構築時の設定
present: 作成/更新
absent: 削除
|
password_apply |
構築時のパスワード設定の有無
true: パスワードの設定を行う
false: パスワードの設定を行わない
|
Tip

設定項目 |
項目1設定値 |
項目2設定値 |
項目3設定値 |
項目4設定値 |
項目5設定値 |
---|---|---|---|---|---|
項目の名前 |
ユーザー名 |
ユーザーID |
パスワード |
パスワード設定 |
グループ |
項目の名前(Rest API用) |
user_name |
user_id |
password |
password_apply |
group |
入力方式 |
文字列(単一行) |
整数 |
パスワード |
プルダウン選択 |
プルダウン選択 |
最大バイト数 |
32 |
(項目なし) |
32 |
(項目なし) |
(項目なし) |
正規表現 |
(項目なし) |
(項目なし) |
(項目なし) |
(項目なし) |
|
最小値 |
(項目なし) |
1000 |
(項目なし) |
(項目なし) |
(項目なし) |
最大値 |
(項目なし) |
(項目なし) |
(項目なし) |
(項目なし) |
|
選択項目 |
(項目なし) |
(項目なし) |
(項目なし) |
パラメータシート作成:選択2:True-False |
入力用:グループ:グループ名 |
参照項目 |
(項目なし) |
(項目なし) |
(項目なし) |
||
初期値 |
(項目なし) |
False |
|||
必須 |
✓ |
✓ |
✓ |
✓ |
✓ |
一意制約 |
✓ |
✓ |
|||
説明 |
|||||
備考 |

設定項目 |
項目6設定値 |
項目7設定値 |
項目8設定値 |
項目9設定値 |
---|---|---|---|---|
項目の名前 |
ホームディレクトリ |
ログインシェル |
コメント |
状態 |
項目の名前(Rest API用) |
home_dir |
login_shell |
comment |
state |
入力方式 |
文字列(単一行) |
文字列(単一行) |
文字列(単一行) |
プルダウン選択 |
最大バイト数 |
128 |
32 |
128 |
(項目なし) |
正規表現 |
(項目なし) |
|||
最小値 |
(項目なし) |
(項目なし) |
(項目なし) |
(項目なし) |
最大値 |
(項目なし) |
(項目なし) |
(項目なし) |
(項目なし) |
選択項目 |
(項目なし) |
(項目なし) |
(項目なし) |
入力用:状態:present-absent |
参照項目 |
(項目なし) |
(項目なし) |
(項目なし) |
|
初期値 |
/bin/bash |
|||
必須 |
✓ |
✓ |
✓ |
✓ |
一意制約 |
||||
説明 |
||||
備考 |
項目名 |
設定値 |
---|---|
項番 |
(自動入力) |
パラメータシート名 |
ユーザー |
パラメータシート名(REST) |
users |
作成対象 |
パラメータシート(ホスト/オペレーションあり) |
表示順序 |
3 |
バンドル利用 |
「利用する」にチェックを入れる(有効) |
最終更新日時 |
(自動入力) |
最終更新者 |
(自動入力) |
作業対象の登録¶
機器登録¶
作業手順の登録¶
注釈
Movement 登録¶

Movement名 |
Ansible利用情報 |
|
---|---|---|
ホスト指定形式 |
ヘッダーセクション |
|
ユーザー管理 |
IP |
※ヘッダーセクションを参照 |
- hosts: all
remote_user: "{{ __loginuser__ }}"
gather_facts: no
become: yes
Ansible Playbook 登録¶
---
- 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'
---
- 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'

Playbook素材名 |
Playbook素材 |
---|---|
group |
|
user |
|
Movement と Ansible Playbook の紐付け¶

Movement名 |
Playbook素材 |
インクルード順序 |
---|---|---|
ユーザー管理 |
group.yml |
1 |
ユーザー管理 |
user.yml |
2 |
代入値自動登録設定¶

パラメータシート(From) |
登録方式 |
Movement名 |
IaC変数(To) |
||
---|---|---|---|---|---|
メニューグループ:メニュー:項目 |
代入順序 |
Movement名:変数名 |
代入順序 |
||
代入値自動登録用:グループ:グループ名 |
1 |
Value型 |
ユーザー管理 |
ユーザー管理:group_name |
1 |
代入値自動登録用:グループ:グループID |
1 |
Value型 |
ユーザー管理 |
ユーザー管理:group_id |
1 |
代入値自動登録用:グループ:状態 |
1 |
Value型 |
ユーザー管理 |
ユーザー管理:group_action |
1 |
代入値自動登録用:グループ:グループ名 |
2 |
Value型 |
ユーザー管理 |
ユーザー管理:group_name |
2 |
代入値自動登録用:グループ:グループID |
2 |
Value型 |
ユーザー管理 |
ユーザー管理:group_id |
2 |
代入値自動登録用:グループ:状態 |
2 |
Value型 |
ユーザー管理 |
ユーザー管理:group_action |
2 |
... |
... |
... |
... |
... |
... |
代入値自動登録用:グループ:グループ名 |
5 |
Value型 |
ユーザー管理 |
ユーザー管理:group_name |
5 |
代入値自動登録用:グループ:グループID |
5 |
Value型 |
ユーザー管理 |
ユーザー管理:group_id |
5 |
代入値自動登録用:グループ:状態 |
5 |
Value型 |
ユーザー管理 |
ユーザー管理:group_action |
5 |





パラメータシート(From) |
登録方式 |
Movement名 |
IaC変数(To) |
||
---|---|---|---|---|---|
メニューグループ:メニュー:項目 |
代入順序 |
Movement名:変数名 |
代入順序 |
||
代入値自動登録用:ユーザー:ユーザー名 |
1 |
Value型 |
ユーザー管理 |
ユーザー管理:user_name |
1 |
代入値自動登録用:ユーザー:ユーザーID |
1 |
Value型 |
ユーザー管理 |
ユーザー管理:user_id |
1 |
代入値自動登録用:ユーザー:パスワード |
1 |
Value型 |
ユーザー管理 |
ユーザー管理:password |
1 |
代入値自動登録用:ユーザー:パスワード設定 |
1 |
Value型 |
ユーザー管理 |
ユーザー管理:password_apply |
1 |
代入値自動登録用:ユーザー:グループ |
1 |
Value型 |
ユーザー管理 |
ユーザー管理:group |
1 |
代入値自動登録用:ユーザー:ホームディレクトリ |
1 |
Value型 |
ユーザー管理 |
ユーザー管理:home_dir |
1 |
代入値自動登録用:ユーザー:ログインシェル |
1 |
Value型 |
ユーザー管理 |
ユーザー管理:login_shell |
1 |
代入値自動登録用:ユーザー:コメント |
1 |
Value型 |
ユーザー管理 |
ユーザー管理:comment |
1 |
代入値自動登録用:ユーザー:状態 |
1 |
Value型 |
ユーザー管理 |
ユーザー管理:user_action |
1 |
代入値自動登録用:ユーザー:ユーザー名 |
2 |
Value型 |
ユーザー管理 |
ユーザー管理:user_name |
2 |
代入値自動登録用:ユーザー:ユーザーID |
2 |
Value型 |
ユーザー管理 |
ユーザー管理:user_id |
2 |
代入値自動登録用:ユーザー:パスワード |
2 |
Value型 |
ユーザー管理 |
ユーザー管理:password |
2 |
代入値自動登録用:ユーザー:パスワード設定 |
2 |
Value型 |
ユーザー管理 |
ユーザー管理:password_apply |
2 |
代入値自動登録用:ユーザー:グループ |
2 |
Value型 |
ユーザー管理 |
ユーザー管理:group |
2 |
代入値自動登録用:ユーザー:ホームディレクトリ |
2 |
Value型 |
ユーザー管理 |
ユーザー管理:home_dir |
2 |
代入値自動登録用:ユーザー:ログインシェル |
2 |
Value型 |
ユーザー管理 |
ユーザー管理:login_shell |
2 |
代入値自動登録用:ユーザー:コメント |
2 |
Value型 |
ユーザー管理 |
ユーザー管理:comment |
2 |
代入値自動登録用:ユーザー:状態 |
2 |
Value型 |
ユーザー管理 |
ユーザー管理:user_action |
2 |
代入値自動登録用:ユーザー:ユーザー名 |
3 |
Value型 |
ユーザー管理 |
ユーザー管理:user_name |
3 |
代入値自動登録用:ユーザー:ユーザーID |
3 |
Value型 |
ユーザー管理 |
ユーザー管理:user_id |
3 |
代入値自動登録用:ユーザー:パスワード |
3 |
Value型 |
ユーザー管理 |
ユーザー管理:password |
3 |
代入値自動登録用:ユーザー:パスワード設定 |
3 |
Value型 |
ユーザー管理 |
ユーザー管理:password_apply |
3 |
代入値自動登録用:ユーザー:グループ |
3 |
Value型 |
ユーザー管理 |
ユーザー管理:group |
3 |
代入値自動登録用:ユーザー:ホームディレクトリ |
3 |
Value型 |
ユーザー管理 |
ユーザー管理:home_dir |
3 |
代入値自動登録用:ユーザー:ログインシェル |
3 |
Value型 |
ユーザー管理 |
ユーザー管理:login_shell |
3 |
代入値自動登録用:ユーザー:コメント |
3 |
Value型 |
ユーザー管理 |
ユーザー管理:comment |
3 |
代入値自動登録用:ユーザー:状態 |
3 |
Value型 |
ユーザー管理 |
ユーザー管理:user_action |
3 |
代入値自動登録用:ユーザー:ユーザー名 |
4 |
Value型 |
ユーザー管理 |
ユーザー管理:user_name |
4 |
代入値自動登録用:ユーザー:ユーザーID |
4 |
Value型 |
ユーザー管理 |
ユーザー管理:user_id |
4 |
代入値自動登録用:ユーザー:パスワード |
4 |
Value型 |
ユーザー管理 |
ユーザー管理:password |
4 |
代入値自動登録用:ユーザー:パスワード設定 |
4 |
Value型 |
ユーザー管理 |
ユーザー管理:password_apply |
4 |
代入値自動登録用:ユーザー:グループ |
4 |
Value型 |
ユーザー管理 |
ユーザー管理:group |
4 |
代入値自動登録用:ユーザー:ホームディレクトリ |
4 |
Value型 |
ユーザー管理 |
ユーザー管理:home_dir |
4 |
代入値自動登録用:ユーザー:ログインシェル |
4 |
Value型 |
ユーザー管理 |
ユーザー管理:login_shell |
4 |
代入値自動登録用:ユーザー:コメント |
4 |
Value型 |
ユーザー管理 |
ユーザー管理:comment |
4 |
代入値自動登録用:ユーザー:状態 |
4 |
Value型 |
ユーザー管理 |
ユーザー管理:user_action |
4 |
... |
... |
... |
... |
... |
... |
代入値自動登録用:ユーザー:ユーザー名 |
10 |
Value型 |
ユーザー管理 |
ユーザー管理:user_name |
10 |
代入値自動登録用:ユーザー:ユーザーID |
10 |
Value型 |
ユーザー管理 |
ユーザー管理:user_id |
10 |
代入値自動登録用:ユーザー:パスワード |
10 |
Value型 |
ユーザー管理 |
ユーザー管理:password |
10 |
代入値自動登録用:ユーザー:パスワード設定 |
10 |
Value型 |
ユーザー管理 |
ユーザー管理:password_apply |
10 |
代入値自動登録用:ユーザー:グループ |
10 |
Value型 |
ユーザー管理 |
ユーザー管理:group |
10 |
代入値自動登録用:ユーザー:ホームディレクトリ |
10 |
Value型 |
ユーザー管理 |
ユーザー管理:home_dir |
10 |
代入値自動登録用:ユーザー:ログインシェル |
10 |
Value型 |
ユーザー管理 |
ユーザー管理:login_shell |
10 |
代入値自動登録用:ユーザー:コメント |
10 |
Value型 |
ユーザー管理 |
ユーザー管理:comment |
10 |
代入値自動登録用:ユーザー:状態 |
10 |
Value型 |
ユーザー管理 |
ユーザー管理:user_action |
10 |
機器登録¶
ユーザー追加作業の実施¶
作業概要の作成¶
作業実施日時 |
2024/04/04 12:00:00 |
作業対象 |
web01(RHEL8) |
作業内容 |
Webサーバーへユーザー追加作業 |
作業概要登録¶

オペレーション名 |
実施予定日時 |
---|---|
Webサーバーへユーザー追加作業 |
2024/04/04 12:00:00 |
パラメータ設定¶

ホスト名 |
オペレーション |
代入順序 |
パラメータ |
||
---|---|---|---|---|---|
オペレーション名 |
グループ名 |
グループID |
状態 |
||
web01 |
2023/04/04 12:00:00_Webサーバーへユーザー追加作業 |
1 |
www |
10001 |
present |
web01 |
2023/04/04 12:00:00_Webサーバーへユーザー追加作業 |
2 |
app |
10002 |
present |


ホスト名 |
オペレーション |
代入順序 |
パラメータ |
||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
オペレーション名 |
ユーザー名 |
ユーザーID |
パスワード |
パスワード設定 |
グループ |
ホームディレクトリ |
ログインシェル |
コメント |
状態 |
||
web01 |
2024/04/04 12:00:00_Webサーバーへユーザー追加作業 |
1 |
wwwuser01 |
10001 |
password01 |
True |
www |
/home/wwwuser01 |
/bin/bash |
Web server maintainer |
present |
web01 |
2024/04/04 12:00:00_Webサーバーへユーザー追加作業 |
2 |
wwwuser02 |
10002 |
password02 |
True |
www |
/home/wwwuser02 |
/bin/bash |
Web server maintainer |
present |
web01 |
2024/04/04 12:00:00_Webサーバーへユーザー追加作業 |
3 |
appuser01 |
20001 |
password01 |
True |
app |
/home/appuser01 |
/bin/bash |
Application server maintainer |
present |
web01 |
2024/04/04 12:00:00_Webサーバーへユーザー追加作業 |
4 |
appuser02 |
20002 |
password02 |
True |
app |
/home/appuser02 |
/bin/bash |
Application server maintainer |
present |
作業実行¶
事前確認
現在のサーバーの状態を確認しましょう。グループ一覧を確認します。# グループ一覧の取得 cat /etc/group|grep -E "www|app"
# 何も表示されない
ユーザー一覧を確認します。# ユーザー一覧の取得 cat /etc/passwd|grep -E "www|app"
# 何も表示されない
作業実行
作業実行 を押下します。から、ユーザー管理 Movement を選択し、次に、作業実行 を押下します。で、オペレーションに Webサーバーへユーザー追加作業 を選択し、画面が開き、実行が完了した後に、ステータスが「完了」になったことを確認します。

事後確認
再度サーバーに下記のグループとユーザーが設定されていることを確認しましょう。グループ一覧を確認します。# グループ一覧の取得 cat /etc/group|grep -E "app|www"
www:x:10001: app:x:10002:
ユーザー一覧を確認します。# ユーザー一覧の取得 cat /etc/passwd|grep -E "app|www"
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
(参考) 既存のジョブフローへの追加¶
ジョブフローの作成
オペレーション登録
ホスト名のパラメータ登録 (パラメータ変更なし)
パッケージのパラメータ登録 (パラメータ変更なし)
グループのパラメータ登録
ユーザーのパラメータ登録
ジョブフロー実行
ジョブフローの編集と実行 (失敗例)¶
OUT |
IN |
---|---|
Start |
ホスト名設定 |
ホスト名設定 |
パッケージ管理 |
パッケージ管理 |
ユーザー管理 |
ユーザー管理 |
End |

ジョブフローの編集と実行 (成功例)¶
Movement |
オペレーション名 |
---|---|
ホスト名設定 |
RHEL8のホスト名変更作業 |
パッケージ管理 |
RHEL8のパッケージ管理 |
ユーザー管理 |
Webサーバーへユーザー追加作業 |
