Proxmox: Gestionar host con Powershell
Aunque he escrito varias veces sobre como explotar la API de Proxmox para poder automatizar procesos diferentes con las máquinas virtuales o contenedores LXC, hoy vamos a ver que se están empezando a desarrollar módulos de powershell, que permiten dicha gestión desde Windows.
Os dejo la web del proyecto:
- https://github.com/Corsinvest/cv4pve-api-powershell
- DOCUMENTACION: https://raw.githack.com/Corsinvest/cv4pve-api-powershell/master/doc/index.html
Así que vamos a ver como instalar el módulo en powershell, y lanzar los diferentes comandos.
Decir que se basan en VMware PowerCLI para crear el módulo.
Módulo Powershell para integración con API Proxmox
Revisamos que nuestro host Proxmox no tiene ningún problema con la publicación de su API.
- https://pve1.negu.local:8006/api2/json/
Una vez que nuestro equipo contesta, vemos si el módulo tiene un manifiesto, que no es el caso. Donde podríamos ver la versión, los requisitos y su contenido:
1 2 |
$m=Get-Module -List -Name Corsinvest.ProxmoxVE.Api Get-Content $m |
Como no lo tiene iremos directamente a la documentación 🙂
Lanzamos la instalación del módulo, no es un módulo de confianza, así que nos toca aceptar esto para usarlo:
1 |
Install-Module -Name Corsinvest.ProxmoxVE.Api |
Si lo queréis lanzar de forma manual:
1 2 |
# show path module PS /home/elblogdenegu> [Environment]::GetEnvironmentVariable("PSModulePath") |
Comandos Powershell para Proxmox
Una vez instalado el módulo, simplemente hay que lanzar comandeo. Os dejo unos cuantos:
CONECTAR A CLUSTER / HOST PROXMOX VIA POWERSHELL
Pasamos el siguiente comando, nos pedirá usuario y contraseña (en mi caso, el usuario es “root@pam”) y a partir de entonces ya tendremos acceso al host Proxmox:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
PS /Users/elblogdenegu> Connect-PveCluster -HostsAndPorts pve1.negu.local:8006 -skipcertificatecheck PowerShell credential request Proxmox VE Username and password, username formated as user@pam, user@pve, user@yourdomain or user (default domain pam). User: root@pam Password for user root@pam: ************** HostName : pve1.negu.local Port : 8006 SkipCertificateCheck : True Ticket : PVE:root@pam:65737772::B3UxcCzrK2WQbGKL48cqBvgHDFg0LL/qT+UZpeulwuLcam+Omp09XyD3BZ/UTQRL7g3ZazbpL2kJ/lf4YFcT6azdjOa2k1UJIw7e wbC1lG+ivR4teRa/7rxyBEgjysBmmls/8FumHv/Gi21VE7emp+xV+iCVHfz0L2JTcmWga8GGqhxfLQNncob9Pzm6fSue7lrufwWpTKB+PWc3NoMgPQqav7/jieQ YlSFxJ9rD6IfLCzCLagXb/THuQj7TGpSlafMTN/XXXXXXXXXXXXXXXXXXXXXXfcP91VDpjJR3beyzApfovpN7s5vRw7o3HDDWQtmBaD/mKrQYjoAkwc9w== CSRFPreventionToken : 65737772:COd5+zvRhcIWi81NIbfXvYfKtipw4wGiM+ZjUCazCTQ ApiToken : |
Con la sesión lanzada con este comando, podemos lanzar el resto.
OBTENER MAQUINAS VIRTUALES PROXMOX VIA POWERSHELL
Para ver las máquinas virtuales, lanzamos:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 |
PS /Users/elblogdenegu> Get-PveVm status : running uptime : 3073 vmid : 100 maxcpu : 4 maxdisk : 64424509440 netout : 304204 netin : 2790467 cpu : 0,0257794298186297 template : 0 maxmem : 6442450944 type : qemu disk : 0 mem : 3542527370 diskread : 125391890 id : qemu/100 name : PFSENSE01 node : pve1 diskwrite : 695926784 vmid : 101 maxdisk : 68719476736 maxcpu : 4 uptime : 0 status : stopped cpu : 0 netin : 0 netout : 0 disk : 0 template : 0 type : qemu maxmem : 6442450944 diskwrite : 0 name : OPENSENSE node : pve1 id : qemu/101 diskread : 0 mem : 0 |
ARRANCAR y PARAR MAQUINA VIRTUAL PROXMOX VIA POWERSHELL
Los diferentes comandos de arranque y parada:
1 2 3 4 |
PS /Users/elblogdenegu> Start-Pve Start-PveLxc Start-PveQemu Start-PveVm PS /Users/elblogdenegu> Stop-Pve Stop-PveLxc Stop-PveQemu Stop-PveVm |
Os dejo un ejemplo, primero miro el estado:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
PS /Users/elblogdenegu> Get-PveVm -VmIdOrName 101 diskwrite : 0 name : OPENSENSE node : pve1 id : qemu/101 diskread : 0 mem : 0 disk : 0 type : qemu maxmem : 6442450944 template : 0 cpu : 0 netin : 0 netout : 0 maxdisk : 68719476736 maxcpu : 4 vmid : 101 uptime : 0 status : stopped |
Y la arrancamos:
1 2 3 4 5 6 7 8 9 10 11 12 13 |
PS /Users/elblogdenegu> Start-PveVm - PveTicket Verbose ErrorAction InformationAction WarningVariable OutVariable PipelineVariable VmIdOrName Debug WarningAction ErrorVariable InformationVariable OutBuffer PS /Users/elblogdenegu> Start-PveVm -VmIdOrName 101 StatusCode : 200 IsSuccessStatusCode : True Response : @{data=UPID:pve1:00002BC0:0005FA66:65737BFA:qmstart:101:root@pam:} ReasonPhrase : RequestResource : /nodes/pve1/qemu/101/status/start Parameters : {} Method : Post ResponseType : json |
Y volvemos a verificar estado:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
PS /Users/elblogdenegu> Get-PveVm -VmIdOrName 101 disk : 0 type : qemu maxmem : 6442450944 template : 0 diskwrite : 7548928 node : pve1 name : OPENSENSE id : qemu/101 diskread : 76215180 mem : 934653027 maxdisk : 68719476736 maxcpu : 4 vmid : 101 uptime : 46 status : running cpu : 0,0174360140320189 netin : 539 netout : 1410 |
Y la volvemos a parar, reanudar:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
PS /Users/elblogdenegu> Stop-PveVm -VmIdOrName 101 StatusCode : 200 IsSuccessStatusCode : True Response : @{data=UPID:pve1:00002E61:0006524A:65737CDB:qmstop:101:root@pam:} ReasonPhrase : RequestResource : /nodes/pve1/qemu/101/status/stop Parameters : {} Method : Post ResponseType : json PS /Users/elblogdenegu> Resume-PveVm -VmIdOrName 101 StatusCode : 200 IsSuccessStatusCode : True Response : @{data=UPID:pve1:00002FE2:00067DC8:65737D4B:qmresume:101:root@pam:} ReasonPhrase : RequestResource : /nodes/pve1/qemu/101/status/resume Parameters : {} Method : Post ResponseType : json |
La verdad, es que está tan trabajado que seremos capaces de gestionar totalmente vía powershell casi todas las operaciones que podemos hacer vía GUI, lo que nos abre un mundo de posibilidades.
Podréis revisar el cluster, hosts, contenedores, máquinas virtuales, ceph…y lanzar tareas, crear scripts o lo que se os ocurra.
Te ha gustado la entrada SGUENOS EN TWITTER O INVITANOS A UN CAFE?