Я пытаюсь настроить OpenNebula на использование DHCP-сервера, который уже существует в моей сети. Да, я уже знаю, что OpenNebula управляет виртуальными MAC-адресами, а не IP-адресами, но это не говорит мне, как заставить это работать. ;)
Мои гости и хосты являются CentOS, поэтому я представляю, что все, что нужно сделать, это настроить контекстуализацию, чтобы BOOTPROTO = dhcp выгружался в / etc / sysconfig / network-scripts / ifcfg-eth0.
Похоже, что это должно быть легко сделать, поскольку это должно казаться проще, чем управление кучей статических IP-адресов для vms, и вы могли бы подумать, что это обычный вариант использования. Тем не менее, гугл пока очень мало появлялся.
Спасибо!!
Изменить: мой DHCP-сервер успешно предоставляет моей виртуальной машине IP-адрес, если я вручную установил BOOTPROTO = dhcp и DHCP_HOSTNAME = foo и перезапустил сеть на моем виртуальном компьютере. И это нормально, я хотел бы иметь возможность устанавливать имена хостов для виртуальных машин, которые я также раскручиваю.
Теперь остается только определить, как заставить ОДИН делать это автоматически / через веб-интерфейс или инструменты командной строки. Также ONE по-прежнему отображает IP-адрес исходной аренды, а не IP-адрес, который DHCP дал моей виртуальной машине. Было бы неплохо исправить и эту проблему.
У меня Opennebula версии 4.8.0. У меня были похожие потребности, поэтому вот что я сделал:
Для использования DHCP гостевую ОС необходимо настроить вручную. Я не знаю, как это сделать автоматически, но это не большая проблема.
Вот как я разработал шаблон, использующий DHCP. Далее я установил новую операционную систему, например CentOS 6.5.
Теперь каждая новая виртуальная машина, которая создается из этого шаблона, будет использовать виртуальную сеть «DHCP», будет иметь динамический IP-адрес, и Opennebula не будет отображать IP-адрес для таких виртуальных машин.
Я не могу ответить об автоматической настройке имени хоста, но думаю, что это должно быть связано с настройкой гостевой ОС и DHCP. С другой стороны, DHCP должен знать, какое имя хоста дать какому MAC-адресу, и, поскольку Opennebula будет генерировать эти MAC-адреса динамически, я не знаю, как вы можете заранее сообщить о них DHCP-серверу.
Подумайте об использовании бита конфигурации dhcpd для установки временных имен хостов в новых ящиках, пока вы не сможете hostnamectl их самостоятельно. У него есть преимущество установки угадываемого имени хоста, которое вы можете использовать для подключения, без необходимости копаться в журналах или угадывать IP.
if (not (option host-name ~~ "^[a-z0-9][a-z0-9\-]+[a-z0-9]$")) {
set new_host-name = concat("host-", binary-to-ascii(16, 8, "", substring(hardware, 1, 6)));
log(concat("invalid hostname: ", option host-name, " => ", new_host-name));
ddns-hostname = new_host-name;
} else {
ddns-hostname = pick (option fqdn.hostname, option host-name, substring (option dhcp-client-identifier, 1, 20));
}
Я взял это из отличного поста Питера Ратлева здесь: https://lists.isc.org/pipermail/dhcp-users/2013-March/016518.html . Хотя это ответ на другой вопрос, он представляет собой ВЕЛИКИЙ пример того, как dhcpd можно настроить для выполнения удивительных вещей и, по крайней мере, делать то, что, как я думаю, вам нужно.
Для v4.x
(менее 4,10?):
Сначала создайте VNET
, используя любую настройку, которую вы хотите. Например, для мостовой сети у вас может быть:
NAME = "net0"
TYPE = "FIXED"
BRIDGE = "br0"
Затем создайте договор аренды, связанный с этим VNET
. Обратите внимание: IP-адрес является обязательным и уникальным, но он используется только как «ключ» сетевого адаптера, если вы используете DHCP (см. Ниже). Обязательно установите MAC-адрес таким образом, чтобы ваш DHCP-сервер предлагал ему адрес:
VNET = "net0"
IP = "192.168.0.1"
MAC = "02:00:d7:00:00:01"
Теперь добавьте сетевой адаптер к вашей виртуальной машине:
NETWORK = "net0" IP = "192.168.0.1" МОДЕЛЬ = "virtio"
Теперь не забудьте правильно настроить DHCP для этого MAC-адреса.
Для 4.x > 10?
и 5.x
, это почти то же самое, за исключением того, что аренда теперь заменена диапазонами адресов:
Создайте виртуальную сеть (почти), как указано выше:
NAME = "net0"
VN_MAD = "dummy"
BRIDGE = "br0"
Затем создайте диапазон адресов, содержащий только один адрес:
VNET= "net0"
SIZE = "1"
MAC = "02:00:d7:00:00:01"
Используйте этот AR в своей виртуальной машине:
NETWORK="net0"
MAC="02:00:d7:00:00:01"
MODEL="virtio"
И снова настройте DHCP соответствующим образом.
Более подробная информация о диапазонах адресов здесь: