{"id":44788064,"url":"https://github.com/rolehippie/keycloak","last_synced_at":"2026-02-16T10:44:11.606Z","repository":{"id":43187597,"uuid":"446849772","full_name":"rolehippie/keycloak","owner":"rolehippie","description":"Ansible role to install and configure Keycloak identity service","archived":false,"fork":false,"pushed_at":"2026-02-02T08:52:42.000Z","size":351,"stargazers_count":1,"open_issues_count":1,"forks_count":1,"subscribers_count":1,"default_branch":"master","last_synced_at":"2026-02-02T21:34:56.937Z","etag":null,"topics":["ansible","ansible-role","hacktoberfest","role"],"latest_commit_sha":null,"homepage":"","language":"Jinja","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/rolehippie.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2022-01-11T14:16:04.000Z","updated_at":"2026-02-02T08:52:45.000Z","dependencies_parsed_at":"2023-02-12T02:46:28.762Z","dependency_job_id":"94e286fc-25a2-4573-b025-103c3f144a3b","html_url":"https://github.com/rolehippie/keycloak","commit_stats":null,"previous_names":[],"tags_count":43,"template":false,"template_full_name":null,"purl":"pkg:github/rolehippie/keycloak","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rolehippie%2Fkeycloak","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rolehippie%2Fkeycloak/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rolehippie%2Fkeycloak/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rolehippie%2Fkeycloak/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/rolehippie","download_url":"https://codeload.github.com/rolehippie/keycloak/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rolehippie%2Fkeycloak/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29506271,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-16T09:05:14.864Z","status":"ssl_error","status_checked_at":"2026-02-16T08:55:59.364Z","response_time":115,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ansible","ansible-role","hacktoberfest","role"],"created_at":"2026-02-16T10:44:10.830Z","updated_at":"2026-02-16T10:44:11.539Z","avatar_url":"https://github.com/rolehippie.png","language":"Jinja","funding_links":[],"categories":[],"sub_categories":[],"readme":"# keycloak\n\n[![Source Code](https://img.shields.io/badge/github-source%20code-blue?logo=github\u0026logoColor=white)](https://github.com/rolehippie/keycloak)\n[![General Workflow](https://github.com/rolehippie/keycloak/actions/workflows/general.yml/badge.svg)](https://github.com/rolehippie/keycloak/actions/workflows/general.yml)\n[![Readme Workflow](https://github.com/rolehippie/keycloak/actions/workflows/docs.yml/badge.svg)](https://github.com/rolehippie/keycloak/actions/workflows/docs.yml)\n[![Galaxy Workflow](https://github.com/rolehippie/keycloak/actions/workflows/galaxy.yml/badge.svg)](https://github.com/rolehippie/keycloak/actions/workflows/galaxy.yml)\n[![License: Apache-2.0](https://img.shields.io/github/license/rolehippie/keycloak)](https://github.com/rolehippie/keycloak/blob/master/LICENSE)\n[![Ansible Role](https://img.shields.io/badge/role-rolehippie.keycloak-blue)](https://galaxy.ansible.com/rolehippie/keycloak)\n\nAnsible role to install and configure Keycloak identity service.\n\n## Sponsor\n\nBuilding and improving this Ansible role have been sponsored by my current and previous employers like **[Cloudpunks GmbH](https://cloudpunks.de)** and **[Proact Deutschland GmbH](https://www.proact.eu)**.\n\n## Table of contents\n\n- [Requirements](#requirements)\n- [Default Variables](#default-variables)\n  - [keycloak_cache_owners_auth_sessions_count](#keycloak_cache_owners_auth_sessions_count)\n  - [keycloak_cache_owners_count](#keycloak_cache_owners_count)\n  - [keycloak_command](#keycloak_command)\n  - [keycloak_container_extensions_path](#keycloak_container_extensions_path)\n  - [keycloak_container_scripts_path](#keycloak_container_scripts_path)\n  - [keycloak_container_themes_path](#keycloak_container_themes_path)\n  - [keycloak_cpu_shares](#keycloak_cpu_shares)\n  - [keycloak_database_addresses](#keycloak_database_addresses)\n  - [keycloak_database_connection](#keycloak_database_connection)\n  - [keycloak_database_name](#keycloak_database_name)\n  - [keycloak_database_password](#keycloak_database_password)\n  - [keycloak_database_schema](#keycloak_database_schema)\n  - [keycloak_database_type](#keycloak_database_type)\n  - [keycloak_database_username](#keycloak_database_username)\n  - [keycloak_default_extensions](#keycloak_default_extensions)\n  - [keycloak_default_folders](#keycloak_default_folders)\n  - [keycloak_default_labels](#keycloak_default_labels)\n  - [keycloak_default_publish](#keycloak_default_publish)\n  - [keycloak_default_startups](#keycloak_default_startups)\n  - [keycloak_default_themes](#keycloak_default_themes)\n  - [keycloak_default_volumes](#keycloak_default_volumes)\n  - [keycloak_extensions_path](#keycloak_extensions_path)\n  - [keycloak_extra_environment](#keycloak_extra_environment)\n  - [keycloak_extra_extensions](#keycloak_extra_extensions)\n  - [keycloak_extra_folders](#keycloak_extra_folders)\n  - [keycloak_extra_labels](#keycloak_extra_labels)\n  - [keycloak_extra_publish](#keycloak_extra_publish)\n  - [keycloak_extra_startups](#keycloak_extra_startups)\n  - [keycloak_extra_themes](#keycloak_extra_themes)\n  - [keycloak_extra_volumes](#keycloak_extra_volumes)\n  - [keycloak_general_environment](#keycloak_general_environment)\n  - [keycloak_group](#keycloak_group)\n  - [keycloak_hostname](#keycloak_hostname)\n  - [keycloak_http_relative_path](#keycloak_http_relative_path)\n  - [keycloak_image](#keycloak_image)\n  - [keycloak_jgroups_discovery_enabled](#keycloak_jgroups_discovery_enabled)\n  - [keycloak_jgroups_discovery_external_ip](#keycloak_jgroups_discovery_external_ip)\n  - [keycloak_jgroups_discovery_properties](#keycloak_jgroups_discovery_properties)\n  - [keycloak_jgroups_discovery_protocol](#keycloak_jgroups_discovery_protocol)\n  - [keycloak_legacy_startups](#keycloak_legacy_startups)\n  - [keycloak_loglevel](#keycloak_loglevel)\n  - [keycloak_memory_limit](#keycloak_memory_limit)\n  - [keycloak_memory_soft_limit](#keycloak_memory_soft_limit)\n  - [keycloak_memory_swap](#keycloak_memory_swap)\n  - [keycloak_metrics_extension_version](#keycloak_metrics_extension_version)\n  - [keycloak_network](#keycloak_network)\n  - [keycloak_number_of_cpus](#keycloak_number_of_cpus)\n  - [keycloak_password](#keycloak_password)\n  - [keycloak_proxy_address_forwarding](#keycloak_proxy_address_forwarding)\n  - [keycloak_pull_image](#keycloak_pull_image)\n  - [keycloak_shell](#keycloak_shell)\n  - [keycloak_startups_path](#keycloak_startups_path)\n  - [keycloak_themes_path](#keycloak_themes_path)\n  - [keycloak_url](#keycloak_url)\n  - [keycloak_user](#keycloak_user)\n  - [keycloak_username](#keycloak_username)\n  - [keycloak_version](#keycloak_version)\n- [Discovered Tags](#discovered-tags)\n- [Dependencies](#dependencies)\n- [License](#license)\n- [Author](#author)\n\n---\n\n## Requirements\n\n- Minimum Ansible version: `2.10`\n\n## Default Variables\n\n### keycloak_cache_owners_auth_sessions_count\n\nCache owners auth sessions count\n\n#### Default value\n\n```YAML\nkeycloak_cache_owners_auth_sessions_count: 1\n```\n\n### keycloak_cache_owners_count\n\nCache owners count\n\n#### Default value\n\n```YAML\nkeycloak_cache_owners_count: 1\n```\n\n### keycloak_command\n\nCommand to pass to Keycloak container\n\n#### Default value\n\n```YAML\nkeycloak_command: \"{{ 'start-dev' if keycloak_version is version('20.0.0', '\u003e=') else\n  '' }}\"\n```\n\n### keycloak_container_extensions_path\n\nPath for providers within the container\n\n#### Default value\n\n```YAML\nkeycloak_container_extensions_path: \"{{ '/opt/keycloak/providers' if keycloak_version\n  is version('20.0.0', '\u003e=') else '/opt/jboss/keycloak/providers' }}\"\n```\n\n### keycloak_container_scripts_path\n\nPath for startup scripts within the container\n\n#### Default value\n\n```YAML\nkeycloak_container_scripts_path: /opt/jboss/startup-scripts\n```\n\n### keycloak_container_themes_path\n\nPath for themes within the container\n\n#### Default value\n\n```YAML\nkeycloak_container_themes_path: \"{{ '/opt/keycloak/themes' if keycloak_version is\n  version('20.0.0', '\u003e=') else '/opt/jboss/keycloak/themes' }}\"\n```\n\n### keycloak_cpu_shares\n\nCPU shares with Docker deployment\n\n#### Default value\n\n```YAML\nkeycloak_cpu_shares:\n```\n\n#### Example usage\n\n```YAML\nkeycloak_cpu_shares: '512'\n```\n\n### keycloak_database_addresses\n\nList of database server addresses\n\n#### Default value\n\n```YAML\nkeycloak_database_addresses: []\n```\n\n#### Example usage\n\n```YAML\nkeycloak_database_addresses:\n  - host1\n  - host2\n  - host3\n```\n\n### keycloak_database_connection\n\nDatabase connectiony type for clustered databases\n\n#### Default value\n\n```YAML\nkeycloak_database_connection:\n```\n\n### keycloak_database_name\n\nDatabase name\n\n#### Default value\n\n```YAML\nkeycloak_database_name: keycloak\n```\n\n### keycloak_database_password\n\nPassword for database connection\n\n#### Default value\n\n```YAML\nkeycloak_database_password:\n```\n\n### keycloak_database_schema\n\nDatabase schema used for PostgreSQL\n\n#### Default value\n\n```YAML\nkeycloak_database_schema:\n```\n\n### keycloak_database_type\n\nDatabase driver\n\n#### Default value\n\n```YAML\nkeycloak_database_type: mariadb\n```\n\n### keycloak_database_username\n\nUsername for database connection\n\n#### Default value\n\n```YAML\nkeycloak_database_username:\n```\n\n### keycloak_default_extensions\n\nList of default extensions\n\n#### Default value\n\n```YAML\nkeycloak_default_extensions:\n  - name: keycloak-metrics-spi.jar\n    state: absent\n  - name: keycloak-metrics-spi-{{ keycloak_metrics_extension_version }}.jar\n    url: https://github.com/aerogear/keycloak-metrics-spi/releases/download/{{ \n      keycloak_metrics_extension_version }}/keycloak-metrics-spi-{{ \n      keycloak_metrics_extension_version }}.jar\n```\n\n#### Example usage\n\n```YAML\nkeycloak_default_extensions:\n  - name: example-from-url\n    url: http://example.com/example.jar\n  - name: example-to-remove\n    state: absent\n```\n\n### keycloak_default_folders\n\nList of default folders to create\n\n#### Default value\n\n```YAML\nkeycloak_default_folders:\n  - /usr/share/keycloak\n```\n\n### keycloak_default_labels\n\nList of default labels to assign to docker command\n\n#### Default value\n\n```YAML\nkeycloak_default_labels: []\n```\n\n### keycloak_default_publish\n\nList of default port publishing\n\n#### Default value\n\n```YAML\nkeycloak_default_publish: []\n```\n\n#### Example usage\n\n```YAML\nkeycloak_default_publish:\n  - 127.0.0.1:9090:9090\n```\n\n### keycloak_default_startups\n\nList of default startup scripts\n\n#### Default value\n\n```YAML\nkeycloak_default_startups: \"{{ [] if keycloak_version is version('20.0.0', '\u003e=') else\n  keycloak_legacy_startups }}\"\n```\n\n#### Example usage\n\n```YAML\nkeycloak_default_startups:\n  - name: example\n    content: |\n      embed-server --server-config=standalone-ha.xml --std-out=echo\n      batch\n      run-batch\n      stop-embedded-server\n  - name: example-from-url\n    url: http://example.com/example.yml\n  - name: example-from-file\n    src: path/to/file.j2\n  - name: example-from-template\n    ansible.builtin.template: path/to/template.j2\n  - name: example-to-remove\n    state: absent\n```\n\n### keycloak_default_themes\n\nList of default themes\n\n#### Default value\n\n```YAML\nkeycloak_default_themes: []\n```\n\n#### Example usage\n\n```YAML\nkeycloak_default_themes:\n  - name: example-from-url\n    url: http://example.com/example.tar.gz\n  - name: example-to-remove\n    state: absent\n```\n\n### keycloak_default_volumes\n\nList of default volumes to mount\n\n#### Default value\n\n```YAML\nkeycloak_default_volumes: []\n```\n\n### keycloak_extensions_path\n\nPath to store extensions\n\n#### Default value\n\n```YAML\nkeycloak_extensions_path: /usr/share/keycloak/extensions\n```\n\n### keycloak_extra_environment\n\nList of extra environment variables\n\n#### Default value\n\n```YAML\nkeycloak_extra_environment: []\n```\n\n#### Example usage\n\n```YAML\nkeycloak_extra_environment:\n  - name: EXAMPLE1\n    value: dummy1\n  - name: EXAMPLE2\n    value: dummy2\n  - name: EXAMPLE3\n    value: dummy3\n```\n\n### keycloak_extra_extensions\n\nList of extra extensions\n\n#### Default value\n\n```YAML\nkeycloak_extra_extensions: []\n```\n\n#### Example usage\n\n```YAML\nkeycloak_extra_extensions:\n  - name: example-from-url\n    url: http://example.com/example.jar\n  - name: example-to-remove\n    state: absent\n```\n\n### keycloak_extra_folders\n\nList of extra folders to create\n\n#### Default value\n\n```YAML\nkeycloak_extra_folders: []\n```\n\n#### Example usage\n\n```YAML\nkeycloak_extra_folders:\n  - /path/to/host/folder1\n  - /path/to/host/folder2\n  - /path/to/host/folder3\n```\n\n### keycloak_extra_labels\n\nList of extra labels to assign to docker command\n\n#### Default value\n\n```YAML\nkeycloak_extra_labels: []\n```\n\n### keycloak_extra_publish\n\nList of extra port publishing\n\n#### Default value\n\n```YAML\nkeycloak_extra_publish: []\n```\n\n#### Example usage\n\n```YAML\nkeycloak_extra_publish:\n  - 8090:8090\n  - 127.0.0.1:9000:9000\n```\n\n### keycloak_extra_startups\n\nList of extra startup scripts\n\n#### Default value\n\n```YAML\nkeycloak_extra_startups: []\n```\n\n### keycloak_extra_themes\n\nList of extra themes\n\n#### Default value\n\n```YAML\nkeycloak_extra_themes: []\n```\n\n#### Example usage\n\n```YAML\nkeycloak_extra_themes:\n  - name: example-from-url\n    url: http://example.com/example.tar.gz\n  - name: example-to-remove\n    state: absent\n```\n\n### keycloak_extra_volumes\n\nList of extra volumes to mount\n\n#### Default value\n\n```YAML\nkeycloak_extra_volumes: []\n```\n\n#### Example usage\n\n```YAML\nkeycloak_extra_volumes:\n  - /path/to/host/folder1:/path/within/container1\n  - /path/to/host/folder2:/path/within/container2\n  - /path/to/host/folder3:/path/within/container3\n```\n\n### keycloak_general_environment\n\nList of general environment variables\n\n#### Default value\n\n```YAML\nkeycloak_general_environment: []\n```\n\n#### Example usage\n\n```YAML\nkeycloak_general_environment:\n  - key: EXAMPLE1\n    value: dummy1\n  - key: EXAMPLE2\n    value: dummy2\n  - key: EXAMPLE3\n    value: dummy3\n```\n\n### keycloak_group\n\nGroup to create for container usage\n\n#### Default value\n\n```YAML\nkeycloak_group: keycloak\n```\n\n### keycloak_hostname\n\nHostname for Keycloak\n\n#### Default value\n\n```YAML\nkeycloak_hostname:\n```\n\n### keycloak_http_relative_path\n\nRelative path to Keycloak\n\n#### Default value\n\n```YAML\nkeycloak_http_relative_path:\n```\n\n### keycloak_image\n\nDocker image to use for deployment\n\n#### Default value\n\n```YAML\nkeycloak_image: quay.io/keycloak/keycloak:{{ keycloak_version }}\n```\n\n### keycloak_jgroups_discovery_enabled\n\nEnable jgroups discovery\n\n#### Default value\n\n```YAML\nkeycloak_jgroups_discovery_enabled: false\n```\n\n### keycloak_jgroups_discovery_external_ip\n\nExternal IP used for jgroups discovery\n\n#### Default value\n\n```YAML\nkeycloak_jgroups_discovery_external_ip:\n```\n\n### keycloak_jgroups_discovery_properties\n\nAdditional properties for jgroups discovery\n\n#### Default value\n\n```YAML\nkeycloak_jgroups_discovery_properties:\n```\n\n### keycloak_jgroups_discovery_protocol\n\nProtocol used for jgroups discovery\n\n#### Default value\n\n```YAML\nkeycloak_jgroups_discovery_protocol:\n```\n\n### keycloak_legacy_startups\n\nList of startup scripts befor 20.0.0\n\n#### Default value\n\n```YAML\nkeycloak_legacy_startups:\n  - name: keycloak\n    ansible.builtin.template: keycloak.j2\n```\n\n### keycloak_loglevel\n\nLogging level for the instance\n\n#### Default value\n\n```YAML\nkeycloak_loglevel: INFO\n```\n\n### keycloak_memory_limit\n\nMemory limit with Docker deployment\n\n#### Default value\n\n```YAML\nkeycloak_memory_limit:\n```\n\n#### Example usage\n\n```YAML\nkeycloak_memory_limit: 1024m\n```\n\n### keycloak_memory_soft_limit\n\nSoft memory limit with Docker deployment\n\n#### Default value\n\n```YAML\nkeycloak_memory_soft_limit:\n```\n\n#### Example usage\n\n```YAML\nkeycloak_memory_soft_limit: 512m\n```\n\n### keycloak_memory_swap\n\nSwap usage with Docker deployment\n\n#### Default value\n\n```YAML\nkeycloak_memory_swap:\n```\n\n#### Example usage\n\n```YAML\nkeycloak_memory_swap: 2048m\n```\n\n### keycloak_metrics_extension_version\n\nVersion of the metrics extension to install\n\n#### Default value\n\n```YAML\nkeycloak_metrics_extension_version: 5.0.0\n```\n\n### keycloak_network\n\nOptionally assign this Docker network to container\n\n#### Default value\n\n```YAML\nkeycloak_network:\n```\n\n### keycloak_number_of_cpus\n\nNumber of CPUs with Docker deployment\n\n#### Default value\n\n```YAML\nkeycloak_number_of_cpus:\n```\n\n#### Example usage\n\n```YAML\nkeycloak_number_of_cpus: '1.0'\n```\n\n### keycloak_password\n\nPassword for master realm access\n\n#### Default value\n\n```YAML\nkeycloak_password:\n```\n\n### keycloak_proxy_address_forwarding\n\nEnable proxy address forwarding\n\n#### Default value\n\n```YAML\nkeycloak_proxy_address_forwarding: true\n```\n\n### keycloak_pull_image\n\nPull image as part of the tasks\n\n#### Default value\n\n```YAML\nkeycloak_pull_image: true\n```\n\n### keycloak_shell\n\nShell of the Keycloak user\n\n#### Default value\n\n```YAML\nkeycloak_shell: /usr/sbin/nologin\n```\n\n### keycloak_startups_path\n\nPath to store startup scripts\n\n#### Default value\n\n```YAML\nkeycloak_startups_path: /usr/share/keycloak/startups\n```\n\n#### Example usage\n\n```YAML\nkeycloak_startups_path:\n  - name: example\n    content: |\n      embed-server --server-config=standalone-ha.xml --std-out=echo\n      batch\n      run-batch\n      stop-embedded-server\n  - name: example-from-url\n    url: http://example.com/example.yml\n  - name: example-from-file\n    src: path/to/file.j2\n  - name: example-from-template\n    ansible.builtin.template: path/to/template.j2\n  - name: example-to-remove\n    state: absent\n```\n\n### keycloak_themes_path\n\nPath to store themes\n\n#### Default value\n\n```YAML\nkeycloak_themes_path: /usr/share/keycloak/themes\n```\n\n### keycloak_url\n\nURL for external access\n\n#### Default value\n\n```YAML\nkeycloak_url:\n```\n\n#### Example usage\n\n```YAML\nkeycloak_url: datasource_jndi_name=java:jboss/datasources/KeycloakDS\n```\n\n### keycloak_user\n\nUser to create for container usage\n\n#### Default value\n\n```YAML\nkeycloak_user: keycloak\n```\n\n### keycloak_username\n\nUsername for master realm access\n\n#### Default value\n\n```YAML\nkeycloak_username:\n```\n\n### keycloak_version\n\nVersion of keycloak to use\n\n#### Default value\n\n```YAML\nkeycloak_version: 26.5.3\n```\n\n## Discovered Tags\n\n**_keycloak_**\n\n## Dependencies\n\n- [rolehippie.docker](https://github.com/rolehippie/docker)\n- [community.docker](https://github.com/ansible-collections/community.docker)\n\n## License\n\nApache-2.0\n\n## Author\n\n[Thomas Boerger](https://github.com/tboerger)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frolehippie%2Fkeycloak","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frolehippie%2Fkeycloak","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frolehippie%2Fkeycloak/lists"}