Предисловие
Недавно мой руководитель поставил задачу автоматизировать установку и настройку продукта Powerchute Business Edition на большом количестве серверов, с различным интерфейсом подключения UPS, USB, COM. Ранее занимался автоматизацией установки различного ПО, но с типом конфигурационных файлов которые использует данный продукт столкнулся впервые. Дело все в том что в качестве файла конфигурации задействованы бинарные файлы java, которые может изменять утилита с GIU интерфейсом, она не подходит для решения задачи.
Powerchute Business Edition изнутри
Рассмотрим более детально продукт, его возможно получить на официальном сайте APC в разделе загрузок. После скачивания мы получаем файл pcbesetup.exe с помощью него возможно установить три компонента, агент, сервер, консоль. Агент устанавливает драйвера на UPS и отвечает за автоматическое выключение сервера в случае пропадания электро питания. Сервер подключается к агенту считывает состояние UPS, в случает проблем может отправить оповещение на почту. Консоль, GUI интерфейс для настройки сервера и агента. Компонента три но фай один, что бы их получить в отдельности воспользуемся обычным WinRAR, откроем скачанный файл, перейдем в папку bin. Видим три наших компонента, но папок четыре, об этом чуть позже.
Автоматизация установки компонентов
Поскольку файлы ингаляторов сделаны в InstallShield, возможно создание файла ответов, о чем написано на сайте производителя. С начало необходимо поместить все разархивирование файлы к примеру по следующему пути C:APC, после в заданном порядке установить компоненты из командной строки:
1. C:APCagent-upslinksetup.exe -r установка агента версии 9.0.3
2. C:APCagentsetup.exe -r обновление агента до версии 9.1.1
3. C:APCserversetup.exe -r установка сервера версии 9.1.1
4. C:APCconsolesetup.exe -r установка консоли 9.1.1
После каждой установки будет создаваться файл ответов C:Windowssetup.iss, который необходимо скопировать в каталог с инсталлятором. Важно что бы при установки агента обнаружение UPS прошло автоматически, это даст в дальнейшем возможность устанавливать агент с различными интерфейсами подключения USB, COM, он будет сам обнаруживать UPS. Теперь проверим что файлы ответов работаю, удалим установленные компоненты, установим заново с ключом s.
1. C:APCagent-upslinksetup.exe -s
2. C:APCagentsetup.exe -s
3. C:APCserversetup.exe -s
4. C:APCconsolesetup.exe -s
Как видим установка прошла успешно:
Компоненты установились, теперь их необходимо настроить. Настройка агента проходит в момент установки, задается логин и пароль, который сохраняется в файле C:Windowssetup.iss , его настройку мы уже выполнили ранее когда создали файл ответов. Теперь наступает самое интересно настройка сервера с бинарным java файлом. Открываем консоль и удаляем ранее настроенный UPS.
после добавляем нового клиента, важно в диапазоне поиска указать подсесть 127.0.0.*, это необходимо для автоматизации, поскольку на разных серверах будут разные адреса агентов, а файл конфигурации мы не будем редактировать в ручную.
Настраиваем отправку оповещений на почту, в разделе Tools > Chenge Configuration Profile, описывать каждое поле не буду и так все понятно.
Все необходимое для автоматизации есть, копируем в файлы с настройками сервера, по следующему пути C:Program Files (x86)APCPowerChute Business Editionserver, файлы m11.bak, m11.cfg. в каталог C:APCserver, удаляем все все ранее установленные компоненты PowerChute, и устанавливаем их с помощью скрипта на PowerShell, листинг привожу ниже. Логика скрипта следующая, переходим в каталог где находиться файл скрипта, устанавливаем и обновляем агент, устанавливаем сервер, останавливаем службу сервера, меняем файлы конфигурации, запускаем службу сервера, устанавливаем консоль.
function InstallPowerShute{
.APCagent-upslinksetup.exe -s | Out-Null
.APCagentsetup.exe -s | Out-Null
$PowerChuteServerFolder= ${env:ProgramFiles(x86)} + "APCPowerChute Business Editionserver"
$PowerChuteServerFile1= $PowerChuteServerFolder + "m11.bak"
$PowerChuteServerFile2= $PowerChuteServerFolder + "m11.cfg"
.APCserversetup.exe -s | Out-Null
Stop-Service APCPBEServer -Force | Out-Null
remove-item -path $PowerChuteServerFile1 -force
remove-item -path $PowerChuteServerFile2 -force
Copy-Item ".APCserverm11.bak" -Destination $PowerChuteServerFolder
Copy-Item ".APCserverm11.cfg" -Destination $PowerChuteServerFolder
Start-Service APCPBEServer | Out-Null
.APCconsolesetup.exe -s | Out-Null
}
function Get-ScriptPath{
Split-Path -Path $MyInvocation.ScriptName
}
$path = Get-ScriptPath
cd $path
InstallPowerShute
Надеюсь у вас все получится.
Cпасибо за внимание.
Автор: Didenko_G