понедельник, 1 июня 2015 г.

Автоматическое назначение статических IP адресов для ВМ в VMware vCenter

Довольно часто при создании новой ВМ из шаблона возникает необходимость задать для нее статический IP адрес и другие сетевые настройки.

Делать это вручную, особенно, если таких ВМ много - весьма утомительно. Нужно внимательно следить за тем, чтобы не ошибиться с маской сети, маршрутом по умолчанию, DNS, или не выдать нескольким ВМ одинаковые IP.

К счастью, VMware vCenter Server предоставляет механизм, которые позволяет автоматизировать данную рутинную процедуру, реализовав своеобразный IPAM (IP Address Management) для виртуальных машин.

При выполнении кастомизации ВМ через Customization Specification можно настроить vCenter на запуск скрипта для генерации IP адреса. vCenter передаст скрипту данные в формате XML, содержащие имя ВМ, тип ОС, MAC адрес сетевого адаптера, имя виртуальной сети и пр.
<generator>
<datacenter>/New Datacenter</datacenter>
<vm>/New Datacenter/vm/New Virtual Machine</vm>
<vm-moref>vim.VirtualMachine:vm-249</vm-moref>
<hostname/>
<uuid>502081ef-91df-7455-e570-be1f6d4f5abc</uuid>
<guest>winXPProGuest</guest>
<nics>
<nic id="0">
<ipaddress/>
<iparg>ip.txt</iparg>
<macaddress>00:50:56:a0:70:15</macaddress>
<network>VM Network</network>
</nic>
</nics>
</generator>
Скрипт, в свою очередь, должен вернуть данные вместе с IP адресом, который vCenter будет использовать при кастомизации ВМ.
<generator>
<datacenter>/New Datacenter</datacenter>
<vm>/New Datacenter/vm/New Virtual Machine</vm>
<vm-moref>vim.VirtualMachine:vm-249</vm-moref>
<hostname>New-Datacenter-15</hostname>
<uuid>502081ef-91df-7455-e570-be1f6d4f5abc</uuid>
<guest>winXPProGuest</guest>
<nics>
<nic id="0">
<ipaddress>193.168.1.15</ipaddress>
<iparg>ip.txt</iparg>
<macaddress>00:50:56:a0:70:15</macaddress>
<network>VM Network</network>
</nic>
</nics>
</generator>
В качестве примера можно использовать скрипт sample-generate-name-ip.pl, который доступен для загрузки с сайта VMware.

Данный скрипт берет свободный IP адрес из текстового файла, путь к которому указывается в параметре <iparg>, и затем записывает в этот же файл информацию о ВМ, которой был назначен адрес.

Для работы скрипта требуется выполнить следующие настройки:

1) Загрузить скрипт с сайта и сохранить его на сервере vCenter (например, в C:\sample-generate-name-ip.pl).

2) Установить и настроить Perl на сервере vCenter.

Для vCenter Server на Windows загрузить Active State Perl с сайта и установить его на сервер vCenter Server, а затем установить модуль XML-DOM XPath, запустив в командной строке сервера vCenter:
ppm install XML-DOM-XPath

Для vCenter Server Appliance установка Perl и модуля выполняется командами:
yum install expat-devel
perl -MCPAN -e 'install XML::DOM::XPath'

3) Создать на сервере vCenter тестовый файл (C:\ip.txt) в следующем формате:
192.168.1.1,*,*
192.168.1.2,*,*
192.168.1.3,*,*
192.168.1.4,*,*
, где 192.168.1.x - IP адреса, который требуется выдавать.

4) В Advanced Settings сервера vCenter требуется создать следующие параметры:
config.guestcust.name-ip-generator.arg1, в качестве значения, указав путь с скрипту, например, c:\sample-generate-name-ip.pl.
config.guestcust.name-ip-generator.arg2, в качестве значения, указав путь с скрипту, например, c:\sample-generate-name-ip.pl.
config.guestcust.name-ip-generator.program, в качестве значения, указав путь к исполняемому файлу Perl, например, c:\Perl64\bin\perl.exe.

5) Создать или отредактировать один из существующих сценариев Customization Specification, указав на этапе редактирования сетевых настроек ВМ (Network), вариант Manually select custom settings, а затем открыть свойства сетевого адаптера.

6) В свойствах сетевого адаптера выбрать тип назначения IP адреса Use an application configured on the vCenter Server to generate the IP address и указать в качестве параметра путь к текстовому файлу с IP адресами, созданному на шаге 3. Обязательно экранируйте все спецсимволы, в пути к файлу (пример корректного пути: "C:\\ip.txt").

7) Сохранить изменения в сценарии кастомизации.

Теперь, при запуске подготовки ВМ при клонировании из шаблона с указанным сценарием кастомизации, скрипт автоматически возьмет первый доступный IP адрес из текстового файла, а vCenter назначит его при кастомизации ВМ в качестве статического адреса сетевого интерфейса ВМ. Выданные IP адреса в текстовом файле выглядят следующим образом.

Если вам потребуется выдавать адреса из разных подсетей, то просто создайте несколько текстовых файлов и несколько сценариев кастомизации, каждый из которых будет указывать на нужный файл.

Кроме того, вы можете написать собственный сценарий на любом языке (Perl, Powershell), с необходимым вам функционалом.

Комментариев нет:

Отправить комментарий