Monté un clúster K3s completo en una mañana
De cero a producción: Terraform en Proxmox crea las VMs, Ansible instala K3s. Lo que antes me tomaba meses, ahora en una sesión. Todos los archivos, copiables y descargables.
La idea
Terraform crea las máquinas virtuales en Proxmox y Ansible instala K3s encima. Todo como código: reproducible, versionado y tuyo. Aquí tienes los archivos reales — cópialos o descárgalos abajo y móntalo tú mismo.
1. Terraform define el clúster
En main.tf declaras el provider de Proxmox y todos los nodos en un solo sitio.
Cambiar el tamaño del clúster es editar este mapa:
provider "proxmox" {
endpoint = var.proxmox_endpoint
api_token = var.proxmox_api_token
insecure = true
ssh {
agent = false
username = "root"
private_key = file("~/.ssh/id_ed25519")
}
}
locals {
nodes = {
"201" = { name = "k3s-master-1", ip = "192.168.1.201" }
"202" = { name = "k3s-worker-1", ip = "192.168.1.202" }
"203" = { name = "k3s-worker-2", ip = "192.168.1.203" }
"204" = { name = "k3s-worker-3", ip = "192.168.1.204" }
"205" = { name = "k3s-worker-4", ip = "192.168.1.205" }
}
}
El token de Proxmox nunca va en el código: vive en
variables.tf(marcadosensitive) y su valor real en tuterraform.tfvars, que no se sube a git.
2. Ansible instala K3s
Una vez creadas las VMs, el playbook.yml prepara los nodos e instala K3s
(master + workers). El truco es la idempotencia: se puede correr mil veces y
siempre deja el sistema igual. Los workers se unen al clúster así:
- name: Instalar K3s Agent (Workers) y unir al clúster
ansible.builtin.shell: |
curl -sfL https://get.k3s.io | \
K3S_URL="https://{{ hostvars[groups['k3s_master'][0]]['ansible_host'] }}:6443" \
K3S_TOKEN="{{ hostvars[groups['k3s_master'][0]]['k3s_token'] }}" sh -
args:
creates: /usr/local/bin/k3s-agent
Lo que aprendí
Lo que me tomó seis meses la primera vez, ahora lo monto en un día. No es magia — es haber convertido cada paso en código.
Descarga los tres archivos completos abajo (main.tf, variables.tf, playbook.yml)
y pruébalo. Cualquier duda, al Discord.
wget ~/archivos
