Added keycloak role

This commit is contained in:
Kevin Veen-Birkenbach 2025-01-21 00:19:59 +01:00
parent 4cae0ec883
commit 70d55829b1

View File

@ -1,12 +1,94 @@
# docker-keycloak
## More Information
- https://www.keycloak.org/
- https://github.com/keycloak/keycloak
- https://en.wikipedia.org/wiki/Keycloak
- https://www.keycloak.org/server/containers
- https://www.youtube.com/watch?v=fvxQ8bW0vO8
- https://www.keycloak.org/server/reverseproxy
- https://skycloak.io/blog/how-to-run-keycloak-behind-a-reverse-proxy/
- https://github.com/keycloak/keycloak/issues/12913
- https://www.keycloak.org/server/hostname
## Description 🌟
This role automates the setup and configuration of Keycloak in a Docker environment.
Keycloak is an open-source identity and access management solution.
The role integrates Keycloak with PostgreSQL as a database and supports operation behind a reverse proxy like NGINX.
## Features ✨
- Set up Keycloak as a Docker container.
- Use PostgreSQL as the database.
- Customizable configuration of Keycloak environment variables.
- Support for running behind a reverse proxy (e.g., NGINX).
- Automatic creation and management of Docker Compose files.
## Requirements 📋
- Docker and Docker Compose must be installed on the target system.
- A working NGINX proxy for forwarding requests to Keycloak (optional).
## Variables ⚙️
### Main Variables
Defined in `vars/main.yml`:
| Variable | Description |
|---------------------------------|------------------------------------------------------------------|
| `docker_compose_project_name` | Name of the Docker Compose project. Default: `keycloak`. |
| `database_type` | Type of the database. Default: `postgres`. |
| `database_password` | Password for the PostgreSQL database user. |
### Additional Variables (Templates)
| Variable | Description |
|---------------------------------|------------------------------------------------------------------|
| `keycloak_version` | Version of the Keycloak image. |
| `domain` | Domain where Keycloak will be accessible. |
| `keycloak_administrator_username` | Admin username for Keycloak. |
| `keycloak_administrator_password` | Admin password for Keycloak. |
| `database_host` | Host of the PostgreSQL database. |
| `database_name` | Name of the PostgreSQL database. |
| `database_username` | Username for the PostgreSQL database. |
| `http_port` | Port where Keycloak will be accessible (default: `8080`). |
| `docker_restart_policy` | Docker restart policy (e.g., `always`, `unless-stopped`). |
## Tasks 🛠️
The role performs the following main tasks:
1. **Include database and proxy configuration files:**
- Integration of a PostgreSQL database.
- Setup of a reverse proxy for the domain.
2. **Generate `docker-compose.yml`:**
- Automatically generate the Docker Compose file based on templates and variables.
3. **Start Docker containers:**
- The role launches the Keycloak project using Docker Compose.
## Example: Usage 🚀
Here is an example of how to use this role in a playbook:
```yaml
- name: Setup Keycloak with Docker
hosts: all
vars:
domain: "auth.example.com"
keycloak_version: "21.1.0"
keycloak_administrator_username: "admin"
keycloak_administrator_password: "securepassword"
database_host: "db.example.com"
database_name: "keycloak_db"
database_username: "keycloak_user"
database_password: "securedbpassword"
http_port: 8080
docker_restart_policy: "unless-stopped"
roles:
- docker-keycloak
```
## More Information 📚
For more details about Keycloak, check out:
- [Official Keycloak Documentation](https://www.keycloak.org/)
- [GitHub Repository](https://github.com/keycloak/keycloak)
- [Setting up Keycloak behind a Reverse Proxy](https://www.keycloak.org/server/reverseproxy)
- [Wikipedia][https://en.wikipedia.org/wiki/Keycloak]
- [Youtube Tutorial](https://www.youtube.com/watch?v=fvxQ8bW0vO8)
---
### Author ✍️
**Kevin Veen-Birkenbach**
[veen.world](https://www.veen.world/)