This commit is contained in:
@@ -17,35 +17,30 @@ jobs:
|
|||||||
# Wir übergeben die Secrets als Environment-Variablen an den SSH-Befehl
|
# Wir übergeben die Secrets als Environment-Variablen an den SSH-Befehl
|
||||||
envs: HETZNER_TOKEN
|
envs: HETZNER_TOKEN
|
||||||
script: |
|
script: |
|
||||||
set-e
|
set -e
|
||||||
mkdir -p /root/iac
|
mkdir -p /root/iac
|
||||||
cd /root/iac
|
cd /root/iac
|
||||||
|
|
||||||
# Repository aktualisieren
|
# Repository aktualisieren
|
||||||
if [ ! -d ".git" ]; then
|
if [ ! -d ".git" ]; then
|
||||||
git clone https://git.bana.space/krumbelfix/iac.git .
|
git clone https://git.bana.space/krumbelfix/iac.git .
|
||||||
else
|
else
|
||||||
git pull origin main
|
git pull origin main
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Sicherstellen, dass die Datei existiert
|
# Datei komplett neu schreiben (verhindert Syntax-Chaos)
|
||||||
mkdir -p ./hetzner
|
# Wir schreiben hier alle benötigten Variablen sauber rein
|
||||||
touch ./hetzner/terraform.tfvars
|
cat <<EOF > ./hetzner/terraform.tfvars
|
||||||
|
hcloud_token = "${HETZNER_TOKEN}"
|
||||||
|
distro_id = "ubuntu"
|
||||||
|
EOF
|
||||||
|
|
||||||
# Token suchen und ersetzen oder hinzufügen
|
# Terraform ausführen
|
||||||
# Wir nutzen doppelte Anführungszeichen für den Bash-String und
|
# Wir geben die Datei explizit mit -var-file an, um sicherzugehen
|
||||||
# einfache für den sed-Befehl, um Konflikte zu vermeiden.
|
terraform init
|
||||||
if grep -q "hcloud_token =" ./hetzner/terraform.tfvars; then
|
terraform plan -var-file="./hetzner/terraform.tfvars"
|
||||||
sed -i "s|^hcloud_token =.*|hcloud_token = \"${HETZNER_TOKEN}\"|" ./hetzner/terraform.tfvars
|
terraform apply -auto-approve -var-file="./hetzner/terraform.tfvars"
|
||||||
else
|
|
||||||
echo "hcloud_token = \"${HETZNER_TOKEN}\"" >> ./hetzner/terraform.tfvars
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Terraform
|
echo "Deployment successful"
|
||||||
terraform init
|
|
||||||
terraform plan
|
|
||||||
terraform apply -auto-approve
|
|
||||||
|
|
||||||
echo "Deployment successful"
|
|
||||||
env:
|
env:
|
||||||
HETZNER_TOKEN : ${{ secrets.HETZNER_TOKEN }}
|
HETZNER_TOKEN : ${{ secrets.HETZNER_TOKEN }}
|
||||||
|
|||||||
11
main.tf
11
main.tf
@@ -10,6 +10,7 @@ locals {
|
|||||||
username = var.username
|
username = var.username
|
||||||
ssh_public_key = var.ssh_public_key
|
ssh_public_key = var.ssh_public_key
|
||||||
distro_id = vars.distro_id
|
distro_id = vars.distro_id
|
||||||
|
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -74,3 +75,13 @@ resource "hcloud_firewall_attachment" "vps" {
|
|||||||
firewall_id = hcloud_firewall.vps.id
|
firewall_id = hcloud_firewall.vps.id
|
||||||
server_ids = [hcloud_server.vps.id]
|
server_ids = [hcloud_server.vps.id]
|
||||||
}
|
}
|
||||||
|
variable "distro_id" {
|
||||||
|
type = string
|
||||||
|
default = "ubuntu"
|
||||||
|
}
|
||||||
|
|
||||||
|
variable "hcloud_token" {
|
||||||
|
description = "Hetzner Cloud API token"
|
||||||
|
type = string
|
||||||
|
sensitive = true
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user