64 lines
1.7 KiB
Terraform
64 lines
1.7 KiB
Terraform
terraform {
|
|
required_providers {
|
|
proxmox = {
|
|
source = "telmate/proxmox"
|
|
version = "~> 2.9"
|
|
}
|
|
}
|
|
}
|
|
|
|
provider "proxmox" {
|
|
pm_api_url = var.proxmox_host
|
|
pm_api_token_id = var.proxmox_token_id
|
|
pm_api_token_secret = var.proxmox_token_secret
|
|
pm_tls_insecure = true
|
|
}
|
|
|
|
# Create staging LXC mit pct-Befehl
|
|
resource "null_resource" "staging_lxc" {
|
|
provisioner "local-exec" {
|
|
command = <<-EOT
|
|
pct create 200 \
|
|
${var.lxc_ostemplate} \
|
|
--hostname hugo-staging \
|
|
--cores ${var.lxc_cores} \
|
|
--memory ${var.lxc_memory} \
|
|
--swap ${var.lxc_swap} \
|
|
--rootfs ${var.lxc_rootfs} \
|
|
--net0 name=eth0,bridge=${var.lxc_bridge},ip=${var.staging_ip}/24,gw=${var.staging_gw} \
|
|
--unprivileged 1 \
|
|
--start 1 \
|
|
--password '${var.root_password}' \
|
|
--ssh-public-keys '${var.ssh_public_key}' \
|
|
2>/dev/null || true
|
|
EOT
|
|
}
|
|
|
|
provisioner "local-exec" {
|
|
command = "sleep 10"
|
|
}
|
|
|
|
provisioner "local-exec" {
|
|
command = <<-EOT
|
|
pct enter 200 -- bash -c '
|
|
apt-get update -qq &&
|
|
apt-get install -y hugo nginx git rsync curl &&
|
|
systemctl enable --now nginx &&
|
|
useradd -m -s /bin/bash deploy 2>/dev/null || true &&
|
|
mkdir -p /home/deploy/.ssh &&
|
|
chmod 700 /home/deploy/.ssh &&
|
|
echo "${var.ssh_public_key}" >> /home/deploy/.ssh/authorized_keys &&
|
|
chmod 600 /home/deploy/.ssh/authorized_keys &&
|
|
chown -R deploy:deploy /home/deploy/.ssh &&
|
|
mkdir -p /var/www/html &&
|
|
chown -R deploy:deploy /var/www/html &&
|
|
echo "✅ Staging VM Setup complete!"
|
|
'
|
|
EOT
|
|
}
|
|
}
|
|
|
|
output "staging_ip" {
|
|
value = "${var.staging_ip}/24"
|
|
}
|