专栏首页阿冬的运维技术栈Ansible 批量部署 zabbix-agent

Ansible 批量部署 zabbix-agent

Ansible简介

ansible基于python开发,集合了众多优秀运维工具的优点,实现了批量运行命令、部署程序、配置系统等功能。默认通过SSH协议进行远程命令执行或下发配置,无需部署任何客户端代理软件,从而使得自动化环境部署变得更加简单。可同时支持多台主机并进行管理,使得管理主机更加便捷。主版本大概每2个月发布一次。

核心组件说明

Ansible core :核心引擎

Host inventory :用来定义Ansible 所管理的主机,默认是在Ansible的host配置文件中定义被管理主机,同时也支持自定义动态主机清单和指定其他配置文件的位置。

Connection plugins:负责和被管理主机实现通信。除支持使用ssh连接被管理主机外, Ansible还支持其他的连接方式,所以需要有连接插件将各个主机用连接插件连接到 Ansible。

Playbooks:用来集中定义 Ansible任务的配置文件,即将多个任务定义在一个剧本中由 Ansible自动执行,可以由控制主机针对多台被管理主机同时运行多个任务。

Core modules:是 Ansible自带的模块,使用这些模块将资源分发到被管理主机,使其执行特定任务或匹配特定的状态。

Custom modules:用于完成模块功能的补充,可借助相关插件完成记录日志、发送邮件等功能。

ansible功能特性

应用代码自动化部署

系统管理配置自动化

支持持续交付自动化

支持云计算,大数据平台环境

轻量级,无需在客户端安装agent,更新时只需在控制机上进行更改即可

批量任务执行可以写成脚本,不用分发到远程就可以执行

支持非root用户管理操作,支持sudo

使用python编写,维护更简单

Ansible 工作模型

部署Ansible

Ansible 自动化运维环境由控制主机与被管理主机组成,由于Ansible是基于SSH协议进行通信的,所以控制主机安装Ansible软件后不需要重启或运行任何程序,被管理主机也不需要安装和运行任何代理程序。

#确保host上安装pythonPython –V#查看yum仓库中是否存在ansible 的rpm包yum list |grep ansible#安装ansible服务yum install ansible  -y#查看ansible 版本ansible --version

Linux zabbix-agent 批量部署

环境

hostname

ip

des

zabbix-server

192.168.99.200

zabbix-server ansible

zabbix-proxy1

192.168.99.209

zabbix-agent

zabbix-db2

192.168.99.210

zabbix-agent

将所有主机ip加入到/etc/ansible/hosts文件中:

定义linux主机组和主机

[root@zabbix-server ~]# egrep -v "*#|^$" /etc/ansible/hosts [zabbix-agent-linux]192.168.99.209192.168.99.210

默认ssh的端口为22端口,如果为其他端口号,可在主机名后面加上端口号,如 192.168.159.131:9604,也可以修改配置文件中的remote_port变量值/etc/ansible/hosts也可以定义一个主机范围,如192.168.99.[100:200] ,表示192.168.99.100 - 192.168.99.200 的主机。

免密登录

生成密钥对并将公钥推送给被管理端

cd ~cd .ssh #将公钥推送至被管理端ssh-copy-id root@192.168.99.209ssh-copy-id root@192.168.99.210

查看linux被管理端是否已经连接

[root@zabbix-server ~]# ansible -i /etc/ansible/hosts  zabbix-agent-linux  -m ping 192.168.99.209 | SUCCESS => {    "changed": false,     "ping": "pong"}192.168.99.210 | SUCCESS => {    "changed": false,     "ping": "pong"}[root@zabbix-server ~]# ansible -i /etc/ansible/hosts  zabbix-agent-linux  -a date192.168.99.209 | SUCCESS | rc=0 >>Wed Jan  1 09:35:03 CST 2020192.168.99.210 | SUCCESS | rc=0 >>Wed Jan  1 09:35:05 CST 2020[root@zabbix-server ~]# ansible -i /etc/ansible/hosts  zabbix-agent-linux -m command -a  "free   -m"192.168.99.209 | SUCCESS | rc=0 >>              total        used        free      shared  buff/cache   availableMem:           3771         184        3320          19         266        3306Swap:          3967           0        3967192.168.99.210 | SUCCESS | rc=0 >>              total        used        free      shared  buff/cache   availableMem:           1819         171        1445          22         202        1445Swap:          4091           0        4091

至此 ansible 安装以及主机清单配置完成。(注:如果连接失败请检查ansibleserver和被管理端是否能ping通,如能ping通,可以删除.ssh下的密钥,重新生成并下发)

ansible 批量下发文件

ansible -i /etc/ansible/hosts  zabbix-agent-linux -m copy -a "src=/opt/system.sh des=/opt/"

实现步骤

1.安装zabbix-agent4.2的rpm包

2.使用yum安装zabbix-agent

3.修改agent配置文件的一些变量,将模板文件覆盖到agent配置文件

4.重启zabbix-agent

定义agent模板

创建模板文件,里面包含agent中可变的变量,如:主机名和server地址等

[root@zabbix-server opt]# cat  /etc/ansible/zabbix_agentd.conf PidFile=/var/run/zabbix/zabbix_agentd.pidLogFile=/var/log/zabbix/zabbix_agentd.logLogFileSize=50EnableRemoteCommands=1LogRemoteCommands=1Server={{server}}ServerActive={{server}}Hostname={{hostname}}HostMetadata=LinuxTimeout=10Include=/etc/zabbix/zabbix_agentd.d/*.confUnsafeUserParameters=1

添加linux 的 playbook文件

[root@zabbix-server opt]# cat  /etc/ansible/linux-agent.yml- hosts: zabbix-agent-linux  remote_user: root  vars:    server: 192.168.99.200    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

执行playbook文件进行批量部署

ansible-playbook -i /etc/ansible/hosts /etc/ansible/linux-agent.yml

Windows zabbix-agent 批量部署

环境

hostname

ip

des

zabbix-server

192.168.99.200

zabbix-server ansible

windows server 2016

192.168.99.234

zabbix-agent

Ansible依赖

pywinrm>=0.3.0

pywinrm可以使用pip来进行安装,执行以下命令

pip install pywinrm>=0.3.0

Windows依赖

PowerShell 3.0

NET Framework 4.0+

这里使用的是2016,上面的环境是不需要做配置的,如果是使用的server2008或更低版本需要进行升级之后才能使用,获取升级的详细信息可以访问ansible官方文档查看

https://docs.ansible.com/ansible/latest/user_guide/windows_setup.html#host-requirements

在防火墙上开启winrm服务端口和agent服务端口

可以在powershell上执行下面的命令查看winrm当前的监听端口

winrm enumerate winrm/config/Listenerwinrm

服务默认是5985端口,zabbix-agent使用的是10050端口,因此需要在防火墙上开启5985和10050端口或直接关闭防火墙

下载Windows-agent压缩包

首先需要下载Windows-agent的压缩包并解压到ansible主机/etc/ansible/windows下

下载地址:https://www.zabbix.com/download_agents

yum install  -y  unzip    zipunzip zabbix_agents-4.2.8-win-amd64.zip  -d zabbix_agents

在ansible/hosts中添加主机信息

需要在hosts中指定与Windows连接的配置信息,默认情况下使用ntlm认证,如果想要获取关于winrm认证的详细信息,

访问

https://docs.ansible.com/ansible/latest/user_guide/windows_winrm.html

定义linux主机组和主机

/etc/ansible/hosts[zabbix-agent-windows]172.18.51.122  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

查看linux被管理端是否已经连接

[root@zabbix-server zabbix_agents]# ansible -i /etc/ansible/hosts  zabbix-agent-windows  -m win_ping192.168.99.234 | SUCCESS => {    "changed": false,     "ping": "pong"}

实现步骤

1.从ansible复制下载好的agent文件到Windows

2.修改windows agent配置文件的一些变量

3.安装zabbix-agent

4.启动zabbix-agent

定义windows agent模板

/etc/ansible/windows/zabbix_agentd.conf

创建一个模板文件,里面包含agent中可变的变量,如:主机名和server地址

LogFile=c:\zabbix_agentd.logLogFileSize=50EnableRemoteCommands=1LogRemoteCommands=1Server={{server}}ServerActive={{server}}Hostname={{hostname}}HostMetadata=WindowsUnsafeUserParameters=1

编写windows 的 playbook文件

[root@zabbix-server windows]# cat windows-agent.yml - hosts: zabbix-agent-windows  remote_user: administrator  vars:    server: 192.168.99.200    hostname: "{{ ansible_hostname }}"  tasks:  - name: cp zabbix-agent    win_copy:      src: /etc/ansible/windows/zabbix_agents/      dest: C:\windows_agent\  - name: cp templates zabbix_agentd.conf to zabbix agentd    win_template:      src: /etc/ansible/windows/zabbix_agents/conf/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\

执行playbook文件进行批量部署

[root@zabbix-server windows]# ansible-playbook -i /etc/ansible/hosts /etc/ansible/windows/windows-agent.yml 
PLAY [zabbix-agent-windows] ***************************************************************TASK [Gathering Facts] ********************************************************************ok: [192.168.99.234]
TASK [cp zabbix-agent] ********************************************************************changed: [192.168.99.234]
TASK [cp templates zabbix_agentd.conf to zabbix agentd] **********************************TASK [install zabbix-agent] **************************************************************
TASK [start zabbix-agent] ****************************************************************
PLAY RECAP ********************************************************************************

配合ZABBIX 自动注册功能可实现主机的自助上线,主机自动注册的内容请查阅前期文章!

ZABBIX web 查看上线主机

本文分享自微信公众号 - 阿冬的运维技术栈(gh_fa71be5df518)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2020-01-03

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Zabbix与ELK整合实现对安全日志数据的实时监控告警

    ELK大家应该比较熟悉了,zabbix应该也不陌生,那么将ELK和zabbix放到一起的话,可能大家就有疑问了?这两个放到一起是什么目的呢,听我细细道来

    用户6641876
  • 关于docker环境运行zabbix时,你可能不知道的事

    关于docker环境运行zabbix时,可以快速的部署一套zabbix环境,不管是学习docker还是学习zabbix,都是可以作为一个实际项目来进行测试和练习...

    用户6641876
  • Zabbix自动发现、自动注册、下线自动注销

    网络发现是zabbix最具特色的功能之一,它能能够根据用户事先定义的规则自动添加监控主机或服务等,Zabbix的网络发现功能可以基于:

    用户6641876
  • Ansible 批量部署 zabbix-agent

    ansible基于python开发,集合了众多优秀运维工具的优点,实现了批量运行命令、部署程序、配置系统等功能。默认通过SSH协议进行远程命令执...

    Kevin song
  • 使用 pasition 制作酷炫Path过渡动画

    Pasition – Path Transition with little JS code, render to anywhere – 超小尺寸的Path过渡...

    Javanx
  • 缔安科技:行走在边缘的SD-WAN

    第二届中国SD-WAN峰会于11月16日在北京盛大开幕,来自上海缔安科技的赵苏宁先生为大家分享了主题为《行走在边缘的SD-WAN》的演讲。

    SDNLAB
  • MYSQL 主从复制同步了没,监控Seconds Behind Master ,别打脸

    小文今天被老板询问,新搭建的MYSQL 复制同步的情况怎么样,有没有报警或者复制时,主从不一致的情况发生,怎么报警的。小文答到老板放心,我们监控了seconds...

    AustinDatabases
  • postgresql安装,java简单使用postgresql

    由于本人的学过的技术太多太乱了,于是决定一个一个的整合到一个springboot项目里面。

    ydymz
  • Java Socket获取本机的InetAddress实例

    package com.immooc; /*  * InetAddress类  */ import java.net.InetAddress; import j...

    Angel_Kitty
  • 一张图看懂HLS设计优化流程

    那么b_vect[0 +: 8]和b_vect[15 -:8]分别选取b_vect的哪些位?

    Lauren的FPGA

扫码关注云+社区

领取腾讯云代金券