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

Настройте OpenNebula для использования DHCP

Я пытаюсь настроить OpenNebula на использование DHCP-сервера, который уже существует в моей сети. Да, я уже знаю, что OpenNebula управляет виртуальными MAC-адресами, а не IP-адресами, но это не говорит мне, как заставить это работать. ;)

Мои гости и хосты являются CentOS, поэтому я представляю, что все, что нужно сделать, это настроить контекстуализацию, чтобы BOOTPROTO = dhcp выгружался в / etc / sysconfig / network-scripts / ifcfg-eth0.

  1. Как мне настроить контекстуализацию, чтобы это произошло? Могу ли я просто изменить свой шаблон определенным образом? Если да, то как это делается?
  2. После того, как я настрою свой шаблон с этими новыми параметрами контекстуализации, как мне настроить мою виртуальную сеть в ONE?

Похоже, что это должно быть легко сделать, поскольку это должно казаться проще, чем управление кучей статических IP-адресов для vms, и вы могли бы подумать, что это обычный вариант использования. Тем не менее, гугл пока очень мало появлялся.

Спасибо!!

Изменить: мой DHCP-сервер успешно предоставляет моей виртуальной машине IP-адрес, если я вручную установил BOOTPROTO = dhcp и DHCP_HOSTNAME = foo и перезапустил сеть на моем виртуальном компьютере. И это нормально, я хотел бы иметь возможность устанавливать имена хостов для виртуальных машин, которые я также раскручиваю.

Теперь остается только определить, как заставить ОДИН делать это автоматически / через веб-интерфейс или инструменты командной строки. Также ONE по-прежнему отображает IP-адрес исходной аренды, а не IP-адрес, который DHCP дал моей виртуальной машине. Было бы неплохо исправить и эту проблему.

У меня Opennebula версии 4.8.0. У меня были похожие потребности, поэтому вот что я сделал:

  1. Я настроил DHCP-сервер, который уже существует в нашей сети, на резервирование диапазона IP-адресов для DHCP. Диапазон был: 10.23.1.201 - 10.23.1.254. Это 54 динамических IP-адреса.
  2. Я создал новую виртуальную сеть, которую назвал «DHCP». На вкладке «Адреса» я выбрал радиокнопку «Ethernet». Таким образом, Opennebula будет давать MAC-адреса только виртуальным машинам, использующим эту сеть. Я оставил "MAC Start" пустым, потому что в любом случае это необязательно. Я ввел 54 в поле «Размер», потому что мой DHCP может предоставить такое количество динамических IP-адресов. Итак, Opennebula дает новым виртуальным машинам только MAC-адрес и ничего более.

Для использования DHCP гостевую ОС необходимо настроить вручную. Я не знаю, как это сделать автоматически, но это не большая проблема.

Вот как я разработал шаблон, использующий DHCP. Далее я установил новую операционную систему, например CentOS 6.5.

  1. Я создал шаблон, используя эту новую виртуальную сеть и два диска - образ ISO и пустой образ блока данных, для которого установлено значение «persistent = yes».
  2. Затем я создаю экземпляр шаблона, виртуальная машина загружается с ISO, и когда я устанавливаю виртуальную машину, я оставляю конфигурацию сети «динамической».
  3. После завершения установки моей виртуальной машине будет автоматически назначен IP-адрес от DHCP-сервера, как если бы это была настоящая машина.
  4. Затем я останавливаю и удаляю виртуальную машину.
  5. Установите для изображения блока данных значение «persistent = no».

Теперь каждая новая виртуальная машина, которая создается из этого шаблона, будет использовать виртуальную сеть «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 соответствующим образом.

Более подробная информация о диапазонах адресов здесь: