Ansible 如何在KeyClope中导入域并退出

Ansible 如何在KeyClope中导入域并退出,ansible,keycloak,Ansible,Keycloak,我已经按照keydape管理员指南使用了standalone.sh,它确实可以工作,但是它启动了服务器,并且没有退出 这对我来说是个问题,因为我想通过执行Ansible playbook来自动化这个过程,所以我不能,因为任务永远不会结束 我通过使用async和wait\u for在Ansible中找到了一个解决方法,但希望找到一种不需要使用AdminRESTAPI的更好方法 - name: Stop keycloak service: name: keycloak state

我已经按照keydape管理员指南使用了
standalone.sh
,它确实可以工作,但是它启动了服务器,并且没有退出

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

我通过使用
async
wait\u for
在Ansible中找到了一个解决方法,但希望找到一种不需要使用AdminRESTAPI的更好方法

- 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
你可以用它来做

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

$ kcadm.sh config credentials --server http://localhost:8080/auth --realm demorealm --user admin --password admin
用于完整导出/导入示例的命令(请参阅领域操作>更新领域一节):


还可以使用以下命令执行部分导出/导入操作:
kcadm.sh create partial export | partialImport…

您还可以使用管理控制台导入域。这样,您就根本不必依赖独立脚本。如果您转到“添加领域”部分。它向您显示了一个选择创建领域的文件的选项。是的,我知道,但请记住,我的初始目标是通过Ansible自动化此过程。我们有一个更大的部署中使用Ansible管理KeylCook的场景,但我们使用Admin REST API导入领域。这意味着我们拥有一个角色,该角色获取访问令牌,然后将领域推送到keydove。正如预期的那样工作,我认为这也是实现它的预期方式。有趣的是,有什么代码可以共享吗?我不知道thqt cqn是否有帮助,但ansible有几个KeyClope模块。您刚才引用了文档吗?事实证明,这个示例并没有很好地工作,也就是说,领域更新不起作用,客户端起作用。最终使用4.4.0“不工作”是什么意思?您是否收到任何可以共享的错误消息?有什么不同于预期的吗?你试了什么?在Key斗篷4.4.0上,对我有效:我尝试了
kcadm.sh get realms/demo>demorealms.json
,通过控制台更改了其中一个演示领域设置(访问令牌寿命),然后
kcadm.sh更新realms/demo-f demorealms
,并在更改之前恢复了旧值。到目前为止,还不错。事实证明有很多字段没有更新,只是碰巧我尝试的前5个字段被忽略了。这很令人困惑。我在积压工作中发现了几个测试覆盖率低的问题,我们发现了几个导入和更新没有很好的文档记录和/或没有进行任何操作的实例。在我们认为的所有选项中,KeyClope在部署和自动配置方面是最好的,较新的auth组件的文档需要润色。
$ kcadm.sh get realms/demorealm > demorealm.json
$ vi demorealm.json
$ kcadm.sh update realms/demorealm -f demorealm.json