ansible - 如何在 Keycloak 中导入领域并退出

标签 ansible keycloak

我已按照 Keycloak 管理指南转到 export and import realms使用 standalone.sh它确实有效,但它会启动服务器并且不会退出。

这对我来说是个问题,因为我想通过执行 Ansible playbook 来自动化这个过程,所以我不能,因为任务永远不会结束。

我通过使用 async 在 Ansible 中找到了解决方法和 wait_for但希望有一种不需要使用 Admin REST API 的更好方法。

- name: Stop keycloak
  service:
    name: keycloak
    state: stopped
- name: Import realm into Keycloak
  shell: "{{keycloak_home}}/bin/standalone.sh -Dkeycloak.migration.action=import -Dkeycloak.migration.provider=dir -Dkeycloak.migration.dir=master -Dkeycloak.migration.usersExportStrategy=SAME_FILE -Dkeycloak.migration.realmName=master"
  async: 30
  poll: 0
- name: Wait for Keycloak to be started and listen on port 8080
  wait_for:
    host: 0.0.0.0
    port: 8080
    delay: 10
- name: Restart keycloak
  service:
    name: keycloak
    state: restarted

最佳答案

你可以用 Keycloak Admin CLI 来做.

在运行任何命令之前进行一次身份验证(请参阅上面链接中的身份验证部分),例如:

$ kcadm.sh config credentials --server http://localhost:8080/auth --realm demorealm --user admin --password admin

完整导出/导入示例的命令(请参阅领域操作 > 更新领域部分):
$ kcadm.sh get realms/demorealm > demorealm.json
$ vi demorealm.json
$ kcadm.sh update realms/demorealm -f demorealm.json

也可以使用以下命令进行部分导出/导入:kcadm.sh create partial-export | partialImport ... .

关于ansible - 如何在 Keycloak 中导入领域并退出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42817789/

相关文章:

shell - Ansible playbook shell 输出

Keycloak Admin Rest API unknown_error 用于更新用户 API

http - 我们可以将用户添加到 'master' 以外的领域中的 key 斗篷吗?

linux - 无法在ansible yml脚本中执行 block 模块

amazon-ec2 - 使用 ansible 创建新的 ec2 卷时出错

linux - Ansible:检查服务是否正在监听特定端口

postgresql - Keycloak 无法连接到 Postgres : "SSL connection is required"

spring-boot - 我应该明确验证 Keycloak token 还是由 Keycloak 适配器完成?

Keycloak admin REST API - 使用刷新 token 创建新的访问 token 而不重新创建刷新 token

ansible - 尝试使用 ansible 构建包时找不到命令