Como soy un “freak” de la linea de comandos y de del “make your self” así como un enamorado del kvm, libvirt, virsh, la virtualización en general y/o el “cloud” en particular, cuando hay que hacer alguna tarea de minería no me importa gastar algo de tiempo en “automatizar” dicha tarea, aunque, luego no lo vuelva a necesitar, ejejeje. Como dijo un coleguita, “El script, que crea el script, que realiza la acción”.
Bueno al grano, tenemos un servidor dedicado a la virtualización con kvm, y lo teníamos hasta arriva de máquínas que ya no usamos para nada, así que hemos decidido borra todas aquellas que no necesitamos, pero claro, algunas tienen más de un disco, y … que pereza, bueno pués virsh es tu aliado:
Listado de las máquinas a eliminar:
Para decidir obtener el listado completo de las máquinas que están corriendo en
yun hypervisor con kvm utlizamos virsh list --all
pero claro esto te
muestra un listado muy chulo, aunque poco manejable, por ejemplo:
1 2 3 4 5 6 7 |
|
Como a mí lo que me interesa es una lista, que sólo tenga los nombres de las máquinas:
1
|
|
Ojo, primero he editado dicho fichero, y he quitado todas aquellas máquinas que tengo y/o quiero conservar.
Script para borrar una máquina
Al eliminar una máquina hay que tener en cuenta tanto los discos como la definicion de la propia máquina.
Para obtener los discos que está usando un “dominio” en concreto usamos
virsh domblklist <dominio>
, otro comando muy chulo, aunque de nuevo, la
información que optenemos es poco manejable:
1 2 3 4 |
|
Y para eliminar una máquina, lo que se usa es virsh undefine <dominio>
.
Llegado a este punto quiero aclarar un par de cosas:
- dominio == máquina virtual
- Eliminar máquina virtual == borrar discos + realizar undefine de dicha máquina
Así pues, he creado el siguiente script:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
|
Y para rizar el rizo, como tengo mi listilla con las máquinas que quiero borrar en tmp/vms.list ejecuto:
1
|
|
Y e voilà me he desecho de todas las máquinas que no quería.
Hasta otra.