Различия

Здесь показаны различия между двумя версиями данной страницы.

Ссылка на это сравнение

Предыдущая версия справа и слева Предыдущая версия
Следующая версия
Предыдущая версия
rasprostranenie_agentov_na_bolshoe_kolichestvo_windows-stancij_sredstvami_powershell [2013/11/21 13:04]
ansealk
rasprostranenie_agentov_na_bolshoe_kolichestvo_windows-stancij_sredstvami_powershell [2013/11/21 13:23] (текущий)
Строка 1: Строка 1:
 +====== Распространение агентов на большое количество Windows-станций средствами PowerShell ======
  
 +Недавно передо мной встала задача — быстро установить большое количество Zabbix-агентов на Windows-компьютеры.
 +Я решил, что это можно и нужно решать с помощью скриптов. В качестве «языка» я выбрал Powershell.
 +
 +Powershell v2.0+ предлагает очень удобные средства удаленного запуска (Powershell Remoting) и я бы с удовольствием использовал бы их, но в моем случае имелась одна проблема — на «пути» могли попадаться сервера с Windows Server 2003 (без необходимых апдейтов),​ поэтому я принял решение использовать psexec.exe
 +
 +Мне нужно было максимально автоматизированное решение,​ поэтому я писал такой скрипт,​ в который я загружаю список DNS-имен серверов из файла, а на выходе получаю XML-файл для импорта в Zabbix.
 +
 +Первое,​ что нам надо сделать,​ это положить на общий ресурс папку (\\server\share\DeployZabbix),​ в которой будут:
 +  * Файл агента для x86-систем (zabbix_agentd86.exe)
 +  * Файл агента для x64-систем (zabbix_agentd64.exe)
 +  * Файл конфигурации zabbix_agentd.conf (в котором нужно указать хотя бы адрес/​DNS-имя Zabbix-сервера)
 +  * 2 батника,​ Install86.bat и Install64.bat со следующим содержанием:​ \\ <file bat Install86.bat>​
 +"​C:​\Program Files\Zabbix\zabbix_agentd86.exe"​ --config "​C:​\Program Files\Zabbix\zabbix_agentd.conf"​ --install
 +net start "​Zabbix Agent"
 +</​file><​file bat Install64.bat>​
 +"​C:​\Program Files\Zabbix\zabbix_agentd64.exe"​ --config "​C:​\Program Files\Zabbix\zabbix_agentd.conf"​ --install
 +net start "​Zabbix Agent"
 +</​file>​
 +
 +Второе,​ что нам потребуется,​ это папка, в которой будет лежать скрипт для разворачивания агентов,​ и все необходимое для его работы:​
 +  * Собственно,​ сам скрипт <file powershell DeployZabbix.ps1>​
 +Remove-Item .\out.txt #​уберем старые файлы
 +Remove-Item .\out.xml #​уберем старые файлы
 +copy .\Source1.txt .\out.txt #​скопируем первую часть xml в новый файл
 +#​импортируем список компьютеров
 +Import-CSV "​.\computers.csv"​ -header("​ComputerName"​) | ForEach {
 +$ComputerName = $_.ComputerName #​чуть-чуть упростим,​ мне так удобнее :)
 +New-Item "​\\$ComputerName\c$\Program Files\Zabbix"​ -Type Directory
 +$path = "​\\$ComputerName\c$\Program Files\Zabbix"​
 +Copy-Item \\server\share\DeployZabbix\* $path
 +$bit = Get-WmiObject Win32_Processor -computername $ComputerName | where {$_.DeviceID -eq "​CPU0"​} | Select AddressWidth
 +if ($bit -like '​*64*'​) {
 +.\psexec.exe \\$ComputerName "​C:​\\Program Files\Zabbix\Install64.bat"​ -h
 +}
 +else {
 +.\psexec.exe \\$ComputerName "​C:​\\Program Files\Zabbix\Install86.bat"​ -h
 +}
 +Add-Content .\out.txt ('<​host>'​)
 +Add-Content .\out.txt ('<​host>'​ + $_.ComputerName + '</​host>'​)
 +Add-Content .\out.txt ('<​name>'​ + $_.ComputerName + '</​name>'​)
 +gc Source2.txt | Out-File .\out.txt -Append -Encoding default
 +Add-Content .\out.txt ('<​dns>'​ + $_.ComputerName + '</​dns>'​)
 +gc Source3.txt | Out-File .\out.txt -Append -Encoding default
 +}
 +Add-Content .\out.txt ('</​hosts>'​)
 +Add-Content .\out.txt ('</​zabbix_export>'​)
 +Rename-Item .\out.txt "​out.xml"​
 +</​file>​
 +  * Три .txt-файла (Source1.txt,​ Source2.txt,​ Source3.txt) — это «куски» .xml файла, который получится на выходе. Не забудьте заменить группу «Default» на нужную Вам в тексте. <file xml source1.txt>​
 +<?xml version="​1.0"​ encoding="​UTF-8"?>​
 +<​zabbix_export>​
 +    <​version>​2.0</​version>​
 +    <​date>​2012-11-21T09:​18:​17Z</​date>​
 +    <​groups>​
 +        <​group>​
 +            <​name>​Default</​name>​
 +        </​group>​
 +    </​groups>​
 +    <​hosts>​
 +</​file><​file xml source2.txt>​
 +<​proxy/>​
 +            <​status>​0</​status>​
 +            <​ipmi_authtype>​-1</​ipmi_authtype>​
 +            <​ipmi_privilege>​2</​ipmi_privilege>​
 +            <​ipmi_username/>​
 +            <​ipmi_password/>​
 +            <​templates>​
 +                <​template>​
 +                    <​name>​Template OS Windows</​name>​
 +                </​template>​
 +            </​templates>​
 +            <​groups>​
 +                <​group>​
 +                    <​name>​Default</​name>​
 +                </​group>​
 +            </​groups>​
 +            <​interfaces>​
 +                <​interface>​
 +                    <​default>​1</​default>​
 +                    <​type>​1</​type>​
 +                    <​useip>​0</​useip>​
 +                    <ip/>
 +</​file><​file xml source3.txt>​
 +<​port>​10050</​port>​
 +                    <​interface_ref>​if1</​interface_ref>​
 +                </​interface>​
 +            </​interfaces>​
 +            <​applications/>​
 +            <​items/>​
 +            <​discovery_rules/>​
 +            <​macros/>​
 +            <​inventory/>​
 +        </​host>​
 +</​file>​
 +  * Собственно,​ сам psexec.exe (взять его можно [[http://​technet.microsoft.com/​en-us/​sysinternals/​bb897553.aspx|отсюда]]). Не забудьте положить распакованный psexec.exe в папку со скриптом
 +  * Файл computers.csv,​ в котором FQDN-имена серверов идут каждый с новой строчки.
 +
 +Затем, получившийся .xml-файл (который будет лежать в каталоге со скриптом) импортируем в список хостов в Zabbix.
GNU Free Documentation License 1.3
Driven by DokuWiki Recent changes RSS feed Valid CSS Valid XHTML 1.0 Яндекс.Метрика