AAP 2.5からControllerとPlatform Gatewayに分かれた関係で、ユーザー作成周りの処理(エンドポイント)に変更があり、以前までのモジュールだとAAP 2.5に対しては正常に動作しなくなっている。
結論としては、「組織」「チーム」「ユーザー」に関する操作はansible.platformコレクションに含まれるansible.platform.userモジュールを使用する。
(言い換えると、メニューの「Access Management」配下のリソース操作はansible.platformコレクションを使う、となるはず)
確認した環境はAAP 2.4 / 2.5ともにコンテナ版
AAP 2.5に対してansible.controller.userでユーザー作成するタスクとそのエラー
タスクは以下の通り。
- name: create user ansible.controller.user: username: "{{ username }}" password: "{{ password }}" email: "{{ email }}" organization: "{{ organization }}" is_superuser: false is_system_auditor: false
旧バージョンのansible.controllerコレクション使用 (ver 4.5.25)
AAP 2.4に付属EEに内蔵のansible.controllerを使った場合、以下のエラー
fatal: [localhost]: FAILED! => {
"changed": false,
"msg": "Failed to get token: HTTP Error 404: Not Found",
"response": "\n<!doctype html>\n<html lang=\"en\">\n<head>\n <title>Not Found</title>\n</head>\n<body>\n <h1>Not Found</h1><p>The requested resource was not found on this server.</p>\n</body>\n</html>\n"
}
おそらくエンドポイントがあっていないため404になっている
対応バージョンのはずのansible.controllerコレクション使用 (ver 4.6.21)
最新ではないけど2025年10月リリースの4.6.21(AAP 2.5に付属EEに内蔵)で実行した場合。
これはうまくいくと思ったが、以下のエラーが発生
fatal: [localhost]: FAILED! => {
"changed": false,
"msg": "You don't have permission to POST to /api/controller/v2/organizations/1/users/ (HTTP 403). Use the collection ansible.platform to modify resources Organization, User, or Team."
}
「Organization(組織)」や「User(ユーザー)」や「Team(チーム)」を操作するならansible.platformコレクションを使え、ということらしい。
ansible.platform.userを使ってユーザー作成する
修正したタスクが以下の通り。
Automation Hub - ansible.platform.user
- name: create user ansible.platform.user: username: "{{ username }}" password: "{{ password }}" email: "{{ email }}" organizations: "{{ organization }}" is_superuser: false is_platform_auditor: false
ansible.controller.userとのパラメタの差異は下記。
organization->organizations(複数形)is_system_auditor->is_platform_auditor
ただしどちらも廃止予定のためdeprecated警告が出力される。
正しくはansible.platform.role_user_assignmentを使ってユーザーのロール設定を行う方式になっている。
これを踏まえて上記をrole_user_assignmentを使って書き換えると以下。
- name: create user ansible.platform.user: username: "{{ username }}" password: "{{ password }}" email: "{{ email }}" is_superuser: false # is_platform_auditor: false - name: update user role ansible.platform.role_user_assignment: user: "{{ username }}" role_definition: Organization Member object_ids: - "{{ organization }}"
role_definitionに何を指定できるのかが正直よくわからないのと、is_platform_auditorがtrueの場合にどうセットすればいいかが不明。
標準ユーザーであればドキュメントを参考に上記の通り Organization Member を入力すると作成できた。
あとobject_idsはIDといいつつ名前指定もOKのため、組織Defaultであれば(IDを別途引っ張ってきたりする必要はなく)そのまま記述すればよい。