community.general.keycloak_group 模块 – 通过 Keycloak API 管理 Keycloak 组
注意
此模块是 community.general 集合 (版本 10.1.0) 的一部分。
如果您使用的是 ansible
包,则可能已经安装了此集合。它不包含在 ansible-core
中。要检查它是否已安装,请运行 ansible-galaxy collection list
。
要安装它,请使用: ansible-galaxy collection install community.general
。
要在 playbook 中使用它,请指定: community.general.keycloak_group
。
概要
此模块允许您通过 Keycloak REST API 添加、删除或修改 Keycloak 组。它需要通过 OpenID Connect 访问 REST API;连接的用户和使用的客户端必须具有必要的访问权限。在默认的 Keycloak 安装中,admin-cli 和管理员用户都可以工作,单独的客户端定义(其范围根据您的需求进行调整)和具有预期角色的用户也可以工作。
模块选项的名称是 Keycloak API 及其文档中(https://keycloak.java.net.cn/docs-api/20.0.2/rest-api/index.html)找到的 camelCase 名称的 snake_case 版本。
属性在 Keycloak API 中是多值属性。所有属性都是单个值的列表,并且此模块将以这种方式返回它们。调用模块时,您可以为属性传递单个值,这将被转换为适合 API 的列表。
更新组时,如果可能,请向模块提供组 ID。这将消除查找 API 以将名称转换为组 ID 的操作。
参数
参数 |
注释 |
---|---|
要设置为组自定义属性的键值对字典。 值可以是单个值(例如字符串)或字符串列表。 |
|
用于向 API 进行身份验证的 OpenID Connect 默认值: |
|
与 |
|
Keycloak 实例的 URL。 |
|
用于 API 访问身份验证的密码。 |
|
用于 API 访问身份验证的 Keycloak realm 名称。 |
|
用于 API 访问身份验证的用户名。 |
|
控制对 Keycloak API 的 HTTP 连接超时时间(以秒为单位)。 默认值: |
|
配置 HTTP User-Agent 标头。 默认值: |
|
此组的唯一标识符。 此参数对于更新或删除组不是必需的,但提供它将减少所需的 API 调用次数。 |
|
组的名称。 此参数仅在创建或更新组时才需要。 |
|
组的父组列表,用于处理自上而下的排序。 将其设置为将组创建为另一个组或组(父组)的子组,或者按名称访问现有子组时。 通过其 |
|
按 ID 标识父组。 比使用 当第一个父组以 ID 给出时,可以在任何点启动一个深度父链。 请注意,原则上可以同时指定 ID 和名称,但当前实现始终只使用其中一个,优先使用 ID。 |
|
按名称标识父组。 比使用 当只提供名称的父链时,必须完整到顶层。 请注意,原则上可以同时指定 ID 和名称,但当前实现始终只使用其中一个,优先使用 ID。 |
|
此组所在的 Keycloak realm。 默认值: |
|
组的状态。 在 在 选项
|
|
Keycloak API 的身份验证令牌。 |
|
验证 TLS 证书(请勿在生产环境中禁用此选项)。 选项
|
属性
属性 |
支持 |
描述 |
---|---|---|
支持:完全支持 |
可以在 |
|
支持:完全支持 |
在 diff 模式下,将返回有关已更改内容(或可能需要在 |
备注
注意
目前,Keycloak API 返回的
end_state.realmRoles
、end_state.clientRoles
和end_state.access
属性对于组是只读的。此限制将在该模块的后续版本中移除。
示例
- name: Create a Keycloak group, authentication with credentials
community.general.keycloak_group:
name: my-new-kc-group
realm: MyCustomRealm
state: present
auth_client_id: admin-cli
auth_keycloak_url: https://auth.example.com/auth
auth_realm: master
auth_username: USERNAME
auth_password: PASSWORD
register: result_new_kcgrp
delegate_to: localhost
- name: Create a Keycloak group, authentication with token
community.general.keycloak_group:
name: my-new-kc-group
realm: MyCustomRealm
state: present
auth_client_id: admin-cli
auth_keycloak_url: https://auth.example.com/auth
token: TOKEN
delegate_to: localhost
- name: Delete a keycloak group
community.general.keycloak_group:
id: '9d59aa76-2755-48c6-b1af-beb70a82c3cd'
state: absent
realm: MyCustomRealm
auth_client_id: admin-cli
auth_keycloak_url: https://auth.example.com/auth
auth_realm: master
auth_username: USERNAME
auth_password: PASSWORD
delegate_to: localhost
- name: Delete a Keycloak group based on name
community.general.keycloak_group:
name: my-group-for-deletion
state: absent
auth_client_id: admin-cli
auth_keycloak_url: https://auth.example.com/auth
auth_realm: master
auth_username: USERNAME
auth_password: PASSWORD
delegate_to: localhost
- name: Update the name of a Keycloak group
community.general.keycloak_group:
id: '9d59aa76-2755-48c6-b1af-beb70a82c3cd'
name: an-updated-kc-group-name
state: present
auth_client_id: admin-cli
auth_keycloak_url: https://auth.example.com/auth
auth_realm: master
auth_username: USERNAME
auth_password: PASSWORD
delegate_to: localhost
- name: Create a keycloak group with some custom attributes
community.general.keycloak_group:
auth_client_id: admin-cli
auth_keycloak_url: https://auth.example.com/auth
auth_realm: master
auth_username: USERNAME
auth_password: PASSWORD
name: my-new_group
attributes:
attrib1: value1
attrib2: value2
attrib3:
- with
- numerous
- individual
- list
- items
delegate_to: localhost
- name: Create a Keycloak subgroup of a base group (using parent name)
community.general.keycloak_group:
name: my-new-kc-group-sub
realm: MyCustomRealm
state: present
auth_client_id: admin-cli
auth_keycloak_url: https://auth.example.com/auth
auth_realm: master
auth_username: USERNAME
auth_password: PASSWORD
parents:
- name: my-new-kc-group
register: result_new_kcgrp_sub
delegate_to: localhost
- name: Create a Keycloak subgroup of a base group (using parent id)
community.general.keycloak_group:
name: my-new-kc-group-sub2
realm: MyCustomRealm
state: present
auth_client_id: admin-cli
auth_keycloak_url: https://auth.example.com/auth
auth_realm: master
auth_username: USERNAME
auth_password: PASSWORD
parents:
- id: "{{ result_new_kcgrp.end_state.id }}"
delegate_to: localhost
- name: Create a Keycloak subgroup of a subgroup (using parent names)
community.general.keycloak_group:
name: my-new-kc-group-sub-sub
realm: MyCustomRealm
state: present
auth_client_id: admin-cli
auth_keycloak_url: https://auth.example.com/auth
auth_realm: master
auth_username: USERNAME
auth_password: PASSWORD
parents:
- name: my-new-kc-group
- name: my-new-kc-group-sub
delegate_to: localhost
- name: Create a Keycloak subgroup of a subgroup (using direct parent id)
community.general.keycloak_group:
name: my-new-kc-group-sub-sub
realm: MyCustomRealm
state: present
auth_client_id: admin-cli
auth_keycloak_url: https://auth.example.com/auth
auth_realm: master
auth_username: USERNAME
auth_password: PASSWORD
parents:
- id: "{{ result_new_kcgrp_sub.end_state.id }}"
delegate_to: localhost
返回值
常用返回值已在 此处 记录,以下是此模块独有的字段
键 |
描述 |
---|---|
模块执行后组的表示(示例已截断)。 返回:成功时 |
|
一个字典,描述您基于所使用的凭据对该组的访问权限。 返回:始终返回 示例: |
|
应用于此组的属性。 返回:始终返回 示例: |
|
授予此组的客户端级别角色列表。 返回:始终返回 示例: |
|
标识组的 GUID。 返回:始终返回 示例: |
|
组的名称。 返回:始终返回 示例: |
|
指向该组的 URI 路径。 返回:始终返回 示例: |
|
授予此组的 realm 级别角色数组。 返回:始终返回 示例: |
|
此组的子组列表。这些组将具有此处记录的相同参数。 返回:始终返回 |
|
关于采取了什么操作的消息。 返回:始终返回 |