咱们这里使用的是ansible来对zabbix-agent进行批量部署,固然在Linux上也可使用脚原本完成部署html
ansible:10.127.0.133 agent1:172.168.0.4 agent2:172.168.0.5
为方便ansible对agent主机的管理,须要将ansible与agent进行公钥认证来实现免密登录 python
ssh-keygen -t rsa ssh-copy-id -i /root/.ssh/id_rsa.pub 172.168.0.4 ssh-copy-id -i /root/.ssh/id_rsa.pub 172.168.0.5
[Linux-agent] 172.168.0.4 172.168.0.5
建立一个模板文件,里面包含agent中可变的变量,如:主机名和server地址linux
[root@zabbix-server ~]# vim /etc/ansible/zabbix_agentd.conf PidFile=/var/run/zabbix/zabbix_agentd.pid LogFile=/var/log/zabbix/zabbix_agentd.log LogFileSize=0 Server={{server}} ServerActive={{server}} Hostname={{hostname}} Include=/etc/zabbix/zabbix_agentd.d/*.conf UnsafeUserParameters=1
vim /etc/ansible/linux-agent.yml - hosts: zabbix-agent remote_user: root vars: server: 10.127.0.133 hostname: "{{ ansible_hostname }}" tasks: - name: install rpm command: rpm -ivh https://repo.zabbix.com/zabbix/4.2/rhel/7/x86_64/zabbix-agent-4.2.1-1.el7.x86_64.rpm - name: install agent command: yum install zabbix-agent -y - name: cp templates zabbix_agentd.conf to zabbix agentd template: src=/etc/ansible/zabbix_agentd.conf dest=/etc/zabbix/zabbix_agentd.conf - name: restart zabbix-agent command: systemctl restart zabbix-agent
ansible-playbook -i /etc/ansible/hosts /etc/ansible/linux-agent.yml git
能够看到playbook已经执行成功了,接下来能够看一下agent的配置文件 github
能够看到,agent配置文件中的变量也修改完成shell
能够看到自动发现规则生效了,并连接了Linux-OS模板 vim
Windows下的批量部署能够经过配置管理工具或者域控制器进行,这里我使用的ansible来对Windows主机进行批量部署windows
ansible:10.127.0.133 Windows server2012:172.168.0.6
pywinrm>=0.3.0
pywinrm可使用pip来进行安装,执行如下命令ssh
pip install pywinrm>=0.3.0
PowerShell 3.0 NET Framework 4.0+
我这里使用的是2012,上面的环境是不须要作配置的,若是是使用的server2008或更低版本须要进行升级以后才能使用,获取升级的详细信息能够访问ansible官方文档查看
https://docs.ansible.com/ansible/latest/user_guide/windows_setup.html#host-requirementside
因为ansible控制Windows不是使用的ssh协议,而是用的Windows的winrm服务,而winrm有一个限制可用内存量的错误,须要安装脚本进行修复
在powershell上执行下面的命令
$url = "https://raw.githubusercontent.com/jborean93/ansible-windows/master/scripts/Install-WMF3Hotfix.ps1" $file = "$env:temp\Install-WMF3Hotfix.ps1" (New-Object -TypeName System.Net.WebClient).DownloadFile($url, $file) powershell.exe -ExecutionPolicy ByPass -File $file -Verbose
能够在powershell上执行下面的命令查看winrm当前的监听端口
winrm enumerate winrm/config/Listener
winrm服务默认是5985端口,zabbix-agent使用的是10050端口,所以须要在防火墙上开启5985和10050端口或直接关闭防火墙
首先须要下载Windows-agent的压缩包并解压到ansible主机下
下载地址:https://www.zabbix.com/download_agents
须要在hosts中指定与Windows链接的配置信息,默认状况下使用ntlm认证,若是想要获取关于winrm认证的详细信息,能够访问https://docs.ansible.com/ansible/latest/user_guide/windows_winrm.html
[windows] 172.168.0.6 ansible_python_interpreter=/usr/bin/python ansible_user="administrator" ansible_password="asd.123" ansible_port=5985 ansible_connection="winrm" ansible_winrm_transport=ntlm ansible_winrm_server_cert_validation=ignore
vim /etc/ansible/windows-agent.yml - hosts: windows remote_user: administrator vars: server: 10.127.0.133 hostname: "{{ ansible_host }}" tasks: - name: cp zabbix-agent win_copy: src: /etc/ansible/windows_agent/ dest: C:\windows_agent\ - name: cp templates zabbix_agentd.conf to zabbix agentd win_template: src: /etc/ansible/zabbix_agentd.conf dest: C:\windows_agent\conf\ - name: install zabbix-agent win_command: zabbix_agentd.exe -i -c C:\windows_agent\conf\zabbix_agentd.conf args: chdir: C:\windows_agent\bin\ - name: start zabbix-agent win_command: zabbix_agentd.exe -s -c C:\windows_agent\conf\zabbix_agentd.conf args: chdir: C:\windows_agent\bin\
ansible-playbook -i /etc/ansible/hosts /etc/ansible/linux-agent.yml
能够看到playbook执行成功了,查看Windows的服务,Zabbix-agent也已经启动
能够看到自动发现规则生效了,并连接了Windows-OS模板
欢迎各×××陈师傅”