понедельник, 24 октября 2011 г.

Auto Deploy

Что это:

Auto Deploy – это cервер дистанционной загрузки ESXi по PXE

Зачем он нужен :

Для упрощения ввода в эксплуатацию новых серверов, обновления существующих.

Как это работает:

Для того, чтобы ввести новый сервер в эксплуатацию, нам не надо устанавливать на него ESXi. Нам надо:

1) Включить этот сервер, биос должен быть настроен на загрузку по сети.
2) Дождаться, пока на этом сервере не запуститься ESXi, и он не будет автоматически добавлен в vCenter.
3) Создать файл ответов для профиля настроек этого сервера – всякие IP адреса, имя, и прочее уникальное.

После этого при каждой перезагрузке пункт 2 будет повторятся, но уже без нашего вмешательства к серверу будут применяться настройки.

Заменив только образ на сервере AutoDeploy, мы получим обновленные сервера ESXi просто после их перезагрузки, так как стартовать они будут с этого обновленного образа.

Выводы


Прикольная штука. Работает. Нареканий, на удивление, не вызвало.

Однако с использование в производственной среде пока непонятно – смущает зависимость возможности старта всех(!) серверов ESXi от машин vCenter и AutoDeploy.

Получается, они должны работать или на отдельном кластере vSphere, или на железном сервере, рядом с которым стоит резервный железный сервер.

Интересно послушать ваши мнения, особенно тех, в чем ведении десятки и сотни серверов ESXi.

Настройка VMware Auto Deploy

Шаги настройки этого продукта.
1) Устанавливаем Auto Deploy под Windows.
image
По идее, правильно это делать на отдельную машину, однако у меня почему-то не получилось – выдавало ошибки о невозможности сгенерить ssl. В итоге поставил на машину с vCenter.

Кстати, на vCenter Appliance служба Auto Deploy уже предустановлена.

После успешной установки появляется пиктограмма на странице Home в клиенте vSphere
image
2) Устанавливаем доп-софт, настраиваем DHCP и TFTP
  • PowerCLI
  • какой-нибудь TFTP-сервер
  • нужен будет DHCP
Я, для быстрого теста, в качестве и DHCP и TFTP использовал http://tftpd32.jounin.net. Также TFTP и DHCP требует специальной настройки:

Пройдя по иконке Auto Deploy в клиенте vSphere, мы получим возможность загрузить файл – TFTP Boot.

image 
Следует загрузить этот архив, и распаковать в папку, выбранную для доступности по TFTP. Файл “undionly.kpxe.vmw-hardwired” следует указать как загрузочный образ.
В настройках DHCP следует прописать параметры:
66 – адрес сервера TFT
67 – имя файла загрузки (undionly.kpxe.vmw-hardwired)
(для серверов с EFI вместо BIOS файл вроде другой).

Теперь в данном сегменте сети сервера могут загрузиться по PXE, однако загружается только предварительная оболочка, которая ругается что нет образа ESXi для загрузки его на данный сервер. image
3) Настраиваем Auto Deploy
Нам потребуется PowerCLI и в нем открытая сессия к vCenter.

Кроме этого, потребуется дистрибутив ESXi (не в виде iso, а в виде zip. Т.н. software depot, загружается там же, где и iso-вариант).

Обратите внимание – этот дистрибутив можно изменить под себя, обновив или добавив драйверы под свое железо, или такие компоненты как, например, виртуальная циска. См. подробности тут – Image builder. В моих примерах как раз дистрибутив с параметрами из этого поста.

После этого:
## Регистрация дистрибутива ESXi
Add-EsxSoftwareDepot D:\depot\esxi5.0.0-with_LSI-469512.zip

## Список вариантов его загрузки, они могут отличаться модулями
Get-EsxImageProfile

## аплоад дистрибутива на AutoDeploy. Name - на свое усмотрение. 
## Item – указание базовых настроек этого дистрибутива. 
## Во первых - Image Profile, см. предыдущую команду. 
## Т.е. мы можем указывать, какие модули должны или не должны быть загружены. 
## Далее - контейнер в vCenter, куда следует поместить свежезагруженный хост. 
## Это объект типа Datacenter\Cluster\Folder.
## Pattern- признак сервера, на котором запускать этот дистрибутив с этим профилем
## Вместо паттерна для выборки серверов можно указать –AllHosts
New-DeployRule –Name “FirstBoot” –Item “With_LSI”,ClusterAutoDeploy,2AutoDeploy –Pattern “model=VMware Virtual Platform”

## Регистрация правила, созданного ранее
Add-DeployRule -DeployRule FirstBoot
В командлете New-DeployRule параметром –Item мы привязываем к стартующим с этого правила серверам контейнер в vCenter (datacenter, cluster, folder) куда они должны быть помещены, Image profile, host profile.

Кроме как для самого первого сервера указывать, скорее всего, будем сразу несколько параметров, как в моем примере:
–Item “With_LSI”,ClusterAutoDeploy,2AutoDeploy
  • “WithLSI” это Image Profile
  • ClusterAutoDeploy – имя моего кластер HA\DRS
  • 2AutoDeploy – название профиля настроек, host profile. У вас его пока нет, поэтому в самый первый раз его не указывайте, укажем позже.
Теперь сервера начнут загружаться в ESXi. И даже автоматически будут зарегистрированы в vCenter, в тот Datacenter, Cluster или Folder, который был указан при создании правила (у меня это кластер). Какие паттерны, признаки серверов, доступны:
PS C:\> get-vmhostattributes -vmhost "esxi01.vm4ru.local”

name  value 
----  ----- 
vendor  VMware, Inc.
uuid  423fecf3-eea1-a89b-5213-aeea6f50bf60
model  VMware Virtual Platform
gatewayv4 192.168.10.100
ipv4  192.168.10.51
hostname esxi01
domain  vm4ru.local
ipv4  192.168.111.1
oemstring Welcome to the Virtual Machine
asset  No Asset Tag
oemstring [MS_VM_CERT/SHA1/27d66596a61c48dd3dc721...
mac  00:50:56:bf:03:1b
mac  00:50:56:bf:03:1c
mac  00:50:56:bf:03:1d
mac  00:50:56:bf:03:1e
Как видите, мы можем довольно точно назначать тот или иной образ ESXi на сервера по критериям. По производителю, по mac адресу, и пр.
4) Настройка автоматической настройки серверов
Итак, первый сервер стартовал и даже был добавлен в vCenter.

Однако – сервер никак не настроен.

С учетом того, что ESXi был загружен в память по сети, даже если что-то настроить руками – эти настройки пропадут после перезагрузки.

Поэтому для настройки серверов, разворачиваемых при помощи Auto Deploy используется механизм Host Profiles, параметры которого сохраняются в базе vCenter.

Нам потребуется настроить этот первый сервер:
  • Виртуальные коммутаторы, интерфейсы VMkernel.
  • iSCSI, NFS
  • Syslog
  • NTP
  • и пр.
Теперь создадим с этого сервера профиль, и сразу на этот же сервер его и назначим.

Проверим на соответствие. Проверка покажет расхождения в конфигурации, нам потребуется создать файл ответов (Update answer file).

После прохождения мастера – Check answer file, затем check complince.

Значение в столбце Answer File Status должно стать Complete, настройки сервера должны стать соответствующими этому профилю.

Все. Теперь при перезагрузках сервер будет не только загружать на себя ESXi, но и конфигурацию подтягивать.

На этом этапе мы имеем первый сервер, и этот сервер загружается по сети, и настраивается профилем настроек.
5) Настройка загрузки второго и всех следующих серверов:
Надо изменить правило AutoDeploy так, чтобы оно еще профиль настроек привязывало к загружаемым серверам. Допустим, вы делали по моему примеру, и создали правило командой:
New-DeployRule –Name “FirstBoot” –Item “With_LSI”,ClusterAutoDeploy –Pattern “model=VMware Virtual Platform” 
Удалим это правило командой:
Remove-DeloyRule “FirstBoot” –delete
Создадим заново, но теперь указав и ранее созданный профиль настроек:
New-DeployRule –Name “ProductionRule” –Item “With_LSI”,ClusterAutoDeploy,2AutoDeploy –AllHosts
Ну и активируем:
Add-DeployRule -DeployRule ProductionRule
Все.

Теперь любой новый сервер, будучи загруженным в первый раз, сразу попадает в кластер “ClusterAutoDeploy”, и на него назначается профиль настроек “2AutoDeploy”.

Нам остается нажать “Update answer file”, указать уникальные параметры типа IP адресов и т.п., и все – сервер готов к эксплуатации, его настройки после каждой перезагрузки будут подтягиваться из этого файла ответов.
Обновление образа
Допустим, у нас есть желание заменить дистрибутив ESXi, с которого стартуют сервера. Например, мы хотим использовать VMware HA – и нам имеет смысл добавить его агента сразу в образ. Для этого нам потребуется следующие команды:
## Добавление источника пакетов
Add-EsxSoftwareDepot http://<IP вашего vCenter>:80/vSphere-HA-depot

## Создание нового профиля образа ESXi
New-EsxImageProfile -CloneProfile ESXi-5.0.0-469512-standard -name “ESXiHA”
## Добавление в новый профиль агента HA – Fault Domain Manager
Add-EsxSoftwarePackage -ImageProfile “ESXiHA” -SoftwarePackage vmware-fdm
## Удалим старое правило старта
Remove-DeployRule “ProductionRule” –delete
## Создание нового правила AutoDeploy, на основе нового профиля
New-DeployRule –Name “ProductionRule” –Item “With_LSI”,ClusterAutoDeploy,2AutoDeploy –AllHosts
Add-DeployRule -DeployRule “ProductionBootRule”
Более подробно про обновление образа именно на новую версию ESXi тут – Updating your ESXi host using VMware vSphere 5 Autodeploy.

Еще про CoreDump надо будет написать.

UPD. Troubleshooting Auto Deploy Rules.

По мотивам раз, два, три.

15 комментариев:

  1. Мощно. Спасибо.

    Только жаль, что все эти вкусности в Enterprise plus.

    ---
    Deshifrator

    ОтветитьУдалить
  2. Миша, ради секспиремента отключи сетку... минут на пять... а потом включи! ;-)

    btw: на удивление за циску нам ничего не было... ;)

    ОтветитьУдалить
  3. хм. сейчас лениво стенд запускать, но если ты имеешь в виду сетку AutoDeploy - я уверен что ничего не произойдет. ESXi и с вытащенной флешкой живет месяцами, и тут ему AutoDeploy только для старта нужен.

    ОтветитьУдалить
  4. без этой магии не работало что ли? нахрена все усложнять и так запутанную виртуализацию на вмарь. ставил и ее без автодеплой, тупо поднимая tftp+dhcp и любой дистр будет грузиться по PXE. честно глупые эти фишки делает, такое ощущения что они заняты с чего еще состричь капусту, достали уже со своими ценами, дороже чем само железо стало

    ОтветитьУдалить
  5. В данном случае ESXi загружается прямо в оперативную память. Это позволяет избежать зависимостей от железа, флешек, к примеру.
    Отключение сети на это также не влияет, т.к. ESXi загрузился и работает в памяти, ему больше ничего не нужно.

    Схема tftp+dhcp все же инсталлирует ESX на хост, в данном случае же ничего и никуда не инсталлируется.

    ОтветитьУдалить
    Ответы
    1. Можно ткнуть на инфу про инсталл? А то скоро очень много хостов будет.

      Удалить
  6. Схема tftp+dhcp не только инсталлирует, но и загружает ОС по сети, установленной на сервере. Это скорее для тех кто не очень в системном администрировании, так называемых "эникейшиков"

    ОтветитьУдалить
  7. Добрый день!
    Хотел бы узнать, что делать, если autodeploy перестанет работать? Как обеспечивать отказоустойчивость этого сервиса?

    ОтветитьУдалить
  8. пока кроме бекапа (образом?) нечего посоветовать.

    хотя развернуть AutoDeploy с нуля несложно - если сохранен правильный образ ESXi, и скрипт с командами по его настройке в AutoDeploy (те что описаны в посте). Ну и vCEnter должен быть жив и профили настроек сохранены - т.е. бекап БД vCenter требуется.

    ОтветитьУдалить
  9. В вопросе ув.Admin`a мне видится скорее иная подоплёка - AutoDeploy-server как SPOF.

    Если крякнет стартовый диск/флешка хоста Сферы, то (после перезагрузки/шатдауна) не поднимется только этот хост.
    Если же крякнет автодеплой-сервер, то ни один хост (из тех, что стартуют с данного сервера) не поднимется...

    В первом случае "осиротевшие" VM`ки можно стартовать на других хостах. Во втором... ну, вы поняли... :)

    С уважением,
    Umlyaut.

    ОтветитьУдалить
  10. ну это я и в посте указал.

    а в комментарии имел в виду что кроме бекапа ничего и нету.

    ОтветитьУдалить
  11. Прошу прощения - не понял, что это был коммент автора поста и блога. :)))
    Привык, что Вы - michigun (в т.ч. и тут), поэтому подумал, что "это какой-то другой Гомер"(с) :)))

    C уважением,
    Umlyaut.

    P.S. По сути проблемы мог бы помочь MSFC на недорогом железе, но... а оно того стОит - подпирать фрактальными костылями?

    ОтветитьУдалить
  12. Еще для view что-то подобное сделали бы. Чтобы вместо использования windows, можно было по pxe загрузить систему с клиентом view.

    ОтветитьУдалить
  13. afaik есть такие сборки. не разбирался, но упоминания встречал.

    ОтветитьУдалить