Настройте OpenNebula для использования DHCP
Я пытаюсь настроить OpenNebula для использования DHCP-сервера, который уже существует в моей сети. Да, я уже знаю, что OpenNebula управляет виртуальными mac-адресами, а не IP-адресами, но это не говорит мне, как заставить это работать.;)
Мои гости и хосты оба CentOS, так что я думаю, что все, что нужно сделать, это настроить контекстуализацию так, чтобы BOOTPROTO=dhcp был выгружен в /etc/sysconfig/network-scripts/ifcfg-eth0.
- Как настроить контекстуализацию, чтобы это происходило? Я просто изменяю свой шаблон определенным образом? Если так, то как это сделать?
- После того, как я настрою свой шаблон с этими новыми параметрами контекстуализации, как мне настроить виртуальную сеть в ОДНОМ?
Кажется, что это должно быть легко сделать, так как это должно показаться проще, чем управлять набором статических IP-адресов для vms, и вы могли бы подумать, что это распространенный вариант использования. Тем не менее, Google до сих пор оказалось очень мало.
Спасибо!!
Изменить: Мой DHCP-сервер успешно дает мой виртуальный IP-адрес, если я вручную установить BOOTPROTO=dhcp и DHCP_HOSTNAME=foo и перезапустить сеть на моем виртуальном компьютере. Что хорошо, я хотел бы иметь возможность установить имена хостов виртуальных машин, которые я тоже раскручиваю.
Теперь нужно просто определить, как заставить ОДНУ делать эти вещи автоматически / через веб-интерфейс или инструменты CLI. Кроме того, ONE по-прежнему перечисляет IP-адрес первоначальной аренды, а не IP-адрес, который DHCP дал моей ВМ. Было бы неплохо исправить и эту проблему.
3 ответа
Моя Opennebula - это версия 4.8.0. У меня были похожие потребности, вот что я сделал:
- Я настроил DHCP-сервер, который уже существует в нашей сети, чтобы зарезервировать диапазон IP-адресов для DHCP. Диапазон был: 10.23.1.201 - 10.23.1.254. Это 54 динамических IP-адреса.
- Я создал новую виртуальную сеть, которую я назвал "DHCP". На вкладке "Адреса" я выбрал переключатель "Ethernet". Таким образом, Opennebula будет предоставлять MAC-адреса только виртуальным машинам, использующим эту сеть. Я оставил "MAC Start" пустым, потому что это все равно не обязательно. Я ввел 54 в поле "Размер", потому что мой DHCP может предоставить столько динамических IP-адресов. Итак, Opennebula дает новым виртуальным машинам только MAC-адрес и ничего более.
Гостевая ОС должна быть вручную настроена на использование DHCP. Я не знаю, как сделать это автоматически, но это не большая проблема.
Вот как я продолжил, чтобы получить шаблон, который использует DHCP. Я продолжил установку новой операционной системы, например CentOS 6.5.
- Я создал шаблон, используя эту новую виртуальную сеть и два диска - образ ISO и пустой образ блока данных, для которого установлено "persistent = yes".
- Затем я создаю экземпляр шаблона, виртуальная машина загружается из ISO, и когда я устанавливаю виртуальную машину, я оставляю конфигурацию сети в "динамическом" состоянии.
- Когда установка заканчивается, моя виртуальная машина получает автоматически назначенный IP-адрес от DHCP-сервера, как если бы это была реальная машина.
- Затем я останавливаюсь и удаляю ВМ.
- Установите изображение блока данных обратно на "persistent = no".
Теперь каждая новая виртуальная машина, которая создается из этого шаблона, будет использовать виртуальную сеть "DHCP", будет иметь динамический IP-адрес, и Opennebula не будет отображать IP-адрес для таких виртуальных машин.
Я не могу ответить об автоматической настройке имени хоста, но думаю, что это вопрос настройки гостевой ОС и DHCP. С другой стороны, DHCP должен знать, какое имя хоста давать на какой MAC-адрес, и, поскольку Opennebula будет генерировать эти MAC-адреса динамически, я не знаю, как вы можете заранее сообщить о них DHCP-серверу.
За v4.x
(меньше 4.10?):
Сначала создайте VNET
, используя любую настройку, которую вы хотите. Например, для мостовой сети вы можете иметь:
NAME = "net0"
TYPE = "FIXED"
BRIDGE = "br0"
Далее создайте договор аренды, связанный с этим VNET
, Обратите внимание, что IP-адрес является обязательным и уникальным, но используется только как "ключ" NIC, если вы используете DHCP (см. Ниже). Обязательно установите MAC-адрес так, чтобы ваш DHCP-сервер предлагал ему адрес:
VNET = "net0"
IP = "192.168.0.1"
MAC = "02:00:d7:00:00:01"
Теперь добавьте NIC к вашей виртуальной машине:
NETWORK = "net0" IP = "192.168.0.1" MODEL = "virtio"
Теперь убедитесь, что вы правильно настроили DHCP для этого MAC-адреса.
За 4.x > 10?
а также 5.x
, это почти то же самое, за исключением того, что аренды теперь заменены диапазонами адресов:
Создайте VNET (почти), как указано выше:
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 соответствующим образом.
Больше информации о диапазонах адресов здесь:
Подумайте об использовании бита конфигурации 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 для выполнения удивительных вещей и, по крайней мере, делать то, что, я думаю, вам нужно.