Add Alpine and systemd cloud-init templates
This commit is contained in:
52
cloud-init/user-data-alpine.yml.tftpl
Normal file
52
cloud-init/user-data-alpine.yml.tftpl
Normal file
@@ -0,0 +1,52 @@
|
||||
#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. apk repositories configuration
|
||||
# Pin the two repositories used on this homelab: edge/main + edge/community.
|
||||
# Written BEFORE package_update/package_upgrade so apk uses this config immediately.
|
||||
write_files:
|
||||
- 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} ]
|
||||
32
cloud-init/user-data-systemd.yml.tftpl
Normal file
32
cloud-init/user-data-systemd.yml.tftpl
Normal file
@@ -0,0 +1,32 @@
|
||||
#cloud-config
|
||||
|
||||
# 1. Hostname configuration
|
||||
hostname: ${hostname}
|
||||
fqdn: ${hostname}
|
||||
preserve_hostname: false
|
||||
|
||||
# 2. User creation
|
||||
users:
|
||||
- name: ${username}
|
||||
sudo: ALL=(ALL) NOPASSWD:ALL
|
||||
groups: sudo, admin
|
||||
shell: /bin/bash
|
||||
ssh_authorized_keys:
|
||||
- ${ssh_key}
|
||||
|
||||
# 3. System update
|
||||
package_update: true
|
||||
package_upgrade: true
|
||||
|
||||
# 4. Package installation
|
||||
packages:
|
||||
- qemu-guest-agent
|
||||
- curl
|
||||
|
||||
# 5. Tailscale installation and configuration
|
||||
runcmd:
|
||||
# Enable and start qemu-guest-agent (systemd)
|
||||
- [ systemctl, enable, qemu-guest-agent, --now ]
|
||||
# Install and configure Tailscale
|
||||
- [ sh, -c, "curl -fsSL https://tailscale.com/install.sh | sh" ]
|
||||
- [ tailscale, up, --authkey=${tailscale_auth_key}, --hostname=${vm_name} ]
|
||||
Reference in New Issue
Block a user