Назад | Перейти на главную страницу

KVM автоматически меняет имя гостевого хоста образа-d при загрузке

Я создал образ выключенной виртуальной машины. Из нового шаблона XML я смог создать новую виртуальную машину, используя virsh create newvm.xml. в основном образ был создан путем копирования образа выключенной виртуальной машины, которая была построена из образа ОС Ubuntu - очевидно, во время установки мне пришлось указать имя хоста. Теперь я выключил виртуальную машину и скопировал образ, чтобы использовать его в качестве базового образа для моих новых гостевых виртуальных машин. Проблема в том, что я не знаю, как автоматически менять проклятое имя хоста. Теперь каждая вновь созданная виртуальная машина начинается с того же имени хоста, что и машина, с которой был создан образ. Есть ли способ как с этим справиться?

   <domain type='kvm' id='10'>
  <name>sensu.gc.example.com</name>
  <uuid>3d638021-1fd5-96c4-5b7b-a5c11d69c314</uuid>
  <memory>1048576</memory>
  <currentMemory>1048576</currentMemory>
  <vcpu>1</vcpu>
  <os>
    <type arch='x86_64' machine='pc-1.0'>hvm</type>
    <boot dev='hd'/>
  </os>
  <features>
    <acpi/>
  </features>
  <clock offset='utc'/>
  <on_poweroff>destroy</on_poweroff>
  <on_reboot>restart</on_reboot>
  <on_crash>destroy</on_crash>
  <devices>
    <emulator>/usr/bin/kvm</emulator>
    <disk type='file' device='disk'>
      <driver name='qemu' type='qcow2'/>
      <source file='/kvm/sensu/tmpZ2yf6n.qcow2'/>
      <target dev='hda' bus='ide'/>
      <alias name='ide0-0-0'/>
      <address type='drive' controller='0' bus='0' unit='0'/>
    </disk>
    <controller type='ide' index='0'>
      <alias name='ide0'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x1'/>
    </controller>
    <interface type='bridge'>
      <mac address='52:54:00:50:89:7b'/>
      <source bridge='br0'/>
      <target dev='vnet0'/>
      <model type='virtio'/>
      <alias name='net0'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
    </interface>
    <serial type='pty'>
      <source path='/dev/pts/0'/>
      <target port='0'/>
      <alias name='serial0'/>
    </serial>
    <console type='pty' tty='/dev/pts/0'>
      <source path='/dev/pts/0'/>
      <target type='serial' port='0'/>
      <alias name='serial0'/>
    </console>
    <input type='mouse' bus='ps2'/>
    <graphics type='vnc' port='5900' autoport='yes' listen='127.0.0.1'>
      <listen type='address' address='127.0.0.1'/>
    </graphics>
    <video>
      <model type='cirrus' vram='9216' heads='1'/>
      <alias name='video0'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x0'/>
    </video>
    <memballoon model='virtio'>
      <alias name='balloon0'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x0'/>
    </memballoon>
  </devices>
  <seclabel type='dynamic' model='apparmor' relabel='yes'>
    <label>libvirt-3d638021-1fd5-96c4-5b7b-a5c11d69c314</label>
    <imagelabel>libvirt-3d638021-1fd5-96c4-5b7b-a5c11d69c314</imagelabel>
  </seclabel>
</domain>

Я думал, что указание имени хоста в теге будет автоматически изменено при создании виртуальной машины. Есть ли способ достичь того, что я пытаюсь сделать? Ура.

Вы не можете изменить имя хоста из XML-файла виртуальной машины или из KVM. В этом XML-файле перечислены только свойства виртуальной машины, имя хоста не является одним из таких свойств. Имя хоста устанавливается в ОС виртуальной машины (в вашем случае Ubuntu) во время процесса загрузки.

Чтобы изменить имя хоста, вы должны посмотреть на /etc/hostname файл на вашем сервере Ubuntu (см. подробные примеры).

Если вы используете dhcp для настройки IP-адреса своих серверов (что я бы рекомендовал), dhcp-client может использовать некоторые хуки для запуска скрипта, когда он получает IP-адрес. Таким образом вы можете динамически изменять имя хоста в процессе загрузки. Вот пример того, как это сделать.

Другой вариант, аналогичный предложенному Педро, - установить MAC-адрес сервера в каждом новом XML-файле (что вы можете сделать, поскольку это свойство виртуальной машины) и запустить сценарий во время загрузки, который назначит IP-адрес и имя хоста, полученное из этого MAC-адреса.

Я устанавливаю MAC-адрес при создании виртуальной машины и настраиваю /etc/rc.local, чтобы смотреть на MAC и устанавливать IP-адреса / имя хоста в зависимости от его значения. С уважением, Педро