community.general.keycloak_realm_key 模块 – 通过 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_realm_key

community.general 7.5.0 中的新增功能

概要

  • 此模块允许通过 Keycloak REST API 管理 Keycloak 领域密钥。它需要通过 OpenID Connect 访问 REST API;连接的用户和正在使用的领域必须具有必要的访问权限。在默认的 Keycloak 安装中,admin-cli 和管理员用户都可以工作,一个具有根据您需求定制的范围的单独领域定义和具有预期角色的用户也可以工作。

  • 模块选项的名称是 Keycloak API 及其文档中 https://keycloak.java.net.cn/docs-api/8.0/rest-api/index.html 中找到的 camelCase 名称的 snake_case 版本。提供别名,以便可以使用 camelCased 版本。

  • 此模块无法在导入后检测对实际加密密钥的更改。但是,如果在加密密钥旁边更改了其他属性,则密钥也会作为副作用发生更改,因为 JSON 负载需要包含私钥。这可以被认为是一个错误或一个特性,因为另一种方法是始终更新领域密钥,无论它是否已更改。

  • 如果未明确提供证书,Keycloak 将动态创建它。因此,无法将证书的当前状态与所需状态(可能是空的)进行比较。

参数

参数

注释

auth_client_id

字符串

用于向 API 进行身份验证的 OpenID Connect client_id

默认值: "admin-cli"

auth_client_secret

字符串

auth_client_id (如果需要) 一起使用的客户端密钥。

auth_keycloak_url

别名:url

字符串 / 必需

Keycloak 实例的 URL。

auth_password

别名:password

字符串

用于 API 访问身份验证的密码。

auth_realm

字符串

用于 API 访问身份验证的 Keycloak 领域名称。

auth_username

别名:username

字符串

用于 API 访问身份验证的用户名。

config

字典

指定密钥及其属性的字典。

active

布尔值

密钥是激活还是非激活状态。不要与 state 参数管理的 Ansible 资源的状态混淆。

选项

  • false

  • true ← (默认)

algorithm

字符串

密钥算法。

RS384RS512PS256PS384PS512RSA1_5RSA-OAEPRSA-OAEP-256 已在 community.general 8.2.0 中添加。

选项

  • "RS256" ← (默认)

  • "RS384"

  • "RS512"

  • "PS256"

  • "PS384"

  • "PS512"

  • "RSA1_5"

  • "RSA-OAEP"

  • "RSA-OAEP-256"

证书

字符串 / 必需

一个使用私钥签名的证书,以ASCII字符串形式表示。密钥内容必须与config.algorithmprovider_id匹配。

如果希望Keycloak使用您的私钥自动生成证书,则将其设置为空字符串。

启用

布尔值

密钥是启用还是禁用。不要与state参数管理的Ansible资源的状态混淆。

选项

  • false

  • true ← (默认)

优先级

整数 / 必填

密钥的优先级。

私钥

字符串 / 必需

以ASCII字符串形式表示的私钥。密钥内容必须与config.algorithmprovider_id匹配。

请注意,模块无法检测指定的私钥是否与当前状态的私钥不同。使用force=true强制模块更新私钥(如果您期望更新私钥)。

连接超时

整数

在community.general 4.5.0中添加

控制与Keycloak API的HTTP连接超时时间(以秒为单位)。

默认值: 10

强制

布尔值

强制执行私钥和证书的状态。这不是自动的,因为此模块无法确定私钥的当前状态,因此无法根据实际差异触发更新。也就是说,即使force为false,私钥更新也可能作为其他更改的副作用发生。

选项

  • false ← (默认)

  • true

http代理

字符串

在community.general 5.4.0中添加

配置HTTP User-Agent标头。

默认值: "Ansible"

名称

字符串 / 必需

要创建的Realm密钥的名称。

父ID

字符串 / 必需

Realm密钥的父ID。实际上是Realm的名称。

提供商ID

字符串

密钥的“提供商ID”名称。

rsa-enc已在community.general 8.2.0中添加。

选项

  • "rsa" ← (默认)

  • "rsa-enc"

状态

字符串

Keycloak Realm密钥的状态。

present状态下,将创建Realm密钥(如果已存在,则更新)。

absent状态下,如果Realm密钥存在,则将其删除。

选项

  • "present" ← (默认)

  • "absent"

令牌

字符串

在community.general 3.0.0中添加

Keycloak API的身份验证令牌。

验证证书

布尔值

验证TLS证书(在生产环境中不要禁用此选项)。

选项

  • false

  • true ← (默认)

属性

属性

支持

描述

check_mode

支持:完全支持

可以在check_mode下运行,并在不修改目标的情况下返回更改状态预测。

diff_mode

支持:部分支持

在diff模式下,将返回有关已更改内容(或可能需要在check_mode下更改的内容)的详细信息。

备注

注意

  • 无法从Keycloak获取私钥的当前值。因此,无法将其期望状态与当前状态进行比较。

  • 如果未明确提供证书,Keycloak 将动态创建它。因此,无法将证书的当前状态与所需状态(可能是空的)进行比较。

  • 由于私钥和证书选项,该模块**不是完全幂等的**。如果知道私钥可能已更改,则可以使用force=true强制模块始终更新。

示例

- name: Manage Keycloak realm key (certificate autogenerated by Keycloak)
  community.general.keycloak_realm_key:
    name: custom
    state: present
    parent_id: master
    provider_id: rsa
    auth_keycloak_url: https://127.0.0.1:8080/auth
    auth_username: keycloak
    auth_password: keycloak
    auth_realm: master
    config:
      private_key: "{{ private_key }}"
      certificate: ""
      enabled: true
      active: true
      priority: 120
      algorithm: RS256
- name: Manage Keycloak realm key and certificate
  community.general.keycloak_realm_key:
    name: custom
    state: present
    parent_id: master
    provider_id: rsa
    auth_keycloak_url: https://127.0.0.1:8080/auth
    auth_username: keycloak
    auth_password: keycloak
    auth_realm: master
    config:
      private_key: "{{ private_key }}"
      certificate: "{{ certificate }}"
      enabled: true
      active: true
      priority: 120
      algorithm: RS256

返回值

常见的返回值已在此处记录,以下是此模块特有的字段

描述

end_state

字典

模块执行后keycloak_realm_key的表示。

返回:成功时

config

字典

Realm密钥配置。

返回:state=present

示例: {"active": ["true"], "algorithm": ["RS256"], "enabled": ["true"], "priority": ["140"]}

id

字符串

Realm密钥的ID。

返回:state=present

示例: "5b7ec13f-99da-46ad-8326-ab4c73cf4ce4"

名称

字符串

Realm密钥的名称。

返回:state=present

示例: "mykey"

parentId

字符串

此密钥所属的Realm的ID。

返回:state=present

示例: "myrealm"

providerId

字符串

密钥提供商的ID。

返回:state=present

示例: "rsa"

providerType

字符串

提供商的类型。

返回:state=present

msg

字符串

关于采取了什么操作的消息。

返回:始终

作者

  • Samuli Seppänen (@mattock)