Ранее уже был пост про обновление агента Zabbix в домене. Помнится, та ещё была эпопея. Сегодня тема поста про установку агента Zabbix на вновь внедряемые в инфраструктуру рабочие станции.
Данная статья касается только автоматизации установки агента и запуска службы Zabbix Agent в операционной системе Windows с использованием PowerShell. Агента можно забрать здесь (прямая ссылка на архив).
Для работы PS1-скрипта обязательно наличие на сетевом ресурсе подготовленной папки с файлами агента, включая сформированный унифицированный файл конфигурации. Далее скрипт копирует папку из сетевого ресурса на системный диск хоста, корректирует файл конфигурации с учётом полного доменного имени компьютера и запускает службу агента.
Содержимое файла конфигурации zabbix_agentd.win.conf максимально упрощено и сведено до таких параметров:
LogFile=c:\zabbix_agentd.log Server=192.168.1.100 ServerActive=192.168.1.100 Hostname=namepc Timeout=30
Код скрипта:
# Заголовок скрипта #
[System.Console]::Title = "Установка ZabbixAgent"
# Функция проверки службы #
function GetService
{
Param([Parameter(Mandatory=$true)]$Name)
$getservice = Get-Service -Name $Name -ErrorAction SilentlyContinue
if ($getservice -eq $null)
{
return $false
}
else
{
return $true
}
}
# Пути установки #
$source = "\\server\agent"
$destination = "$env:SystemDrive\zabbix"
$configfile = "$env:SystemDrive\zabbix\zabbix_agentd.win.conf"
# Полное имя хоста #
$hostname = ([System.Net.Dns]::GetHostByName($env:computerName).HostName).ToLower()
# Имя службы #
$service = "Zabbix Agent"
# Данные для замены в конфигурационном файле #
$oldhost = "Hostname=namepc"
$newhost = "Hostname=" + $hostname
# Установка #
try
{
# Копирование файлов #
Write-Host "Копирование файлов $service..." -ForegroundColor Green
Copy-Item -Path $source -Destination $destination -Force -Recurse -ErrorAction Stop
# Формирование файла конфигурации #
Write-Host "Формирование файла конфигурации..." -ForegroundColor Green
(Get-Content $configfile) -replace $oldhost, $newhost | Out-File $configfile -ErrorAction Stop -Encoding ASCII
# Установка службы #
Write-Host "Установка службы $service..." -ForegroundColor Green
& $env:SystemDrive\zabbix\zabbix_agentd.exe --config $env:SystemDrive\zabbix\zabbix_agentd.win.conf --install
# Поиск службы и запуск #
if (GetService -Name $service)
{
Write-Host "Настройка и запуск $service..." -ForegroundColor Green
Set-Service -Name $service -StartupType Automatic -ErrorAction Stop
Start-Service -Name $service -ErrorAction Stop
}
else
{
Write-Host "Во время установки службы $service произошла ошибка!" -ForegroundColor Red
}
}
catch
{
Write-Host "Ошибка установки Zabbix Agent на $hostname..." -ForegroundColor Red
}
# Спим 10 минут перед закрытием #
Sleep(10)
Требуется только присвоить переменной $source адрес папки с файлами агента.
Разумеется, предполагается запуск от имени администратора.
Скрипт можно скомпилировать в исполняемый файл, используя модуль PS2EXE.