Rolesディレクトリ配下に、役割ごとのPlaybookなどを配置し、一元管理できる
オプションでtasksを指定してPlaybookを実行する
ディレクトリ構成
[root@localhost ~]# マネージャー側
[root@localhost ~]# tree
.
├── roles
│ ├── file_create
│ │ └── tasks
│ │ └── main.yml
│ └── user_create
│ └── tasks
│ └── main.yml
└── test_playbook
5 directories, 3 files
構成ファイル内容
・rolesディレクトリ
playbookに記載したtaskを格納するディレクトリ
・file_createディレクトリ、user_createディレクトリ
playbookに記載した名前と同じ名前のディレクトリ。tasksディレクトリ配下のmain.ymlに具体的なtaskを記載する
・test_playbook
使用するプレイブック
Roles内のファイル
[root@localhost ~]# マネージャー側
[root@localhost ~]# cat /root/roles/user_create/tasks/main.yml
- user:
name: roles_test_user01
state: present
tags:
- user_create
[root@localhost ~]#
[root@localhost ~]# cat /root/roles/file_create/tasks/main.yml
- file:
path: /root/file01
state: touch
tags:
- file_create
ファイル作成とユーザ作成のtaskを記載
オプション内容
・tags
ansible実行時に、-tオプションの引数で指定する際に指定するタグ名を各taskファイルに記載する
実行するPlaybook
[root@localhost ~]# マネージャー側
[root@localhost ~]# cat /root/test_playbook
- hosts: all
name: "roles test"
become: yes
roles:
- user_create
- file_create
オプション内容
・roles
rolesディレクトリ配下に作成したtaskを呼び出すモジュール
・user_create、file_create
rolesディレクトリ配下に作成したtaskのディレクトリ名と同じ値を記載する
実行前の状態
[root@localhost ~]# クライアント側
[root@localhost ~]# tail -3 /etc/passwd
user20240104:x:1002:1003::/home/user20240104:/bin/bash
apache:x:48:48:Apache:/usr/share/httpd:/sbin/nologin
moduletest_user:x:1999:1000:test_comment:/tmp:/bin/bash
[root@localhost ~]#
[root@localhost ~]# ll
合計 4
-rw-------. 1 root root 1255 12月 3 18:12 anaconda-ks.cfg
Playbookの実行1(user_createタグを指定してユーザ作成のみ実行)
[root@localhost ~]# マネージャ側
[root@localhost ~]# ansible-playbook /root/test_playbook -t user_create -D -k
SSH password:
PLAY [roles test] ***************************************************************************************************************************************************************************
TASK [Gathering Facts] **********************************************************************************************************************************************************************
ok: [host01]
TASK [user_create : user] *******************************************************************************************************************************************************************
changed: [host01]
PLAY RECAP **********************************************************************************************************************************************************************************
host01 : ok=2 changed=1 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
実行後の状態1
[root@localhost ~]# クライアント側
[root@localhost ~]# tail -3 /etc/passwd
apache:x:48:48:Apache:/usr/share/httpd:/sbin/nologin
moduletest_user:x:1999:1000:test_comment:/tmp:/bin/bash
roles_test_user01:x:2000:2000::/home/roles_test_user01:/bin/bash
[root@localhost ~]#
[root@localhost ~]# ll
合計 4
-rw-------. 1 root root 1255 12月 3 18:12 anaconda-ks.cfg
[root@localhost ~]#
ユーザ作成のみが実行されたことを確認
Playbookの実行2(file_createタグを指定してファイル作成のみ実行)
[root@localhost ~]# マネージャ側
[root@localhost ~]# ansible-playbook /root/test_playbook -t file_create -D -k
SSH password:
PLAY [roles test] ***************************************************************************************************************************************************************************
TASK [Gathering Facts] **********************************************************************************************************************************************************************
ok: [host01]
TASK [file_create : file] *******************************************************************************************************************************************************************
--- before
+++ after
@@ -1,6 +1,6 @@
{
- "atime": 1704636339.3128467,
- "mtime": 1704636339.3128467,
+ "atime": 1704636339.322917,
+ "mtime": 1704636339.322917,
"path": "/root/file01",
- "state": "absent"
+ "state": "touch"
}
changed: [host01]
PLAY RECAP **********************************************************************************************************************************************************************************
host01 : ok=2 changed=1 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
実行後の状態2
[root@localhost ~]# クライアント側
[root@localhost ~]# tail -3 /etc/passwd
user20240104:x:1002:1003::/home/user20240104:/bin/bash
apache:x:48:48:Apache:/usr/share/httpd:/sbin/nologin
moduletest_user:x:1999:1000:test_comment:/tmp:/bin/bash
[root@localhost ~]#
[root@localhost ~]# ll
合計 4
-rw-------. 1 root root 1255 12月 3 18:12 anaconda-ks.cfg
-rw-r--r-- 1 root root 0 1月 7 23:05 file01
ファイル作成のみが実行されたことを確認
コメント