Автоматическое обновление аналогичных гостевых ОС 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