- name: cerbot letsencrypt standalone include: letsencrypt.yaml - name: Create data-dir file: name: /data/ state: directory - name: Create keycloak psql mount file: name: /data/keycloak-postgres/ state: directory - name: Create compose directory keycloak file: name: "/opt/keycloak/" state: directory - name: Copy compose templates keycloak template: src: "keycloak.yaml" dest: "/opt/keycloak/" - name: Copy compose environment files keycloak template: src: "{{ item }}" dest: "/opt/keycloak/" with_items: - postgres_password - name: Deploy compose templates community.docker.docker_compose: project_src: "/opt/keycloak/" pull: true files: - "keycloak.yaml" - name: Check/Wait for Keycloak to be up uri: url: https://keycloak.atlantishq.de/health method: GET return_content: yes status_code: 200 body_format: json register: result until: result.status and result.json.status == "UP" retries: 10 delay: 20 - name: Create Keycloak Clients local_action: module: keycloak_client auth_client_id: admin-cli auth_keycloak_url: https://keycloak.atlantishq.de/ auth_realm: master auth_username: admin auth_password: "{{ keycloak_admin_password }}" state: present realm: master client_id: '{{ keycloak_clients[item]["client_id"] }}' id: '{{ keycloak_clients[item]["keycloak_id"] }}' name: '{{ keycloak_clients[item]["client_id"] }}' description: '{{ keycloak_clients[item]["description"] }}' enabled: True client_authenticator_type: client-secret secret: '{{ keycloak_clients[item]["client_secret"] }}' redirect_uris: '{{ keycloak_clients[item]["redirect_uris"] }}' web_origins: '{{ keycloak_clients[item]["redirect_uris"] }}' frontchannel_logout: False protocol: openid-connect with_items: "{{ keycloak_clients.keys() | list }}" - name: Keycloak User federation (ldap-provider) include: keycloak-ldap-provider.yaml - name: Include LDAP setup include: ldap.yaml