HP iLO2 - Удалённое управление настройками с помощью hponcfg и PowerShell на примере установки сертификата HP SIM

После смены сертификата HP Systems Insight Manager (SIM) появилась необходимость заменить сведения о доверенном узле SIM в настройках интерфейса iLO2 на всех серверах HP ProLiant для того, чтобы, как и ранее, работала процедура прозрачного перехода от веб-узла SIM к веб-странице iLO2 - Single sign-on (SSO). Учитывая то, что контроллеров iLO2, требующих одинаковой настройки определённого параметра оказалось не так уж и мало, - возник вопрос об автоматизации этой задачи.

Выяснилось, что в составе утилиты HP Lights-Out Online Configuration Utility (по умолчанию устанавливается в C:\Program Files\HP\hponcfg) имеется CLI-утилита hponcfg.exe, которая позволяет обратиться к локальному контроллеру iLO2 и с помощью специально сформированного конфигурационного файла в формате XML выполнить изменение любых параметров контроллера. Встроенное описание ключей утилиты довольно скудное и поэтому для получения информации о ней можно воспользоваться руководством HP Integrated Lights-Out 2 Management Processor Scripting and Command Line Resource Guide.

Пример команды, с помощью которой можно получить текущую конфигурацию iLO2 в XML:

cd "C:\Program Files\HP\hponcfg"
hponcfg.exe /w "C:\Temp\iLO2-Output.xml"

В нашем случае в настройках контроллера сначала нужно удалить информацию о старом сертификате SIM а затем импортировать новый сертификат. Соответственно будем выполнять эту задачу в два этапа. То есть для удаления и установки сертификата используем отдельные конфигурационные файлы, которые передадим в последующем утилите hponcfg.exe.

Содержимое файла iLO2-DeleteHPSIMTrust.xml:

<RIBCL VERSION="2.1">
<LOGIN USER_LOGIN="Administrator" PASSWORD="blabla">
<SSO_INFO MODE="write">
<DELETE_SERVER INDEX="0" />
</SSO_INFO>
</LOGIN>
</RIBCL>

Выполняем удаление старого сертификата SIM с помощью вышеуказанного конфигурационного файла:

hponcfg.exe /f "C:\Temp\iLO2-DeleteHPSIMTrust.xml"

image

Содержимое файла iLO2-AddHPSIMTrust.xml

<RIBCL version = "2.1">
<LOGIN USER_LOGIN="Administrator" PASSWORD="blabla">
<SSO_INFO MODE="write">
<MOD_SSO_SETTINGS>
<TRUST_MODE VALUE="CERTIFICATE" />
</MOD_SSO_SETTINGS> 
<SSO_SERVER IMPORT_FROM="HPSIM.holding.com" />
</SSO_INFO>
</LOGIN>
</RIBCL>

В этом конфигурационном файле мы используем функцию импорта сертификата непосредственно с сервера SIM. Обратите внимание на то, что в обоих конфигурационных файлах в теге LOGIN мы используем вымышленные учетные данные, главное в нашем случае -  это наличие прав локального администратора на сервере где мы запускаем утилиту hponcfg.exe 

Выполняем импорт нового сертификата SIM с помощью вышеуказанного конфигурационного файла:

hponcfg.exe /f "C:\Temp\iLO2-AddHPSIMTrust.xml"

image

Если в вашей инфраструктуре используется некоторое количество серверов с Linux или ESX, то автоматизировать процесс передачи настроек iLO2 можно будет например с помощью подключения к той-же утилите hponcfg через Telnet или SSH, например так как это описано в заметке Damian Karlson - Modifying HP c-Class Blades via iLO and PowerShell

В моём случае все сервера, на которых нужно автоматизировать процесс передачи настроек iLO2, работают под управлением ОС Windows Server 2008 R2 и поэтому я воспользуюсь PowerShell.

Приведу пример PS-скрипта, который копирует на удалённые сервера нужные конфигурационные файлы xml, применяет их с помощью удалённого вызова утилиты hponcfg.exe и затем удаляет эти файлы. Список серверов считывается из текстового файла iLO2-Servers.txt с содержимым:

server1.holding.com
server2.holding.com
server3.holding.com

Содержимое скрипта iLO2-SetupHPSIMTrust.ps1:

$ScriptPath = "C:\Tools\Scripts"
$ServersListPath = "$ScriptPath\iLO2-Servers.txt"
$SIMDelTrustFile = "iLO2-DeleteHPSIMTrust.xml"
$SIMAddTrustFile = "iLO2-AddHPSIMTrust.xml"
$SIMDelTrustPath = $ScriptPath + "\" + $SIMDelTrustFile
$SIMAddTrustPath = $ScriptPath + "\" + $SIMAddTrustFile
$ToolPath = '"C:\Program Files\HP\hponcfg\hponcfg.exe"'
$SIMDelTrustCMD = "& $ToolPath /f C:\iLO2-DeleteHPSIMTrust.xml"
$SIMAddTrustCMD = "& $ToolPath /f C:\iLO2-AddHPSIMTrust.xml"

Get-Content $ServersListPath | ForEach-Object {
Write-Host "`nRun commands on server " $_ "`n"  -foregroundcolor DarkGreen
$RemoteVolume = "\\" + $_ + "\C$"
Copy-Item -Path $SIMDelTrustPath -Destination $RemoteVolume
Write-Host "Run: " $SIMDelTrustCMD "`n"  -foregroundcolor DarkRed
Invoke-Command -computername $_ -ArgumentList $SIMDelTrustCMD -ScriptBlock { param ($DCmd) Invoke-Expression $DCmd }
Write-Host "`n"
$RemoteFile1 = $RemoteVolume + "\" + $SIMDelTrustFile
Remove-Item -Path $RemoteFile1
Copy-Item -Path $SIMAddTrustPath -Destination $RemoteVolume
Write-Host "Run: " $SIMAddTrustCMD "`n"  -foregroundcolor DarkRed
Invoke-Command -computername $_ -ArgumentList $SIMAddTrustCMD -ScriptBlock { param ($ACmd) Invoke-Expression $ACmd }
Write-Host "`n"
$RemoteFile2 = $RemoteVolume + "\" + $SIMAddTrustFile
Remove-Item -Path $RemoteFile2
}

В рассматриваемом примере файлы iLO2-AddHPSIMTrust.xml, iLO2-DeleteHPSIMTrust.xml, iLO2-Servers.txt и iLO2-SetupHPSIMTrust.ps1 расположены в одном каталоге C:\Tools\Scripts

При необходимости вы можете переработать приведённый пример под свои задачи, например массовое изменение сетевых настроек или управление локальными учетными записями iLO2. Для того чтобы подсмотреть примеры xml файлов, решающих разнообразные задачи рекомендую скачать архив XML Scripting Sample по первой ссылке в конце заметки.

Дополнительные источники информации:

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