Ansible Automation Platform でユーザーにロール割り当てて実行を制御する

### はじめに

Ansible Automation Platform でユーザーにロールを割り当てて実行制御を確認したログです。


マニュアル： [ユーザー](https://docs.redhat.com/ja/documentation/red_hat_ansible_automation_platform/2.5/html/access_management_and_authentication/assembly-controller-users_gw-manage-rbac)



---

### 環境

・HW: IBM Power10 S1022
　仮想マシン：
　　OS: RHEL 9.4 ppc64le (PU Desired 0.5, VP Max 1, Memory 32GB で設定)
・Ansible Automation Platform 2.5.9 (1 ノード構成)

---


### ユーザーの作成

admin ユーザーでログインします。

ユーザーの画面に移動し、"ユーザーの作成" を押します。

![1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/517421/49b50ed2-15b5-4ba8-8884-0599d0aac127.png)


ユーザー名は job_user を指定していています。
パスワードは任意に入力しています。その他は特に指定していません。"ユーザーの作成" を押します。

![2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/517421/12f9023b-9542-41ab-9271-880a1d1a383d.png)


無事、作成されました。


![3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/517421/820fb56c-8e0a-4b90-ae2f-3bb31443c601.png)


---

### 事前定義のロール確認

ユーザーの下のロールに移動し、デフォルトで定義されているロールを確認します。
AAP 2.5.9 コンテナ版ではデフォルトでは 37 個のロールが定義されていました。


![4.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/517421/f5428215-59c6-4daa-b64d-de29c126122b.png)


job に関連する ロールを抽出します。その中に JobTemplate Execute というロールがありました。

![5.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/517421/34c2c31d-6aeb-4b5f-b14a-3c1761d47bfa.png)


---

### ユーザーにロールを設定


マニュアル： [ユーザーへのロールの追加](https://docs.redhat.com/ja/documentation/red_hat_ansible_automation_platform/2.5/html/access_management_and_authentication/assembly-controller-users_gw-manage-rbac#ref-controller-user-roles)


上で作成した job_user の詳細ページで "ロール" に移動します。

![1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/517421/64cc2602-4d37-4808-9497-49d519e996a8.png)

リソースタイプの選択

![2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/517421/c4d196b1-b48c-4f4d-952b-eb7cf1eac612.png)

Job Template を選びます。

![3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/517421/33f66f1c-02a2-4636-a4bd-fb0e6fbdd64a.png)

この作業の前に作成していた 3 つの Job Template がリストされました。
create_user_group を選択します。

![4.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/517421/5a78c825-51a0-43ae-9b8f-cd6801699a42.png)

Select roles to apply では、 "JobTemplate Execute" を選択します。

![5.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/517421/7c2bf035-738b-4236-bd75-54063292c51b.png)

Review 画面で確認です。

　・リソースタイプ： Job Template
　・Resources: create_user_group
　・ロール: JobTemplate Execute 

![6.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/517421/927da810-f8c8-4952-a88b-c6f50ad0e870.png)

Finish を押し、Add roles が実行されます。

![7.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/517421/143461ed-48d7-4d1f-ae3a-9ed2441fba0e.png)

job_user へのロール設定が完了しました。

![8.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/517421/da00a32c-7592-4536-ab1b-63b362833b82.png)

admin ユーザーをログアウトします。

---

### 稼働確認

job_user でログインしなおします。

![1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/517421/4e09e422-d31c-40d7-830d-072b72cfe608.png)

ログイン直後、ユーザーの画面に飛びました。

![2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/517421/e110c89d-93ea-4ee4-861f-46e3d2a55751.png)

左列の (ジョブ) テンプレートに移動します。
create_user_group のみしか見えていません。(admin ユーザーでは他のテンプレートも見えていました)

![3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/517421/1dc1980b-29ce-412e-b507-22e96a195cd0.png)

テンプレート create_user_group の詳細に移動し、変数が埋め込まれていることを確認し、"テンプレートの起動" を実行します。

![4.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/517421/213775d7-de7e-4848-865f-c165b4cc5e20.png)

問題なくジョブテンプレートが実行されました。

![5.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/517421/7f383fd2-473a-44ec-90d2-714758eeb7c6.png)

<br>
<br>

なお、他のコンテントは見ることができません。一例で、下記のインベントリー画面では何も表示されていません。
ユーザーに割り当てられたロールが特定のジョブテンプレートに対する実行権限のみであるためと考えられます。


![6.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/517421/a6b6d05d-abde-4d2f-9536-07a264ec25ef.png)


---

### 参考 playbook と変数

JobTemplate create_user_group はRHEL でユーザー・グループを作成する playbook を実行していました。

playbook をご参考までに記載します。

<br>

<details><summary>create_user.yml (折りたたんでいます) </summary>

```create_user.yml
---
- name: ユーザーとグループを作成
  hosts: all
  become: yes

  tasks:
  - name: グループの作成
    group:
      name: "{{ groups.group_name }}"
      gid: "{{ groups.group_id }}"
      state: present
    loop: "{{ group_list }}"
    loop_control:
       loop_var: groups

  - name: ユーザーの作成
    user:
      name: "{{ users.user_name }}"
      uid: "{{ users.user_uid }}"
      group: "{{ users.primary_group }}"
      password: "{{ 'password' | password_hash('sha512') }}"
      shell: "{{ users.shell | default('/bin/bash') }}"
    loop: "{{ user_list }}"
    loop_control:
       loop_var: users

  - name: セカンダリグループへのユーザー追加
    user:
       name: "{{ users2.user_name }}"
       groups: "{{ users2.secondary_groups | join(',') }}"
       append: yes
    loop: "{{ user_list }}"
    loop_control:
       loop_var: users2
    when: users2.secondary_groups is defined and (users2.secondary_groups|length > 0)
```

</details>


<br>


変数はテンプレートのGUIに設定していました。


<details><summary>変数 (折りたたんでいます) </summary>

```
group_list:
  - group_name: testgroup
    group_id: 1501
  - group_name: testgroup2
    group_id: 1502
  - group_name: testgroup3
    group_id: 1503
user_list:
  - user_name: developer1
    user_uid: 1501
    primary_group: testgroup
    secondary_groups:
      - testgroup3
    shell: /bin/bash
  - user_name: admin1
    user_uid: 1601
    primary_group: testgroup
    secondary_groups:
      - testgroup2
      - wheel
    shell: /bin/bash
  - user_name: user1
    user_uid: 1701
    primary_group: testgroup3
    shell: /bin/bash
```

</details>



---

### おわりに

ユーザーでロール付与による制御の動きを確認しました。

AAP 参考設定ログ

https://qiita.com/c_u/items/a30ae82ac749a3581af0

https://qiita.com/c_u/items/1dbea6fe42411f5438e5

以上です。