Dateien nach "keycloak-tf-projekt" hochladen
This commit is contained in:
Generated
+46
@@ -0,0 +1,46 @@
|
||||
# This file is maintained automatically by "terraform init".
|
||||
# Manual edits may be lost in future updates.
|
||||
|
||||
provider "registry.terraform.io/hashicorp/random" {
|
||||
version = "3.7.2"
|
||||
hashes = [
|
||||
"h1:356j/3XnXEKr9nyicLUufzoF4Yr6hRy481KIxRVpK0c=",
|
||||
"zh:14829603a32e4bc4d05062f059e545a91e27ff033756b48afbae6b3c835f508f",
|
||||
"zh:1527fb07d9fea400d70e9e6eb4a2b918d5060d604749b6f1c361518e7da546dc",
|
||||
"zh:1e86bcd7ebec85ba336b423ba1db046aeaa3c0e5f921039b3f1a6fc2f978feab",
|
||||
"zh:24536dec8bde66753f4b4030b8f3ef43c196d69cccbea1c382d01b222478c7a3",
|
||||
"zh:29f1786486759fad9b0ce4fdfbbfece9343ad47cd50119045075e05afe49d212",
|
||||
"zh:4d701e978c2dd8604ba1ce962b047607701e65c078cb22e97171513e9e57491f",
|
||||
"zh:78d5eefdd9e494defcb3c68d282b8f96630502cac21d1ea161f53cfe9bb483b3",
|
||||
"zh:7b8434212eef0f8c83f5a90c6d76feaf850f6502b61b53c329e85b3b281cba34",
|
||||
"zh:ac8a23c212258b7976e1621275e3af7099e7e4a3d4478cf8d5d2a27f3bc3e967",
|
||||
"zh:b516ca74431f3df4c6cf90ddcdb4042c626e026317a33c53f0b445a3d93b720d",
|
||||
"zh:dc76e4326aec2490c1600d6871a95e78f9050f9ce427c71707ea412a2f2f1a62",
|
||||
"zh:eac7b63e86c749c7d48f527671c7aee5b4e26c10be6ad7232d6860167f99dbb0",
|
||||
]
|
||||
}
|
||||
|
||||
provider "registry.terraform.io/keycloak/keycloak" {
|
||||
version = "5.5.0"
|
||||
constraints = "~> 5.0"
|
||||
hashes = [
|
||||
"h1:RLA8lhkI2RRjATxtugbTNXjQ+lEUqMQfkO/Abtl/mQo=",
|
||||
"zh:2c645fe37ad8a4e0285a6e6e11997df4128de378fab947bb199711c4845d0088",
|
||||
"zh:3aa285795fdec20b761f23f62937baf9a771879e8e0a946e21dd999bd323122d",
|
||||
"zh:3cbd0853f60a4eedd0e8e1da372a86548c4363f6486c6ea6b82ff352a59a31df",
|
||||
"zh:4782ea614445ca7c810de840421caf0836d67093045adde9083853456dbf1493",
|
||||
"zh:557fa0b50c1ac08be7d2f3e99856f0d4a3638637ccd86360a5a96f4dd870012e",
|
||||
"zh:5fd4b9a0f6595516a0b5783b3eb5a4768cf8f4a5653f8fde755a5d64cdbe9e58",
|
||||
"zh:6039356cddd9d6ea64da8b470c902dc56ec84ba727521e768d0b6b4d82f4191b",
|
||||
"zh:97029e6e8749d863c2fbbe777a0aa46abb56ce0076a8f6f1a0415b7b1f944ea0",
|
||||
"zh:9f2b26a7112d015691193dd4763c886881419bd4eed19bdd9678f651dc59af8d",
|
||||
"zh:9fd7e9998ecb8863985de1b5500dc2e3dad0e6883c539aa7dcc4cee3f3454932",
|
||||
"zh:b6cc955f63f0a3e8473c3f7ec58c4dfba7749dba947046b1912d77c01ee63980",
|
||||
"zh:b8fe11bdc538348eb52661143293595fce7e6dbe8efa4f661b4bc17b8fa9e887",
|
||||
"zh:b90fe01f658ab6c47747f724b1375765d7678c9f51ac4efe9473521dfe769a62",
|
||||
"zh:d3c997261ac93aa30c193b98c40c69c42416cd94a07e4380d7bd05dfd1ac23e9",
|
||||
"zh:e73723f32cc6f5eb0443ad711a24fb52c3193df18a3e3da7520e9b8726e46cc0",
|
||||
"zh:f610b4294121e327b7474f9e534bd63d932570addd17ca1474607e368f71f768",
|
||||
"zh:fcd7c91c24711fa0f15fa52c2b9fa11d5bbaa8597eba0dafd8cbebe25274b819",
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,56 @@
|
||||
provider "keycloak" {
|
||||
url = var.keycloak_url
|
||||
|
||||
realm = "master"
|
||||
client_id = "admin-cli"
|
||||
|
||||
username = var.keycloak_username
|
||||
password = var.keycloak_password
|
||||
}
|
||||
|
||||
locals {
|
||||
realm_config_files = fileset("./realms", "*.json")
|
||||
all_realm_configs = {
|
||||
for filename in local.realm_config_files :
|
||||
trimsuffix(basename(filename), ".json") => jsondecode(file("${path.module}/realms/${filename}"))
|
||||
}
|
||||
|
||||
# Nimm das ERSTE Objekt in der Liste (den ersten Benutzer)
|
||||
config_user_raw = file("./users.csv")
|
||||
config_user_data = csvdecode(local.config_user_raw)
|
||||
|
||||
user_map_from_csv = {
|
||||
for user_obj in local.config_user_data : user_obj.username => user_obj
|
||||
}
|
||||
}
|
||||
|
||||
resource "keycloak_realm" "test_realm" {
|
||||
for_each = local.all_realm_configs
|
||||
|
||||
realm = each.value.realm
|
||||
enabled = each.value.enabled
|
||||
}
|
||||
|
||||
module "keycloak_clients" {
|
||||
// Der Pfad zu Ihrem Modul-Ordner
|
||||
source = "./modules/clients"
|
||||
|
||||
// Übergabe der Realm ID an die Variable "realm_id" des Moduls
|
||||
realm_id = keycloak_realm.test_realm["first"].id
|
||||
}
|
||||
|
||||
# data "keycloak_openid_client" "web_app_client_data" {
|
||||
# realm_id = keycloak_realm.test_realm["first"].id
|
||||
# client_id = "my-web-app-client"
|
||||
# }
|
||||
|
||||
module "keycloak_users" {
|
||||
source = "./modules/users"
|
||||
|
||||
# Übergabe der Realm ID und der Benutzer-Details
|
||||
realm_id = keycloak_realm.test_realm["first"].id
|
||||
usernames = local.user_map_from_csv
|
||||
|
||||
target_client_id = module.keycloak_clients.all_client_ids_map.my-web-app-client
|
||||
role_to_assign = "user"
|
||||
}
|
||||
@@ -0,0 +1,51 @@
|
||||
# output "admin_pass" {
|
||||
# value = var.keycloak_password
|
||||
# sensitive = true # falls die Ausgabe erwünscht ist. Aber es wird trotzdem <sensitive> angezeigt
|
||||
# }
|
||||
|
||||
# output "admin_url" {
|
||||
# value = var.keycloak_url
|
||||
# }
|
||||
|
||||
# output "web_app_client_id" {
|
||||
# description = "Die ID des OpenID Connect Clients."
|
||||
# value = module.keycloak_clients.web_app_client_id
|
||||
# }
|
||||
|
||||
# output "web_app_client_secret" {
|
||||
# description = "Das automatisch generierte Client Secret der Webanwendung."
|
||||
# // Der Wert wird direkt aus dem Attribut der erstellten Ressource gelesen.
|
||||
# value = module.keycloak_clients.web_app_client_secret
|
||||
# sensitive = true // 🔒 Markiert das Secret als sensibel
|
||||
# }
|
||||
|
||||
# output "client_secrets" {
|
||||
# description = "Alle Client Secrets der konfigurierten Keycloak Clients (Map)."
|
||||
# // Greift auf den Map-Output des Moduls zu
|
||||
# value = module.keycloak_clients.all_client_secrets_map
|
||||
# sensitive = true
|
||||
# }
|
||||
|
||||
# output "user_initial_password" {
|
||||
# description = "Alle generierten Benutzer-Passwörter."
|
||||
# value = module.keycloak_users.all_generated_passwords
|
||||
# sensitive = true
|
||||
# }
|
||||
|
||||
# output "debug_csv_content" {
|
||||
# description = "Zeigt den Inhalt der CSV nach dem Dekodieren an."
|
||||
# # 💡 Zeigt die Liste von Objekten, die csvdecode erzeugt hat
|
||||
# value = local.config_user_data
|
||||
# }
|
||||
|
||||
# output "debug_other_content" {
|
||||
# description = "Zeigt den Inhalt der CSV nach dem Dekodieren an."
|
||||
# # 💡 Zeigt die Liste von Objekten, die csvdecode erzeugt hat
|
||||
# value = local.all_realm_configs
|
||||
# }
|
||||
|
||||
# output "test" {
|
||||
# # 💡 Zeigt die Liste von Objekten, die csvdecode erzeugt hat
|
||||
# value = path.module
|
||||
# sensitive = false
|
||||
# }
|
||||
@@ -0,0 +1,2 @@
|
||||
keycloak_url = "https://lt642223.regioit.local"
|
||||
keycloak_username = "admin"
|
||||
@@ -0,0 +1,16 @@
|
||||
username,email,first_name
|
||||
maria.schmidt,maria.s@example.com,Maria
|
||||
sebastian.bauer,sebastian.b@example.com,Sebastian
|
||||
lena.fischer,lena.f@example.com,Lena
|
||||
david.schuster,david.s@example.com,David
|
||||
anna.maier,anna.m@example.com,Anna
|
||||
thomas.walter,thomas.w@example.com,Thomas
|
||||
julia.koehler,julia.k@example.com,Julia
|
||||
ben.huber,ben.h@example.com,Ben
|
||||
laura.vogt,laura.v@example.com,Laura
|
||||
max.meyer,max.m@example.com,Max
|
||||
sarah.wagner,sarah.w@example.com,Sarah
|
||||
chris.lang,chris.l@example.com,Chris
|
||||
emily.neuer,emily.n@example.com,Emily
|
||||
niklas.winter,niklas.w@example.com,Niklas
|
||||
sophia.weber,sophia.w@example.com,Sophia
|
||||
|
@@ -0,0 +1,18 @@
|
||||
variable "keycloak_url" {
|
||||
description = "Die vollständige URL zur Keycloak-Instanz (z.B. http://localhost:8080)"
|
||||
type = string
|
||||
}
|
||||
|
||||
variable "keycloak_username" {
|
||||
description = "Der Benutzername des Master-Admins"
|
||||
type = string
|
||||
}
|
||||
|
||||
variable "keycloak_password" {
|
||||
description = "Das Passwort des Master-Admins"
|
||||
type = string
|
||||
sensitive = true # 💡 Wichtig: Maskiert den Wert in der CLI-Ausgabe (plan/apply)
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -0,0 +1,10 @@
|
||||
terraform {
|
||||
required_providers {
|
||||
// Definiert den Keycloak Provider
|
||||
keycloak = {
|
||||
source = "keycloak/keycloak"
|
||||
version = "~> 5.0"
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user