Shan

Ansible自动编排部署Zabbix
介绍   Ansible是目前非常火的自动化运维工具,基于Python开发,集合了众多运维工具...
扫描右侧二维码阅读全文
26
2018/09

Ansible自动编排部署Zabbix

介绍

  Ansible是目前非常火的自动化运维工具,基于Python开发,集合了众多运维工具(puppet、cfengine、chef、func、fabric)的优点,实现了批量系统配置、批量程序部署、批量运行命令等功能。
  ansible是基于模块工作的,本身没有批量部署的能力。真正具有批量部署的是ansible所运行的模块,ansible只是提供一种框架。主要包括:

  • 连接插件connection plugins:负责和被监控端实现通信;
  • host inventory:指定操作的主机,是一个配置文件里面定义监控的主机;
  • 各种模块核心模块、自定义模块;
  • 借助于插件完成记录日志邮件等功能;
  • playbook:剧本执行多个任务时,非必需可以让节点一次性运行多个任务。

Ansible-Role

  在Ansible中使用playbook,有个弊端就是无法实现复用假设在同时部署Web、db、ha 时或不同服务器组合不同的应用就需要写多个yml文件,很难实现灵活的调用。roles即层次性、结构化地组织playbook进行配置工作。简单来说,就是将变量、文件、模版、任务等内容分别放入files,meta,templates,vars,tasks,handlers目录中然后进行调用的机制。
所以Roles的代码易读,可重复使用并且目录结构清晰,容易理解

目录层级结构

Roles的每个角色中必须以特定的层级目录进行组织构造。
├── agent.yml #调用zabbix_agent角色
├── server.yml #调用zabbix_server角色
├── zabbix_agent #zabbix_agent角色
│   ├── files #存放用于copy或者scripts模块调用的文件
│   ├── handlers #定义触发器,至少存在一个main.yml,其他的文件需要在此文件中通过include进行包含。
│   │   └── main.yml
│   ├── meta #定义依赖关系,至少应该包含一个名为main.yml的文件;定义当前角色的特殊设定及其依赖关系
│   ├── tasks #定义任务,至少存在一个main.yml,其他的文件需要在此文件中通过include进行包含
│   │   └── main.yml
│   ├── templates #定义模版,可在当前目录下的文件中调用vars目录中定义的变量
│   │   └── zabbix_agentd.conf
│   └── vars #定义变量,至少存在一个main.yml,其他的文件需要在此文件中通过include进行包含
│   └── main.yml
└── zabbix_server #zabbix_server角色
├── files
├── handlers
│   └── main.yml
├── meta
├── tasks
│   ├── main.yml
│   └── main.yml.bak
├── templates
│   ├── zabbix.conf
│   └── zabbix_server.conf
└── vars
└── main.yml

下面附上打包的文件:
zabbix_roles.zip

GitHub地址:https://github.com/Mountaincnc/zabbix_roles

Last modification:September 26th, 2018 at 03:34 pm

Leave a Comment