Files
iac-homelab/cloud-init/user-data-alpine.yml.tftpl
Damien 41dae6a086
Some checks failed
Terraform PR / Validate (pull_request) Successful in 5s
Terraform PR / Plan (pull_request) Has been cancelled
Add DNS server configuration for Alpine Linux
2026-06-10 08:49:50 +02:00

57 lines
1.6 KiB
Plaintext

#cloud-config
# 1. Hostname configuration
hostname: ${hostname}
fqdn: ${hostname}
preserve_hostname: false
# 2. User creation
# On Alpine, the privilege escalation group is "wheel" (not "sudo").
# Keep the default shell (ash/busybox) to stay lightweight.
users:
- name: ${username}
sudo: ALL=(ALL) NOPASSWD:ALL
groups: wheel
ssh_authorized_keys:
- ${ssh_key}
# 3. Base system files (DNS + apk repos, written before package_update)
# Alpine has no netplan/systemd-resolved, so we write resolv.conf ourselves.
write_files:
- path: /etc/resolv.conf
owner: root:root
permissions: '0644'
content: |
nameserver ${dns_server}
- path: /etc/apk/repositories
owner: root:root
permissions: '0644'
content: |
http://dl-cdn.alpinelinux.org/alpine/edge/main
http://dl-cdn.alpinelinux.org/alpine/edge/community
# 4. System update (apk)
package_update: true
package_upgrade: true
# 5. Package installation
# - qemu-guest-agent: main repo (required so Proxmox/Terraform can read the VM IP)
# - tailscale: community repo
packages:
- qemu-guest-agent
- curl
- sudo
- tailscale
# 6. Services & configuration (OpenRC, not systemd)
# Intentional order: qemu-guest-agent first to unblock Terraform as soon as possible.
runcmd:
# Enable and start qemu-guest-agent via OpenRC
- [ rc-update, add, qemu-guest-agent, default ]
- [ rc-service, qemu-guest-agent, start ]
# Enable and start Tailscale via OpenRC
- [ rc-update, add, tailscale, default ]
- [ rc-service, tailscale, start ]
# Register the node with the tailnet
- [ tailscale, up, --authkey=${tailscale_auth_key}, --hostname=${vm_name} ]