Я создал образ выключенной виртуальной машины. Из нового шаблона 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-адреса / имя хоста в зависимости от его значения. С уважением, Педро