首页
首页
文章目录
  1. 简介
  2. ansible安装
  3. ansible批量安装的脚本
    1. palybook的编写与描述
    2. roles内容目录与描述
    3. roles task中main.yml
    4. roles task中install-agent.yml
    5. roles task中configuration.yml
  4. 部署效果图

使用ansible批量部署zabbix agent

简介

这篇文章早在一个月前就想写。但是运维,就是一个多功能的人,所以事儿会特别多,特别杂,不知道在哪里看到了一个四象限说法,任何事情都可以分为:重要紧急,重要不紧急、不重要紧急、不重要不紧急。

这段时间尝试按照这个来做,工作上的事情感觉清楚了不少,聊会正题;

公司之前一直依赖于第一个第三方的监控工具,但是由于售后效果有点差强人意,所以决定还是用自己的监控效果比较好。看了市面上的工具,很想用promethues,但是promethues没有代理模式,因为我们公司的业务有很大一部门都是在内网,所以zabbix就成了首选。

那么快速部署就成为现在的首要问题了,趁着这次部署,就把如果使用ansible批量安装zabbix客户端写了一个文档用来记录。

ansible安装

ansible具体如何安装请看Centos7 安装部署ansible

zabbix server端如何安装请查看 Centos7.2 安装Zabbix

ansible批量安装的脚本

ansible 批量安装使用的是playbook,Playbook可以定制配置,可以按照指定的操作步骤有序执行支持同步异步方式。值得注意的是playbook是通过YAML格式来进行描述定义的。

palybook的编写与描述

1
2
3
4
- hosts:
- 1.1.1.1 # 可以是ip地址、主机组、多个或者一个都可以
roles:
- install-zabbix-agent # 需要创建以roles命名的目录,这里的目录就是在roles目录下创建 install-zabbix-agent

install-zabbix-agent.yml内容
ansible_install_zabbix_02

roles内容目录与描述

roles中默认存在files、handlers、tasks、templates、meta、defaults、vars这些目录

1
2
3
4
5
6
7
files:用来存放由copy模块或script模块调用的文件。
templates:用来存放jinjia2模板,template模块会自动在此目录中寻找jinjia2模板文件。
tasks:此目录应当包含一个main.yml文件,用于定义此角色的任务列表,此文件可以使用include包含其它的位于此目录的task文件。
handlers:此目录应当包含一个main.yml文件,用于定义此角色中触发条件时执行的动作。
vars:此目录应当包含一个main.yml文件,用于定义此角色用到的变量。
defaults:此目录应当包含一个main.yml文件,用于为当前角色设定默认变量。
meta:此目录应当包含一个main.yml文件,用于定义此角色的特殊设定及其依赖关系。

我这里比较简单只用到files和tasks

roles task中main.yml

1
2
3
4
5
- import_tasks: install-agent.yml
when: ansible_distribution == "CentOS"

- import_tasks: configuration.yml
when: ansible_distribution == "CentOS"

roles task中install-agent.yml

1
2
3
4
5
6
7
8
9
10
11
12
13
- name: 拷贝文件到需要部署的机器上
copy:
src: "zabbix-agent-3.4.8-1.el7.x86_64.rpm"
dest: "/tmp"
owner: root
group: root
mode: 0644

- name: 安装agent监控软件
shell: "rpm -ivh /tmp/zabbix-agent-3.4.8-1.el7.x86_64.rpm"

- name: 删除rpm包
shell: "rm -fr /tmp/zabbix-agent-3.4.8-1.el7.x86_64.rpm"

roles task中configuration.yml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
- name: 更改server
replace:
dest: "/etc/zabbix/zabbix_agentd.conf"
regexp: '^(Server=).*'
replace: 'Server=zabbix的server地址'

- name: 注释serveractive
replace:
dest: "/etc/zabbix/zabbix_agentd.conf"
regexp: '^(ServerActive=)(.*)'
replace: 'ServerActive=zabbix的server地址'

- name: 更改hostname
replace:
dest: "/etc/zabbix/zabbix_agentd.conf"
regexp: '^(Hostname=).*'
replace: '\1aliyun-{{ ansible_default_ipv4.address }}'

- name: 启动zabbix-agent
service:
name: zabbix-agent
state: started
enabled: yes

整个目录结构
ansible_install_zabbix_01

部署效果图

ansible_install_zabbix_03

以上End.

仅供参考。

支持一下
扫一扫,我会更有动力更新
  • 微信扫一扫
  • 支付宝扫一扫