Zabbix由浅入深之主机自动化注册(Windows篇)

运维 系统运维 自动化
通过通过ansible远程到Windows主机,推送powershell脚本,Windows执行powershell脚本自动拉取agent文件、替换配置、启动一系列操作。

[[411357]]

在之前的Linux篇提到了自动化安装的原理其实也是脚本安装,只不过安装部分省去了部分人力重复工作,但是Windows比较特殊,需要用到powershell这款自带的软件,这款软件在Windows 2008版本引入后,开启了Windows自动化的旅程,由此拉开了Windows命令行的序幕,题外话就不提了,如果感兴趣可以参考官方文档,最新的7.0还是比较强大的。

正文

思路

整体思路是通过通过ansible远程到Windows主机,推送powershell脚本,Windows执行powershell脚本自动拉取agent文件、替换配置、启动一系列操作。

准备工作

由于Ansible远程到Windows需要主机powershell版本为3.0以上,如果不是3.0的powershell需要进行升级,需要注意的是Windows 2008 R2后的版本(不包含Windows 2008 R2以前的版本)起步是4.0,所以都是满足的。

Zabbix由浅入深之主机自动化注册(Windows篇)

Windows 2008 R2

1.下载framework 4.5.2以上。

这里我选择的是4.6.1,自行互联网下载。(下面相关软件我会打包放在一起)

Zabbix由浅入深之主机自动化注册(Windows篇)

2.升级powershell

目前官方提供的是WMF5.1版本。安装完成后需要重启才行。

Zabbix由浅入深之主机自动化注册(Windows篇)

3.查看版本信息。

  1. $PSVersionTable 
Zabbix由浅入深之主机自动化注册(Windows篇)

升级成功

开启远程功能

1.查看powershell执行策略(需要管理员权限运行)

默认应该是Restricted,需要改为remotesigned,这么做有什么意义?如果不改为该值会出现PS脚本无法执行。

  1. get-executionpolicy 
  2. set-executionpolicy remotesigned 

遇到这样的报错证明没有用管理员身份运行

Zabbix由浅入深之主机自动化注册(Windows篇)

输入Y即可

2.启动远程管理功能。

启动远程管理服务(winrm),输入y即可

  1. winrm quickconfig 
Zabbix由浅入深之主机自动化注册(Windows篇)

3.启用认证。

  1. winrm set winrm/config/service/auth '@{Basic="true"}' 
  2. winrm set winrm/config/service '@{AllowUnencrypted="true"}' 
Zabbix由浅入深之主机自动化注册(Windows篇)

Ansible连接测试

1.安装pywinrm,此处出问题的朋友估计是pip工具没有或者其他原因,自行互联网搜索

  1. pip3 install pywinrm 

2.编写ansible hosts文件

  1. vi /etc/ansible/hosts 
  2.  
  3. [window] 
  4. 192.168.31.82 
  5. [window:vars] 
  6. ansible_ssh_user="Administrator" 
  7. ansible_ssh_pass="123.com" 
  8. ansible_ssh_port=5985 
  9. ansible_connection="winrm" 
  10. ansible_winrm_server_cert_validation=ignore 

 3.ansible ping 测试

  1. ansible window -m win_ping 
Zabbix由浅入深之主机自动化注册(Windows篇)

PS脚本

下面的脚本粘贴到.ps1后缀的文件里(文件自行创建)

这里需要注意的是在获取文件的时候注意版本,这里我采用的是Zabbix 5.4的agent v2版本,如果你的版本非次版本,则需要去官网查看,如下面的图二和图三,另外agent2和agent也有所区别,如果懒癌的朋友可以找我要不同版本对应的脚本,否则执行会报错,我相信大家都会一点powershell的语法,毕竟我们都是站在巨人的肩膀上。

  1. mkdir C:\zabbix 
  2. invoke-webrequest -uri https://cdn.zabbix.com/zabbix/binaries/stable/5.4/5.4.2/zabbix_agent2-5.4.2-windows-amd64-openssl-static.zip -outfile C:\zabbix\zabbix-win.zip 
  3. $file = "C:\zabbix\zabbix-win.zip" 
  4. $shell = New-Object -ComObject shell.application 
  5. $zip = $shell.NameSpace($file) 
  6. $dest =  $shell.NameSpace((Split-Path $file -Parent)) 
  7. $dest.CopyHere($zip.Items()) 
  8.  
  9.  
  10. Copy-Item C:\zabbix\bin\*.exe C:\zabbix\ 
  11. Copy-Item C:\zabbix\conf\*.conf C:\zabbix\ 
  12. Rename-Item C:\zabbix\zabbix_agent2.conf  zabbix_agentd.conf  
  13. Rename-Item C:\zabbix\zabbix_agent2.exe  zabbix_agentd.exe  
  14. Remove-Item C:\zabbix\zabbix-win.zip 
  15.  
  16.  
  17. $conf= Get-Content C:\zabbix\zabbix_agentd.conf -Encoding UTF8 
  18. $conf= $conf.Replace("LogFile=c:\zabbix_agentd.log""LogFile=c:\zabbix\zabbix_agentd.log"
  19. $conf= $conf.Replace("Server=127.0.0.1""Server=192.168.31.137"
  20. $conf= $conf.Replace("ServerActive=127.0.0.1""ServerActive=192.168.31.137:10051"
  21. $conf= $conf.Replace("Hostname=Windows host""Hostname=${Env:COMPUTERNAME}"
  22. #$conf= $conf.Replace("# HostnameItem=system.hostname""HostnameItem=system.hostname"
  23. $conf= $conf.Replace("# HostMetadata=""HostMetadata="
  24.  
  25.  
  26. [IO.File]::WriteAllLines("C:\zabbix\zabbix_agentd.conf", $conf) 
  27.  
  28.  
  29. cd  C:\zabbix\ 
  30. .\zabbix_agentd.exe -i -c C:\zabbix\zabbix_agentd.conf 
  31. .\zabbix_agentd.exe -s -c zabbix_agentd.conf 
Zabbix由浅入深之主机自动化注册(Windows篇)

选择zip包

Zabbix由浅入深之主机自动化注册(Windows篇)

下载地址

推送脚本并安装

1.编写playbook,一定要注意格式

  1. --- 
  2. - hosts: window 
  3.   tasks: 
  4.     - name: pull 
  5.       win_copy: 'src=/root/install.ps1 dest=c:/' 
  6.     - name: install 
  7.       win_shell: "c:/install.ps1" 

2.执行playbook

  1. ansible-playbook window.yml 
Zabbix由浅入深之主机自动化注册(Windows篇)

执行效果

Zabbix前端操作

由于此前在Linux篇已经讲过了,此处不再细讲,下图代表条件为主机名包含K进行自动注册,动作为添加主机、添加到主机组、链接到模板。

Zabbix由浅入深之主机自动化注册(Windows篇)

遇到的问题

如果在测试过程中遇到下列问题,大概率是防火墙的问题,需要放开入方向10050端口或者采用主动模式即可,另外在08以后的版本可以通过powershell关闭,这里不再演示,我会在附件里提供。

Zabbix由浅入深之主机自动化注册(Windows篇)

最终效果

Zabbix由浅入深之主机自动化注册(Windows篇)

Windows 2008 R2

Zabbix由浅入深之主机自动化注册(Windows篇)

ansible推送剩下的Windows机器

Zabbix由浅入深之主机自动化注册(Windows篇)

写在最后

其实整体来讲,Windows的操作相对较复杂,因为需要手动开启远程的一些功能,所以与其说是自动化倒不如说是脚本安装更为合适,只不过可以批量,也许是我才疏学浅,还有更好的方式去实现,但思想应该是没错的,只不过是换种更简便的方式,那么自动化注册部分到这里该结束了。

 

责任编辑:姜华 来源: 今日头条
相关推荐

2021-07-09 06:28:49

ZabbixLinux运维

2021-03-25 08:21:07

Zabbix主机群组监控

2021-08-11 06:34:14

ZabbixDocker运维

2011-04-01 14:19:24

zabbix应用

2021-07-13 07:12:04

Zabbix监控网络设备

2017-01-18 10:57:24

MySQLZabbix监控

2019-04-17 07:59:09

Puppet自动化集群管理

2009-07-16 17:06:23

Windows Emb

2024-02-26 09:00:00

生成式AI主机自动化

2017-12-17 21:58:18

2021-01-04 08:55:07

ZabbixProxy分布式部署

2016-09-07 13:15:24

Zabbix监控Action

2014-08-04 10:10:35

IT运维自动化运维

2021-04-29 09:40:32

测试IDEAirtest

2010-03-26 11:36:50

Windows Emb

2018-06-22 12:40:31

Windows 10Windows黑暗模式

2021-03-19 08:47:38

Zabbix 5.2VMware监控

2010-10-08 13:45:46

2021-04-23 08:41:17

Zabbix 5.2Nginx监控

2021-04-15 08:45:25

Zabbix 5.2Apache监控
点赞
收藏

51CTO技术栈公众号