- HCL 100%
| .gitignore | ||
| .terraform.lock.hcl | ||
| data.tf | ||
| dns.tf | ||
| git-server.tf | ||
| image.tf | ||
| keypair.tf | ||
| network-interface.tf | ||
| network.tf | ||
| outputs.tf | ||
| provider.tf | ||
| public-ip.tf | ||
| README.md | ||
| security.tf | ||
| variables.tf | ||
| versions.tf | ||
Forgejo-Infrastruktur auf STACKIT
Dieses Repository stellt eine minimale Forgejo-Umgebung in der STACKIT-Cloud mit Terraform/OpenTofu bereit.
Es erstellt:
- ein projektbezogenes Netzwerk
- einen Server mit Ubuntu 24.04
- eine öffentliche IP und einen DNS-Eintrag
- eine Sicherheitsgruppe mit SSH-, HTTP- und HTTPS-Zugriff
- ein eigenes SSH-Schlüsselpaar für die Administration
Die Bereitstellung ist für eine einzelne Forgejo-Instanz hinter einem öffentlichen Hostnamen gedacht.
Architektur
Die Terraform-Konfiguration erstellt die folgenden Ressourcen:
stackit_network.forgejo— privates Netzwerk im CIDR10.10.0.0/24stackit_network_interface.git_server— angehängte Netzwerkschnittstelle für den Serverstackit_public_ip.git_server— öffentliche IPv4 für die VMstackit_server.git_server— Ubuntu-24.04-VM für Forgejostackit_security_group.git_server— Regeln für SSH-, HTTP- und HTTPS-Zugriffstackit_dns_zone.forgejoundstackit_dns_record_set.forgejo— öffentlicher DNS-Eintrag für den Dienststackit_key_pair.admin— SSH-Schlüssel aus~/.ssh/id_ed25519.pub
Der Server heißt git-01, und der DNS-Zielname ist:
forgejo-trace-team.stackit.run
Voraussetzungen
Bevor du dieses Projekt ausführst, stelle sicher, dass du Folgendes hast:
- Terraform oder OpenTofu installiert, Version
>= 1.13.0 - ein aktives STACKIT-Konto
- eine STACKIT-Projekt-ID
- einen gültigen öffentlichen SSH-Schlüssel unter
~/.ssh/id_ed25519.pub - Zugriff auf die STACKIT-API
Benötigte Variablen
Die Konfiguration erwartet diese Variablen in terraform.tfvars:
project_id— STACKIT-Projekt-IDadmin_cidr— deine öffentliche IP im CIDR-Format, zum Beispiel203.0.113.42/32ubuntu_image_id— die Image-ID für Ubuntu 24.04 in deinem STACKIT-Projekt
Ein Beispiel für terraform.tfvars sieht so aus:
project_id = "<deine-project-id>"
admin_cidr = "203.0.113.42/32"
ubuntu_image_id = "<ubuntu-24.04-image-id>"
Initialisierung
Initialisiere das Arbeitsverzeichnis:
terraform init
Wenn du OpenTofu verwendest, geht das so:
tofu init
Planung und Deployment
Führe einen Plan aus, um die Infrastruktur zu prüfen:
terraform plan
Wende die Konfiguration an:
terraform apply
Outputs
Die Terraform-Konfiguration liefert folgende Ausgaben:
project_nameproject_idubuntu_image_id
Du kannst sie mit folgendem Befehl anzeigen:
terraform output
Zugriff
Der SSH-Zugriff ist auf das in admin_cidr definierte CIDR-Netz auf Port 22 beschränkt.
Der Forgejo-Server öffnet zusätzlich:
80/tcpfür HTTP-Redirect / Zertifikatsausstellung443/tcpfür HTTPS222/tcpfür Git-SSH-Zugriff
Nützliche Befehle
Aktuellen Status prüfen:
terraform state list
Bereitstellung löschen:
terraform destroy
Hinweise
- Der Provider ist auf die STACKIT-Region
eu01konfiguriert. - Der Server verwendet die Standard-Availability Zone
eu01-1, sofern du sie nicht überschreibst. - Dieses Repo ist für eine einfache, einzelne Forgejo-Instanz gedacht und kein vollständiger HA-Production-Setup.
Lizenz
Dieses Projekt dient der automatisierten Bereitstellung von Infrastruktur. Passe die Lizenz nach deinen Anforderungen und deinem Umfeld an.