Управління HP ILO за допомогою PowerShell

Спеціально для Windows адміністратора і ІТ-професіоналів Hewlett-Packard нещодавно випустила набір з 110 PowerShell командлетів, що дозволяють безпосередньо з систем Windows віддалено налаштовувати і управляти інтерфейсами HP ILO на серверах HP. Цей набір командлетів носить назву HP Scripting Tools для Windows PowerShell і призначений для роботи з HP iLO 3 і iLO 4. Командлети об'єднані в модуль HPiLOCmdlets і призначені для:

  • Пошуку і сканування інтерфейсів ILO в мережі
  • Доступу до налаштувань ILO, в тому числі настройками інтерфейсу, користувачів ILO, управління електроживленням, балками, IML і т.д.
  • Можливість одночасного управління відразу декількома платами iLOs

Завантажити HP Scripting Tools для Windows PowerShell можна тут. Виберіть версію і розрядність своєї ОС (підтримуються ОС Windows 7 SP1, Microsoft Windows 8, Microsoft Windows Server 2008 R2 SP1 і Microsoft Windows Server 2012 / R2) і скачайте відповідний пакет (на момент написання статті на сайті була доступна HP Scripting Tools Version 1.1 - 20 Mar 2014 року).

У нашому прикладі це пакет для Windows Server 2012 R2 -Z7550-10537-x64.exe (479 KB). Розпакуйте вміст архіву в довільну папку і запустіть установку модуля HP Scripting Tools для PowerShell (HPiLOCmdlets-x64.msi).

Примітка. Для роботи командлетів на комп'ютері необхідно встановити Microsoft Management Framework 3.0 (включає PowerShell 3.0) або Microsoft Management Framework 4.0 (PowerShell 4.0). Для PoSh 3.0 також буде потрібно встановити .NET 4.0, для PoSh 4.0 - NET 4.5.

Модуль встановлюється в каталог C: \ ProgramFiles \ Hewlett-Packard \ PowerShell \ Modules, але шлях до цього каталогу в системну змінну PSModulePath не вноситься. Тобто Середа PowerShell за замовчуванням цей модуль не бачить. Виправимо це непорозуміння командою:

$ Env: PSModulePath + = "; $ env: ProgramFiles \ Hewlett-Packard \ PowerShell \ Modules"
Порада. Ця зміна буде діяти тільки в рамках тче сесії PowerShell.

Повний список PowerShell командлетів HP (110 штук) можна вивести так:

Get-Command * HP *

За допомогою цих командлетів можна отримувати статус і управляти безліччю налаштувань плати ILO на серверах HP: в тому числі управляти електроживленням, порядком завантаження, сигнальним світлодіодом (UID), отримувати інформацію про версії HP ILO, оновлювати прошивку тощо.

Інформацію про призначення, аргументах і прикладах використання конкретного командлет можна отримати так:

help -Full

В першу чергу познайомимося з Командлети, що дозволяє виявити в мережі інтерфейси HP ILO. Як аргумент він може приймати як конкретний IP адресу, так і діапазон IP адрес:

Find-HPiLO 10.10.20.138
Find-HPiLO 10.10.20.138-141

У нашому прикладі при сканування діапазону IP адрес ми виявили 3 інтерфейсу ILO v3, встановлених на серверах HP Proliant DL 360 G7.

Примітка. DNS ім'я в команді вказати не вийде, тому що Командлети не підтримує дозвіл імен.

Щоб не вказувати кожен раз, збережемо в відповідних змінних IP адреса ILO, ім'я та пароль користувача, що володіє доступом до консолі ILO:

$ SrvILO = Find-HPiLO 10.10.20.141 $ username = 'Admin' $ password = 'myILOpassw0rd'

Спробуємо зрозуміти включено чи електроживлення на сервері:

Get-HPiLOHostPower -Server $ srvILO -Username $ username -Password $ password

Як ми бачимо, сервер включений (HOST POWER: ON).

Щоб вимкнути сервер HP за допомогою інтерфейсу ACPI виконаємо команду:

Set-HPiLOHostPower -Server $ srvILO -Username $ username -Password $ password -HostPower "No"

Вилучено включити сервер можна так:

Set-HPiLOHostPower -Server $ srvILO -Username $ username -Password $ password -HostPower "Yes"

Напишемо невеликий скрипт, який бере параметри з CSV файлу і включає / відключає всі сервера HP за списком.

В CSV файлі будуть містяться ip адресу сервера, ім'я користувача і пароль, потрібний статус електроживлення на сервері. Формат файлу ILO.csv:

Server, Username, Password, HostPower 10.10.20.160, Admin, myILOpassw0rd, Yes 10.10.20.162, Admin, sdILOdsd, No

Наступний PoSh скрипт пройдеться по csv файлу і переведе харчування всіх сєверов в потрібний стан:

$ Path = ". \ ILO.csv" $ file_csv = Import-Csv $ path $ p_ilo = Set-HPiLOHostPower -Server $ file_csv.Server -Username $ csv.Username '-Password $ file_csv.Password -HostPower $ file_csv.HostPower $ p_ilo | Format-List $ p_ilo = Get-HPiLOHostPower -Server $ file_csv.Server -Username $ file_csv.Username '-Password $ file_csv.Password $ p_ilo | Format-List

Тепер спробуємо віддалено включити на сервері індикатор UID (блакитного кольору). Спочатку дізнаємося поточний статус UID індикатора:

Get-HPiLOUIDStatus -Server $ srvILO -Username $ username -Password $ password

Включимо його:

Set-HPiLOUIDStatus -Server $ srvILO -Username $ username -Password $ password -UIDControl "Yes"

Далі спробуємо змінити порядок завантаження сервера HP (Boot Order). Отримаємо інформацію про поточні настройки пріоритету завантаження:

Get-HPiLOOneTimeBootOrder -Server $ srvILO -Username $ username -Password $ password

Змінимо порядок завантаження сервера HP, вказавши в якості перового завантажувального пристрою CDROM:

Set-HPiLOOneTimeBootOrder -Server $ srvILO -Username $ username -Password $ password -Device "CDROM"

Змонтуємо в віртуальний CDROM потрібний iso образ:

Mount-HPiLOVirtualMedia -Server $ srvILO -user $ srvILO -pass $ password -Device CDROM -ImageURL 'http://hpdlsrv1.winitpro.ru/dir/windows2012r2dtc.iso'

Отмонтировать iso образ можна так:

Dismount-HPiLOVirtualMedia -Server $ srvILO -user $ srvILO -pass $ password -Device CDROM

Ми розглянули тільки базові приклади використання модуля HPiLOCmdlets, але і по ним видно наскільки набір командлетів HP Scripting Tools для Powershell може спростити завдання системного адміністратора при роботі з серверами HP в частині автоматизації повсякденних завдань.