# 4. Ansible によるサーバセットアップ
ここまでで一通り、Ansible playbook の作り方を学びました。
では、ここからは実際にサーバのセットアップを行っていきます。
この章では、Playbookを使って実際にサーバの構築・設定を自動化します。
複数のタスクをまとめて記述し、ターゲットホストに対して一括で操作を行う方法を学びます。
# [演習.4] ユーザ・グループを作成するplaybookを作る
前回、Playbook は一連のターゲットホストに対して複数の複雑なタスクを簡単に反復可能な方法で実行できるようにすると記載しました。
今回は前回の「対象ホストに対して ping 応答を確認する」とは異なり、 実際にサーバに対して何らかの操作を施すものを作ります。
以下の要件を満たす playbook を作成してください
# 要求仕様
項目 | 内容 |
---|---|
Playbook名 | create_group.yml |
操作対象グループ | exercise |
対象ホスト | host00, host01 |
タスク1 | Linuxユーザグループの作成 |
グループ名/GID | bootcamp / 1750 |
タスク2 | Linuxユーザの作成 |
ユーザ名/UID | bootcampuser / 4000 |
# tasks作成のヒント
- linux グループの作成にはansible-builtin-group-module (opens new window)を使います
- linux ユーザの作成にはansible-builtin-user-module (opens new window)を使います
# ユーザ・グループを作成するplaybookの作成
まずはこれまでの知識を使って自分で作ってみましょう 分からなければ開いて内容を確認しながら作成してみましょう
create_group.yml 例
---
- name: "演習.4 ユーザ・グループを作成するplaybookを作る"
hosts: exercise
gather_facts: false
tasks:
- name: ユーザグループを作成する
ansible.builtin.group:
name: bootcamp
gid: 1750
state: present
- name: ユーザを作成する
ansible.builtin.user:
name: bootcampuser
uid: 4000
group: bootcamp
state: present
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# 動作確認
playbookが作成できたならば以下の通り実行します。
ansible-playbook -i inventories/hosts create_group.yml -k
1
実行ログ
SSH password:
PLAY [演習.4 ユーザ・グループを作成するplaybookを作る] ***********************************************************************************************************************************************************************************
TASK [ユーザグループを作成する] **********************************************************************************************************************************************************************************************************
changed: [host00]
changed: [host01]
TASK [ユーザを作成する] ******************************************************************************************************************************************************************************************************************
ok: [host01]
ok: [host00]
PLAY RECAP *******************************************************************************************************************************************************************************************************************************
host00 : ok=2 changed=1 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
host
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
2
3
4
5
6
7
8
9
10
11
12
13
14
15
グループとユーザが正しく作成されたか、チェック用Playbookで確認できます。
assert_group.yml
の例:
---
- name: "演習.4 ユーザ・グループを作成するplaybookを作る"
hosts: exercise
gather_facts: false
tasks:
- name: グループ 'bootcamp' の情報を取得
ansible.builtin.command: getent group bootcamp
register: bootcamp_group
ignore_errors: true
changed_when: false
- name: ユーザ 'bootcampuser' の情報を取得
ansible.builtin.command: getent passwd bootcampuser
register: bootcampuser_user
ignore_errors: true
changed_when: false
- name: グループ 'bootcamp' が存在し、GID 1750 を持っているか確認
ansible.builtin.assert:
that:
- "bootcamp_group.rc == 0"
- "bootcamp_group.stdout.split(':')[2] == '1750'"
fail_msg: "'bootcamp' グループが GID 1750 を持っていません。"
- name: ユーザ 'bootcampuser' が存在し、UID 4000 を持っているか確認
ansible.builtin.assert:
that:
- "bootcampuser_user.rc == 0"
- "bootcampuser_user.stdout.split(':')[2] == '4000'"
fail_msg: "'bootcampuser' ユーザが UID 4000 を持っていません。"
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
実行コマンド:
ansible-playbook -i inventories/hosts assert_group.yml
1
正常終了すれば、グループとユーザが正しく作成されています。
CC BY-SA Licensed | Copyright (c) 2025, Internet Initiative Japan Inc.