Usar el API de Proxmox VE
Vamos a poner algún ejemplo del uso del API de Proxmox VE
Para ello debemos de tener nuestro cookie temporal y el token de crsf
Ejemplo 1: Crear un contenedor LXC mediante al API de Proxmox
curl -s -D/dev/stderr -k \
-H "$(<header)" -b "$(<cookie)" \
-XPOST \
-d hostname=test.tecnocratica.net \
-d password=12345 \
-d rootfs=localThin:4 \
-d ostemplate=iso-templates:vztmpl/debian-12-standard_12.2-1_amd64.tar.zst \
-d vmid=602 \
-d 'net0=name%3Deth0,bridge%3Dvmbr0' \
"https://grupo10.tecnocratica.net:8006/api2/json/nodes/hv302/lxc"
Como vemos, hay múltiples acciones que podemos ejecutar en el API de Proxmox VE
En la documentación, podemos ver los diferente métodos para usar el API de Proxmox VE
https://pve.proxmox.com/pve-docs/api-viewer/index.html
Siguiendo el ejemplo anterior, vemos el método GET, que nos devuelve valores de una determinada máquina
Para crearla, usamos el método POST, en la ruta que hemos mostrado antes del cual que crea la máquina, podemos ver los parámetros que soporta. En la imagen se muestra parte de ellos.
Como vemos, mediante el API de Proxmox, podemos gestionar toda nuestra infraestructura y automatizarla (que es como lo hacemos en Tecnocrática) ya que de otra forma sería muy difícil gestionar miles de máquinas sin la ayuda del API para la orquestación, provisión y mantenimiento.
Ejemplo 2 Crear una máquina qemu
Vamos a ver como crear por ejemplo una máquina qemu, vamos a definir los parámetros de la máquina
data_VM = {
"name" : "testvideo",
"node" : "hv9",
"vmid" : 5121,
"sockets": 1,
"cores": 2,
"cpu": "host",
"ostype": "l26",
"scsihw":"virtio-scsi-pci",
"ide2": "local:iso/debian-12.0.0-amd64-netinst.iso,media=cdrom",
"virtio0": "loca-lvm:10",
"memory": 2048,
"net0": "virtio,bridge=vmbr0"
}
A continuación vamos a ver cada uno que es lo que significa:
name: Nombre de la máquina
node: El nodo en el que vamos a crear la máquina en nuestro cluster
vmid: El id único de la máquina
sockets: EL número de sockets de la máquina virtual
cores: El número de cores de la máquina virtual
cpu: El tipo de cpu
ostype: Tipo de sistema operativo en nuestro caso l26, los valores pueden ser:(other | wxp | w2k | w2k3 | w2k8 | wvista | win7 | win8 | win10 | win11 | l24 | l26 | solaris)
scsihw: Controladora de disco (lsi | lsi53c810 | virtio-scsi-pci | virtio-scsi-single | megasas | pvscsi)
ide2: Disco IDE para el CD-ROM
virtio0: en este caso vamos a crear un disco virtio de 10 G
memory: Memoria de la máquina
net: Interfaz 0 de la red de la máquina controladora, bridge y en su caso vlan
curl -vvv -k -s -X POST -H "Authorization: PVEAPIToken=APITOKEN=TOKENCODE" -H "Content-Type: application/json" \
-d '{"name" : "testvideo", "node" : "<node>", "vmid" : 5121,"sockets": 1, "cores": 2, "cpu": "host","ostype": "l26","ide2": "local:iso/debian-12.0.0-amd64-netinst.iso,media=cdrom","scsihw":"virtio-scsi-pci","scsi0": "local-lvm:10,cache=writeback","memory": 2048,"net0": "virtio,bridge=vmbr0"}' \
"https://<host>:8006/api2/json/nodes/<node>/qemu"


