PowerCLIВиртуализация VMware

Использование PowerCLI для установки “Сheck and upgrade vmware tools before each power on”

Настройка проверки и обновления vmware tools перед каждым включением ВМ возможна в том числе и с помощью Update Manager. Поэтому прежде чем перейти собственно к вопросу, обозначенному в заголовке, рассмотрю некоторые моменты, касающиеся самого процесса обновления VMware Tools, не затронутые в прошлой статье Обновление VMware Tools с использованием VUM (Update Manager). Там не все так просто, поэтому остановлюсь на них поподробнее сейчас. 

Если у вас не установлен VUM то можно переходит сразу ко второй части статьи.
Итак, начнем с того, что у нас есть VUM. В этом случае мы можем обновить VMware Tools:
– немедленно;
– по расписанию;
– при загрузке (при следующем цикле включения/перезагрузки).
Также можно установить галочку upgrade Tools during power cycling. В этом случае Update Manager самостоятельно проверяет версию VMware Tools и при необходимости обновляет ее при включении ВМ. Галочка ставится в оснастке VMware Tools Upgrade Settings. Вызвать данное меню можно как для отдельной ВМ, так и для папки.


В этом случае Update Manager не создает снапшот.

При использовании первых трех методов снапшот перед обновлением создается автоматически. 



И, как видим, живет он два часа после чего автоматически удаляется.
Однако галочку “Take a snapshot of the VMs before remediation to enable rollback” можно и убрать.

Однако при использовании VMware vCenter Update Manager 6.0.x наблюдался один баг, который был исправлен  в версии VMware vSphere Update Manager 6.0 Update 3.
Если у вас версия ниже Update 3, то обязательно прочитайте статью в базе знаний Update Manager takes virtual machine snapshot when updating VMware Tools (2146592).
Суть бага в том, что при выборе в планировщике “Update on next Virtual Machine power cycle”, т.е. при следующей перезагрузке  (именно в планировщике, не путать с оснасткой VMware Tools Upgrade Settings) снапшот создается сразу после завершения работы мастера. Негативный эффект в том, что если машины перезагрузятся не скоро, и их много, то все это время снапшоты будут жить. И увеличиваться в размере. А потом при удалении объединяться с дисками, что может вызвать сильное падение производительности дисковой подсистемы. 

Использование PowerCLI для установки Сheck and upgrade vmware tools before each power on”.
Проверять версию vmware tools перед каждой загрузкой и обновлять ее может не только VMware vSphere Update Manager. Галочку Сheck and upgrade vmware tools before each power on” можно установить и в свойствах ВМ. Выглядит она таким образом


По умолчанию галочка не стоит, поскольку если случится сбой, и ВМ начнут запускаться одновременно, то одновременное неконтролируемое администратором  обновление тулзов может сказаться на производительности всей инфраструктуры в целом. 
Но если все же вам нужно ее установить, и если машин много, то это займет определенное время. А если галочка устанавливается временно…
Для автоматизации сего процесса можно использовать PowerCLI. Хотя, строго говоря, командлета PowerCLI для этой операции нет. Но зато есть VMware vSphere API.
Итак, приступим.
1. Создаем объект VMware.Vim.VirtualMachineConfigSpec и назначаем его переменной $spec

$spec = New-Object -Type VMware.Vim.VirtualMachineConfigSpec  
2. Создаем объект VMware.Vim.ToolsConfigInfo и назначаем его свойству Tools переменной $spec
$spec.Tools = New-Object -Type VMware.Vim.ToolsConfigInfo   

3. Затем присвоим значение “UpgradeAtPowerCycle” Tools.ToolsUpgradePolicy переменной $spec

$spec.Tools.ToolsUpgradePolicy = “UpgradeAtPowerCycle”  

4. И, наконец, запустим цикл по всем ВМ и выполним метод ReconfigVM_Task() для созданного объекта VMware.Vim.VirtualMachineConfigSpec как параметр
для установления галочки Uprade VMware Tools before each power on checkbox on each virtual machine:

Get-VM | ForEach-Object {$_.ExtensionData.ReconfigVM_Task($spec)}  

Можно выполнить для каждой ВМ c ОC Windows или Linux, используя 

{$_.guest.guestFamily -eq ‘windowsGuest’} и {$_.guest.guestFamily -eq ‘linuxGuest’}, например
Get-VM | Where {$_.guest.guestFamily -eq ‘windowsGuest’} | ForEach-Object {$_.ExtensionData.ReconfigVM_Task($spec)}

Узнать статус политики (ToolsUpgradePolicy)

get-view -ViewType virtualmachine | select name,@{N=’ToolsUpgradePolicy’;E={$_.Config.Tools.ToolsUpgradePolicy } }

Если необходимо убрать галочку, то выполняем

$spec.Tools.ToolsUpgradePolicy = “Manual”
и затем команду из п.4.

Related Post

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте как обрабатываются ваши данные комментариев.