Cómo averiguar la dirección IP de una nueva máquina virtual usando libvirt 0.10.0+ (red enrutada)

Cómo averiguar la dirección IP de una nueva máquina virtual usando libvirt 0.10.0+ (red enrutada)

Mi objetivo es averiguar la dirección IP de la nueva máquina virtual utilizando únicamente la API de libvirt (>=0,10). Actualmente estoy usando el comando net-update de libvirt: antes de iniciar una nueva máquina, configuro una entrada dhcp estática y vm arranca con una dirección conocida.

Funciona casi bien incluso con versiones antiguas de libvirt, pero tiene un error. Cuando "fuerzo el apagado" de la máquina, no envía la consulta de "liberación" al servidor dhcp (libvirt/dnsmasq) y esta IP permanece en el archivo de arrendamiento. Si creo una nueva máquina con la misma dirección IP antes de que expire el tiempo de concesión de dhcp, no obtendrá la dirección IP de la entrada estática, porque el servidor dhcp considera que esta IP ya está en uso (según la información del archivo de concesión).

¿Existen soluciones más sólidas para obtener la dirección IP de la máquina o configurarla antes del inicio sin acceso de shell al servidor de destino o configuración de red estática dentro de la máquina virtual?

Respuesta1

En libvirt >= 1.2.14, es posible consultar libvirt para solicitar las direcciones IP que se han asignado a una NIC invitada, evitando la necesidad de configurar direcciones IP estáticas. p.ej

# virsh domifaddr f25kubdev
 Name       MAC address          Protocol     Address
-------------------------------------------------------------------------------
 vnet1      52:54:00:b4:fc:f2    ipv4         192.168.122.13/24

No estoy seguro de si eso te sirve de algo, ya que mencionas libvirt 0.10.0

Si tiene >= 1.2.10, hay una forma menos directa de obtener la información consultando la base de datos de arrendamiento de DHCP.

# virsh net-dhcp-leases default
 Expiry Time          MAC address        Protocol  IP address                Hostname        Client ID or DUID
-------------------------------------------------------------------------------------------------------------------
 2017-01-19 12:01:01  52:54:00:b4:fc:f2  ipv4      192.168.122.13/24         f25kubdev       ff:00:b4:fc:f2:00:04:52:fb:4b:29:01:5e:44:c8:b6:57:85:dd:f2:7a:98:73

luego debe asignar manualmente la dirección MAC al dominio que le interesa; el comando 'domifaddr' simplemente hace esa asignación por usted.

Antes de 1.2.10, no había forma de obtener esta información a través de la API libvirt; tendrías que hurgar directamente en el archivo de arrendamientos de dnsmasq.

información relacionada