Archivo del blog

Mostrando entradas con la etiqueta VM. Mostrar todas las entradas
Mostrando entradas con la etiqueta VM. Mostrar todas las entradas

25 agosto 2026

Ansible: Poniendo orden en mi laboratorio Proxmox

Automatiza la gestión de tus máquinas virtuales y contenedores sin esfuerzo.

Tengo ya cómo unas diez máquinas Linux funcionando en Proxmox: Debian, Ubuntu y Alpine, cada una haciendo sus tareas diarias. Además, un Windows 11 y un Windows Server Core 2019 para las pruebas de SSCM y Azure que estoy haciendo.

Al principio no supone demasiado trabajo mantenerlas. Pero cuando empiezas a tener varias máquinas, repetir las mismas tareas una y otra vez empieza a ser bastante aburrido. Y aburrido, en este oficio, significa peligroso (porque acabas haciendo las cosas a lo loco).

Así que decidí probar Ansible. Y este es el manual de cómo lo estoy montando, con sus fallos y sus soluciones.


¿Qué quiero conseguir? 

La idea no es montar una infraestructura empresarial ni complicarnos la vida, eso ya lo hacemos en el trabajo. Quiero poder administrar mi laboratorio desde un único sitio. Nada más. Y nada menos.

 

Tabla de objetivos (con su estado real):

ObjetivoEstado
Comprobar que todas las máquinas están disponibles✅ Hecho
Actualizar Debian y Ubuntu (apt)✅ Hecho
Actualizar Alpine (apk)✅ Hecho
Gestionar servicios (start/stop/restart)🔄 En progreso
Instalar software🔄 En progreso
Crear usuarios🔄 En progreso
Ejecutar comandos remotos✅ Hecho
Automatizar tareas repetitivas🔄 En progreso
Actualizar Windows⏳ Pendiente (requiere WinRM)
Registrar qué ha ocurrido (logs)🔄 En progreso


Mi laboratorio

Para este manual voy a utilizar un escenario bastante parecido al que podemos encontrar en un laboratorio doméstico o de pruebas:

                         PROXMOX
                            │
             ┌──────────────┴──────────────┐
             │                             │
       ANSIBLE CONTROLLER              OTRAS VM/LXC
          Debian Linux                     │
             │                             │
      ┌──────┼────────┬─────────┐          │
      │      │        │         │          │
    Debian  Ubuntu  Alpine    Debian     Windows
      │      │        │         │        ┌───┴────┐
      │      │        │         │        │        │
     VM/LXC VM/LXC  VM/LXC    VM/LXC    Win11  WServerCore2019

No hace falta que todas las máquinas sean iguales para que esto funcione, de hecho, esa es precisamente la gracia. Tenemos diferentes distribuciones, diferentes servicios y también Windows.


¿Por qué necesito Ansible?

Imaginemos que quiero actualizar todos mis Debian y Ubuntu.

Sin Ansible:

SSH → Debian 1 → apt update &&  apt full-upgrade -y
SSH → Debian 2 → apt update &&  apt full-upgrade -y
SSH → Ubuntu 1 → apt update &&  apt full-upgrade -y
SSH → Debian 3 → apt update &&  apt full-upgrade -y
...

Y si tengo diez máquinas, acabamos haciendo lo mismo diez veces.

Con Ansible:

ansible servidores -m apt -a "update_cache=yes"

Y Ansible se encarga del resto.

Una orden. Todas las máquinas. Más tiempo para mí.


Pero tengo Alpine...

Aquí aparece una situación interesante de nuestro laboratorio.

Alpine Linux utiliza apk, mientras que Debian y Ubuntu utilizan apt.

No podemos tratar todas las máquinas exactamente igual.

Podemos organizar el inventario:

[debian]
debian01
debian02
debian03

[ubuntu]
ubuntu01
ubuntu02

[alpine]
alpine01
alpine02

[windows]
windows11
servercore2019

Ahora podemos decidir qué hacer con cada grupo.

Por ejemplo:

Debian/Ubuntu → apt
Alpine        → apk
Windows       → WinRM

Y esto nos permite empezar a ver por qué Ansible resulta tan interesante cuando nuestro laboratorio empieza a crecer.


¿Y Windows?

También vamos a tocar Windows.

En nuestro laboratorio tenemos:

  • Windows 11 Pro
  • Windows Server Core 2019

Ansible puede administrar Windows, aunque la comunicación y algunas tareas son diferentes a Linux.

Esto nos permitirá ver algo bastante útil:

                    Ansible
                       │
          ┌────────────┴────────────┐
          │                         │
        Linux                     Windows
          │                         │
    ┌─────┼─────┐              ┌────┴─────┐
    │     │     │              │          │
  Debian Ubuntu Alpine        Win11   Server Core

Así que el manual no será simplemente:

"Instala Ansible y ejecuta ping".

La idea será llevarlo desde cero hasta utilizarlo realmente en un laboratorio heterogéneo.


El objetivo del manual

Al terminar tendremos algo parecido a esto:

                    ┌─────────────────┐
                    │    PROXMOX      │
                    └────────┬────────┘
                             │
                    ┌────────▼────────┐
                    │ Debian Ansible  │
                    │    Controller   │
                    └────────┬────────┘
                             │
             ┌───────────────┼────────────────┐
             │               │                │
             ▼               ▼                ▼
          Linux           Linux           Windows
        Debian/Ubuntu     Alpine          Win11
                                          Server 2019

Y desde nuestro Debian podremos hacer cosas como:

Actualizar servidores

ansible linux -m ...

Comprobar máquinas

ansible all -m ping

Instalar paquetes

ansible debian -m ...

Gestionar servicios

ansible linux -m ...

Y, sobre todo, empezar a crear Playbooks, que serán los que realmente nos permitirán automatizar nuestro laboratorio.

Lo primero: instalar Ansible en el nodo controlador

Un solo nodo Debian será el “jefe” que habla con todos los demás.

Requisitos previos:

  • Un Debian 12 recién instalado (o cualquiera que tengas).
  • Acceso por SSH a todas las máquinas objetivo (con clave pública, no contraseña).
  • Python 3 (viene por defecto en Debian 12).

Instalación (en el nodo controlador):

# Actualiza el sistema
sudo apt update && sudo apt upgrade -y # Instala Ansible (desde los repos oficiales de Debian)
sudo apt install -y ansible # Verifica la instalación
ansible --versión # Verifica la versión de Phyton
python3 --version


🔑 Paso 2: Generar clave SSH para Ansible


Objetivo: Ansible se autentica sin contraseña hacia Debian/Ubuntu/Alpine y también más adelante hacia Windows (WinRM aparte).

Ahora en el controller, que en nuestro caso es en la MV Debian que tenemos en Proxmox, tenemos que ejecutar el código:


ssh-keygen -t ed25519 -b 4096 -C "ansible-controller" -f ~/.ssh/id_ed25519


    Te va a pedir passphrase: Pero lo dejamos en blanco para el laboratorio, aunque en producción tendrías que usar un usuario y contraseña segura.

📤 Paso 3: Copiar la clave pública a todas las VMs/LXC

Vamos por lo simple: ssh-copy-id

Asumiendo que el usuario destino en Linux es el mismo en todas (ej. debian/ubuntu/alpine), por ejemplo:

*NdelA: En un entorno de producción, el usuario no debe de ser nunca el "root" o Administrador en Windows por seguridad, en el lab, pues lo dejamos como queramos ;-)


ssh-copy-id -i ~/.ssh/id_ed25519.pub debian@debian01

ssh-copy-id -i ~/.ssh/id_ed25519.pub ubuntu@ubuntu01

ssh-copy-id -i ~/.ssh/id_ed25519.pub root@alpine01

y así en todos los equipos que tengamos...


📌 Ojo: Revisa esto antes de empezar con el SSH.

Resulta que tenemos bloqueado el SSH con el usuario root, para habilitarlo tenemos que hacer esto:

nano /etc/ssh/sshd_config y descomentamos la línea: PasswordAuthentication y le ponemos un YES en vez de lo que tiene: 



Verás que en el Alpine, no viene configurado el Python3, viene bastante pelado por defecto, por lo que tendremos que instalarlo para que funcione:

apk update && apk add python3


Luego hacemos un python3 --version para ver si lo tenemos instalado:


🗂️ Paso 5: Inventario Ansible (para que luego todo encaje)

Ahora vamos a crear un inventario sencillo, por ejemplo:

Vamos a crear una carpeta ~/ansible-lab y dentro hacemos el fichero: inventory.ini con los nodos.



y creamos el fichero inventory.ini



Y lo probamos:

ansible pihole -i inventory.ini -m ping


Nos aparece un hermoso Warning, no te alarmes, es un aviso de Ansible sobre el descubrimiento automático de Python.
Mientras vemos que tenemos un pong, nos alegra ver que funciona.

Si te molesta el warning dichoso como a mí, en el inventory.ini, tienes que añadir una línea
que indique explícitamente qué intérprete Python debe usar Ansible.

[linux:vars]
ansible_python_interpreter=/usr/bin/python3


Y con eso ya no nos sale el warning.

Ejecutamos el ansible linux -i inventory.ini -m setup -a 'filter=ansible_distribution'
y nos dice las máquinas que tenemos online:


Playbooks


Ahora vamos con los playbooks con lo que queremos que hagan:

Primer creamos una carpeta dentro en la misma altura donde teníamos creado el inventory.ini:


Y aquí empieza lo bueno: vamos a crear un único Playbook que:
Detecte el sistema operativo.
Use apt en Debian/Ubuntu.
Use apk en Alpine.
Actualice los paquetes.
Nos muestre claramente qué ha hecho.
No ejecute nada en Windows.


creamos nuestro primer yml, lo vamos a llamar update-linux.yml con el contenido:



y una vez creado vamos a ejecutarlo:

ansible-playbook -i inventory.ini playbooks/update-linux.yml


Y ya tenemos los equipos actualizados.

Y como guinda del pastel, creamos una tarea para que lo lance semanalmente

 

Y con esto tenemos ya un laboratorio Linux completamente gestionado desde Ansible.

Hemos aprendido a:

✅ Instalar Ansible en nuestro controlador Debian
✅ Configurar acceso SSH mediante claves
✅ Crear un inventario organizado por grupos
✅ Ejecutar comandos remotos
✅ Comprobar el estado de las máquinas
✅ Detectar distribuciones automáticamente
✅ Actualizar Debian, Ubuntu y Alpine desde un único Playbook

Todo ello desde una sola consola y sin necesidad de ir conectándonos máquina por máquina.


¿Y Windows?

Windows se ha quedado aparcado por ahora.

No porque Ansible no pueda gestionarlo, sino porque requiere una configuración adicional mediante WinRM, certificados, reglas de firewall y algunos ajustes que merece la pena explicar con calma para no volvernos locos a la primera prueba.

Además, quiero enseñarlo funcionando tanto contra Windows 11 como contra Windows Server Core 2019, que es donde realmente se pone interesante.

Pero si le dais cariño al post, prometo hacer una segunda vuelta.
De momento sigo de vacaciones, así que toca disfrutar un poco antes de volver a pelearme
con WinRM... 😄

30 agosto 2025

🚀 Cómo actualizar Proxmox VE 8 a 9 sin morir en el intento

 Si usas Proxmox como plataforma de virtualización, seguramente ya te habrás enterado de que está disponible la versión 9 de Proxmox VE. Esta actualización trae mejoras importantes en rendimiento, compatibilidad y seguridad.

En este artículo te explico cómo migrar de Proxmox 8 a 9 de forma segura, qué tener en cuenta antes de empezar y los pasos exactos que debes seguir.



🚀 ¿Por qué actualizar a Proxmox VE 9?

Algunas de las novedades más destacadas de Proxmox 9 son:

  • Basado en Debian 13 Trixie, con un kernel Linux más moderno.

  • Mejoras en QEMU y LXC, con más compatibilidad y mejor rendimiento.

  • Gestión mejorada de almacenamiento (ZFS 2.3, Ceph 19 “Squid” y snapshots LVM desde la GUI).

  • Interfaz web más pulida y optimizada para móviles.

  • Cambios importantes en el sistema (/tmp como tmpfs, adiós a cgroup v1).

Actualizar no solo significa tener lo último, también es clave por seguridad y soporte.


🔧 Paso 1: Preparativos antes de actualizar

Antes de lanzarte a cambiar repositorios y ejecutar comandos, haz lo siguiente:

  1. Backup completo de todas tus máquinas virtuales y contenedores (vzdump) y también de la configuración (/etc/pve).

  2. Actualiza Proxmox VE 8 a la última versión disponible:

    apt update && apt dist-upgrade -y pveversion

    Verifica que estás en la 8.4.x.

  3. Si tienes un clúster, asegúrate de que está en quorum y actualiza nodo por nodo, no todos a la vez.


🧪 Paso 2: Revisar compatibilidad

Proxmox incluye un script para comprobar si tu sistema está listo:

pve8to9 --full

Este comando te mostrará si hay paquetes o configuraciones que podrían dar problemas al actualizar. Corrige lo que indique antes de seguir.


📦 Paso 3: Cambiar repositorios de Debian y Proxmox

Proxmox 8 se basa en Debian 12 (Bookworm), y Proxmox 9 en Debian 13 (Trixie). Toca cambiar los repos.

Edita /etc/apt/sources.list y cambia cualquier referencia a bookworm por trixie. Ejemplo:

deb http://deb.debian.org/debian trixie main contrib non-free-firmware deb http://deb.debian.org/debian trixie-updates main contrib non-free-firmware deb http://security.debian.org/debian-security trixie-security main contrib non-free-firmware

Y añade el repo de Proxmox VE 9 (si no tienes licencia, usa el no-subscription):

deb http://download.proxmox.com/debian/pve trixie pve-no-subscription

👉 Si usas Ceph, revisa también el cambio de versión al nuevo “Squid”.


🔄 Paso 4: Realizar la actualización

Ahora sí, toca actualizar:

apt update apt dist-upgrade

El proceso puede tardar bastante. Cuando acabe, reinicia el nodo:


reboot

✅ Paso 5: Verificar el sistema

Tras el reinicio:

  1. Comprueba la versión de Proxmox:

    pveversion

    Debe mostrar algo como pve-manager/9.x.x.


        Revisa que todas las máquinas virtuales y contenedores funcionen correctamente.
  1. Si usas LVM, ejecuta este script para evitar activaciones automáticas indeseadas:

    /usr/share/pve-manager/migrations/pve-lvm-disable-autoactivation

🛠️ Paso 6: Consideraciones adicionales

  • /tmp ahora es tmpfs: si algún script escribe archivos grandes ahí, ojo.

  • Se elimina cgroup v1: software muy antiguo (ej. contenedores Docker viejos) puede dejar de funcionar.

  • GPUs y software de backup: revisa compatibilidad si usas NVIDIA vGPU o soluciones tipo Veeam.


🧹 Instalación limpia como alternativa

Si tu servidor tiene demasiados “parches” o configuraciones personalizadas, quizá te compense más hacer una instalación limpia de Proxmox VE 9 y luego restaurar tus VMs y copias de configuración.


🎯 Conclusión

Actualizar a Proxmox VE 9 es un paso lógico si quieres mantener tu infraestructura segura y al día. Siguiendo estos pasos, la migración debería ir sin sobresaltos.

👉 ¿Tienes pensado actualizar ya tu servidor, o prefieres esperar a una instalación limpia?



Fuente: mira aquí

20 junio 2025

Los 10 primeros pasos tras instalar Proxmox VE


Proxmox VE es una plataforma de virtualización completa basada en KVM y LXC. Permite correr múltiples sistemas operativos (Windows, Linux, etc.) en máquinas virtuales o contenedores. Si tienes un PC antiguo en casa que quieras darle una doble vida, no dudes en rescatarlo.

Instalar Proxmox VE es solo el principio. Aquí te presento una guía clara y directa con los 10 primeros pasos esenciales para dejar tu servidor listo para trabajar como una máquina virtual potente, flexible y estable.


1. Accede a la interfaz web

Una vez instalado y conectado a tu red, abre un navegador web y accede a:

https://<IP-del-servidor>:8006

Inicia sesión con el usuario root y la contraseña que estableciste durante la instalación.



2. Actualiza Proxmox

Es fundamental empezar con el sistema actualizado. Puedes hacerlo desde consola:

apt update && apt full-upgrade -y

O desde la interfaz web: Datacenter > Node > Updates > Refresh > Upgrade


3. Elimina el repositorio de suscripción empresarial

Proxmox incluye por defecto un repositorio para usuarios con suscripción. Si no la tienes, es mejor eliminarlo para evitar avisos:

nano /etc/apt/sources.list.d/pve-enterprise.list

Comenta la línea con # o elimínala.

Luego añade el repositorio sin suscripción:

echo "deb http://download.proxmox.com/debian/pve bookworm pve-no-subscription" > /etc/apt/sources.list.d/pve-no-subscription.list

💡 Tip: Recuerda ejecutar apt update después de modificar los repositorios.


4. Configura la red

Desde la interfaz web: Datacenter > Node > System > Network, asegúrate de tener:

  • IP estática

  • Puerta de enlace

  • DNS correctamente configurados

Si prefieres la terminal:

nano /etc/network/interfaces

5. Añade almacenamiento

Proxmox puede usar discos adicionales para almacenar:

  • Imágenes ISO

  • Discos de VMs

  • Backups

Ve a: Datacenter > Storage > Add y elige el tipo: Directory, LVM, ZFS, NFS, CIFS, etc.


6. Sube imágenes ISO

Las ISO se usan para instalar sistemas operativos en tus VMs.

Desde la web: Datacenter > Node > Local > ISO Images > Upload

O por consola desde tu PC:

scp sistema.iso root@IP:/var/lib/vz/template/iso/

7. Configura una red para VMs

Por defecto, Proxmox crea vmbr0, un bridge que conecta las VMs con la red real. Puedes añadir más bridges si tienes varias tarjetas o usas VLANs.

Gestiona esto desde: Datacenter > Node > System > Network


8. Crea tu primera VM o contenedor (CT)

Haz clic en Create VM o Create CT, y sigue los pasos:

  • Elige ISO o plantilla

  • Define recursos (CPU, RAM, disco)

  • Asigna red


9. Programa backups automáticos

Nunca olvides los backups. Ve a: Datacenter > Backup > Add

Elige:

  • Nodo

  • Máquinas a respaldar

  • Destino

  • Hora y frecuencia


10. Instala herramientas útiles

Desde consola, puedes instalar algunos paquetes que facilitan la gestión:

apt install htop ifupdown2 net-tools curl

Y dentro de las máquinas virtuales (si son Linux), instala:

apt install qemu-guest-agent

Esto permite ver la IP desde Proxmox y apagar las máquinas desde la interfaz web.


Conclusión

Con estos 10 pasos, tienes un entorno Proxmox listo para comenzar a crear, gestionar y automatizar tus máquinas virtuales o contenedores. A partir de aquí puedes explorar clústeres, alta disponibilidad, Ceph, y mucho más.

Ansible: Poniendo orden en mi laboratorio Proxmox

Automatiza la gestión de tus máquinas virtuales y contenedores sin esfuerzo. Tengo ya cómo unas diez máquinas Linux funcionando en Proxmox...