AnsibleのRolesディレクトリでPlaybookを一元管理する

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

ファイル作成のみが実行されたことを確認

コメント

タイトルとURLをコピーしました