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

Gaë*_*iou 6 ansible keycloak

我已经按照Keycloak管理员指南导出和导入领域使用standalone.sh它确实工作,但它启动服务器,但不退出.

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

我在Ansible中找到了一个使用async和解决方法,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
Run Code Online (Sandbox Code Playgroud)

Cyr*_*lle 6

您可以使用Keycloak Admin CLI 来完成

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

$ kcadm.sh config credentials --server http://localhost:8080/auth --realm demorealm --user admin --password admin
Run Code Online (Sandbox Code Playgroud)

完整导出/导入示例的命令(请参阅领域操作>更新领域部分):

$ kcadm.sh get realms/demorealm > demorealm.json
$ vi demorealm.json
$ kcadm.sh update realms/demorealm -f demorealm.json
Run Code Online (Sandbox Code Playgroud)

以及使用类似的命令可以做部分导出/导入:kcadm.sh create partial-export | partialImport ...