Автоматическое обновление аналогичных гостевых ОС VM

Можно ли обрабатывать автоматические обновления гостей виртуальных машин, которые отличаются только с точки зрения управления конфигурацией? Я спрашиваю об общих или специальных технологиях, которые способствуют этому. Короче говоря, у меня есть несколько установок CentOS/Debian, которые можно рассматривать как конфигурацию чистой установки + марионетка. Я хочу, чтобы в автоматическом режиме, yum update или эквивалент (apt-get upgrade) или установка пакета X. Я хочу, чтобы это произошло, взяв мой шаблон виртуальной машины, обновив там ОС, а затем заново развернув каждую виртуальную машину на основе этого шаблона (после того, как я посмотрел на шаблон, чтобы убедиться, что ничего не сломано).

Мне все равно, если это ESXi или XenServer или openvz или что-то среднее. Я не против установки сторонних инструментов. Я знаю об обновлениях XenServer, но это только для хостов.

1 ответ

Короче говоря, вы хотите построить шаблон. В соответствии с вашим графиком обслуживания, преобразовать его в виртуальную машину, загрузить новую виртуальную машину, запустить sudo yum -y update ; sudo shutdown -h now,

Как только он выключится, преобразуйте его обратно в шаблон с работающей виртуальной машины. Поскольку у вас уже есть управление конфигурацией, вы просто создадите новую виртуальную машину, соответствующую манифестам старой, и перенесите конфигурацию на новую, поменяйте местами записи DNS и уничтожите старую.

Я не видел постоянного инструмента для выполнения этой работы, но VMWare PowerCLI (плагин PowerShell для VMWare VCenter) может преобразовывать шаблоны и виртуальные машины с помощью Set-VM -ToTemplate и Set-Template -ToVM Команды [1].

После того, как виртуальная машина (живое представление шаблона) запущена и запущена, вы можете вводить команды для гостя, используя Invoke-VMScript команда [2], например, выдача ваших команд yum [3].


Я играл с идеей этого, и у меня был взлом Q&D выходных. Я не тестировал этот скрипт, и он почти наверняка ошибочен, но вот основная идея, с которой можно начать. Обратите внимание, что у него есть некоторые плохие идеи, такие как включение пароля в сценарий или использование плоского пространства имен для ваших виртуальных машин и шаблонов.

#################################
## Преобразовать шаблон VMWare в работающий
## система, примените обслуживание, затем конвертируйте
## вернуться к шаблону
##
## Обратите внимание, это наивно не делает никаких ошибок-
## проверяет и не указывает много информации
##
## Пожалуйста, адаптируйтесь к вашей среде
##
#################################


Param {
    [строка] $ templatename;
}

$ RHELPasswd = 'P @ $$ w0rd!';

if (! $ templatename) {
    Ошибка записи "Пожалуйста, передайте имя шаблона в командной строке";
    выход (-1);
}

if (Get-Template -Name $ templatename) {
    $ vm = Set-Template -Template $ templatename -ToVM;
    $ guestcript = 'sudo yum -y update; отключение sudo -h сейчас ';
    Invoke-VMScript -VM $vm -ScriptText $guestcript -GuestUser 'root' -GuestPassword $ RHELPasswd;
    Get-VM $ vm | Set-VM -ToTemplate -name $ templatename;
}


1: http://www.mikelaverick.com/2014/06/back-to-basics-creating-and-deploying-templates-with-powercli-part-7/ [4] и [5]
2: https://www.vmware.com/support/developer/PowerCLI/PowerCLI41U1/html/Invoke-VMScript.html
3: https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/7/html/System_Administrators_Guide/ch-yum.html
4: https://www.vmware.com/support/developer/PowerCLI/PowerCLI41U1/html/Set-VM.html
5: https://www.vmware.com/support/developer/PowerCLI/PowerCLI41U1/html/Set-Template.html

Другие вопросы по тегам