Como descobrir o endereço IP da nova máquina virtual usando libvirt 0.10.0+ (rede roteada)

Como descobrir o endereço IP da nova máquina virtual usando libvirt 0.10.0+ (rede roteada)

Meu objetivo é descobrir o endereço IP da nova máquina virtual usando apenas a API libvirt (> = 0,10). Atualmente estou usando o comando net-update da libvirt: antes de iniciar uma nova máquina eu defino a entrada estática de dhcp para ela e inicializo o vm com endereço conhecido.

Funciona quase bem mesmo com versões antigas do libvirt, mas tem um bug. Quando eu "forço" a máquina, ela não envia a consulta "release" para o servidor dhcp (libvirt/dnsmasq) e esse ip permanece no arquivo de arrendamento. Se eu criar uma nova máquina com o mesmo endereço IP antes do tempo limite de locação do DHCP expirar, ela não obterá o endereço IP da entrada estática, porque o servidor DHCP considera que esse IP já está em uso (com base nas informações do arquivo de locação).

Existem soluções mais robustas para obter o endereço IP da máquina ou configurá-lo antes de iniciar, sem acesso shell ao servidor de destino ou configuração de rede estática dentro da máquina virtual?

Responder1

Na libvirt >= 1.2.14, é possível consultar a libvirt para solicitar os endereços IP que foram atribuídos a uma NIC convidada, evitando a necessidade de configurar endereços IP estáticos. por exemplo

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

Não tenho certeza se isso é útil para você, já que você mencionou libvirt 0.10.0

Se você tiver >= 1.2.10, há uma maneira menos direta de obter as informações consultando o banco de dados de concessão 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

você terá que mapear manualmente o endereço MAC para o domínio no qual está interessado - o comando 'domifaddr' apenas faz esse mapeamento para você.

Antes da versão 1.2.10, não havia nenhuma maneira de obter essas informações por meio da API libvirt - você teria que vasculhar diretamente o arquivo de concessões do dnsmasq.

informação relacionada