通过ansible构建加密kafka集群,实现一键部署及一键卸载。

Ansible 离线环境自动化部署工程

[toc]

  • 安装部署:上传软件安装包到指定主机组,修改软件相关配置文件,启动相关软件

    1. hostname模块,用于hostname修改及添加主机映射
    2. ssh-key模块,用于互相免密
    3. java模块,部署jdk
    4. rpm模块,安装常用软件模块
    5. zookeeper模块,zookeeper集群部署及启动
    6. kafka模块,kafka集群部署及启动
    7. kafka-manager模块,kafka-manager部署及启动
    8. docker模块,docker部署及启动
    9. monitor模块,grafana及prometheus部署及启动
  • 卸载脚本:停止对应模块的服务,删除对应软件添加的环境变量及恢复修改的每一个配置文件

    1. monitor模块,grafana及prometheus停止,删除软件安装目录及数据目录
    2. docker模块,docker停止,删除软件安装目录及数据目录
    3. kafka-manager模块,kafka-manager停止,删除软件安装目录及数据目录
    4. kafka模块,kafka集群停止,删除软件安装目录及数据目录
    5. zookeeper模块,zookeeper集群停止,删除软件安装目录及数据目录
    6. rpm模块,安装的对应软件卸载
    7. java模块,删除软件安装目录
    8. ssh-key模块,删除ansible安装添加的密钥
    9. hostname模块,删除添加主机映射

要求

试用于Centos7

开发测试环境

  • ansible 2.6.1
  • 运行os MacOs/CentosOS/Redhat
  • 目标os Centos 7.5
  • 运行python 2.7.16

依赖

  1. 部署用户拥有sudo权限
  2. 部署用户的密码

结构

#离线部署安装包及部分shell脚本
├── basic-files
│   ├── docker
│   ├── exporter
│   ├── java
│   ├── kafka
│   ├── kafka-manager
│   ├── monitor
│   ├── rpms
│   └── zookeeper
#git提交脚本
├── gitPush.sh
#部署脚本
├── install.sh
#卸载脚本
│── uninstall.sh
#ansible工程
├── private-devops
│   ├── README.md
#安装剧本
│   ├── install.yml
#主机配置及全局变量
│   ├── inventory
#角色
│   ├── roles
#卸载剧本
└   └── uninstall.yml

配置环境:

;配置机器name及ip
[machines]
kafka-1 ansible_ssh_host=10.57.26.110
kafka-2 ansible_ssh_host=10.57.26.111
kafka-3 ansible_ssh_host=10.57.26.112

;配置角色主机组
[hostname:children]
machines

[ssh:children]
machines

[java]
kafka-1
kafka-2
kafka-3

;全局变量
[all:vars]
;操作用户
ansible_user=admin
;操作用户的密码
ansible_ssh_pass="adminpwd"
;指定离线安装包目录
basic_files_path=../basic-files
;安装器
;installer_ssh=uninstall

;角色变量
[kafka:vars]
;kafka权限相关配置
sasl_enable= true
;sasl_user: "admin"
;sasl_password: "adminpwd"

[rpm:vars]
;rpm模块需要安装的软件
soft= ['perl','vim']

剧本

模块化配置,配置文件对应参考install.yml

- name: hostname
#指定主机组模板
  hosts: hostname
#是否开启sudo权限
  become: true
  roles:
#指定模板
    - role: hostname

命令介绍

部署脚本:./install.sh -v 卸载脚本:./uninstall.sh -v

后面参数可以是-v -vv -vvv 用于调试级别,也可以保持默认

或者手动通过ansible-playbook命令指定环境,及剧本执行安装:ansible-playbook -i private-devops/inventory/install.ini private-devops/install.yml

快速开始

环境准备

  1. 将项目工程拷贝到执行部署的机器上
  2. 编写环境变量,变量介绍,也可以参考默认安装变量配置:加密kafka集群
  3. 编写剧本,剧本介绍,可根据已有的模块任意搭配,调整模块执行顺序,默认安装剧本install.yml是安装加密kafka集群及监控,uninstall.yml是卸载kafka集群及监控

部署

  1. 执行对应的脚本,安装脚本install.sh,卸载脚本uninstall.sh
  2. 安装完成
  3. 登录grafana
  4. 配置grafana的数据源-prometheus
  5. 配置prometheus数据源
  6. 导入grafana图表配置

选择已经配置好的图表json文件,位置在basic-files/monitor/kafka集群监控-1593325791671.json 7. 查看grafana图表 8. kafka-manager配置

卸载

  1. 编写环境变量,变量介绍,也可以参考默认卸载变量配置:加密kafka集群
  2. 编写剧本,剧本介绍,可根据已有的模块任意搭配,调整模块执行顺序,默认卸载剧本install.yml是安装加密kafka集群及监控,uninstall.yml是卸载kafka集群及监控
  3. 执行uninstall.sh

目前支持模块

未来可能支持模块

  • hadoop
  • flink
  • springboot
  • stream-server