前言
本文仅是对以前写的小示例进行一次梳理,由于本人菜鸟一枚,后端代码写的很渣,前端页面也不好看,没有考虑堡垒机等一些安全措施,也没有运维经验,所以存在很多纰漏,还请大家多多海涵。
一、程序简介
程序分为cmdb_server,cmdb_client两部分,以运维为核心开发的简易框架,cmdb_client主要负责资产信息采集,采集到数据后将数据进行清洗,汇总.使用POST的方式将数据发给cmdb_server,cmdb_server将接收到的数据写入数据库。通过前端展现给用户。
cmdb_server实现的主要功能如下(目前部分功能仅支持centos 7):
1、用户登录认证。’
2、将采集到的资产信息以前端页面展示给用户,并可以将资产信息以Excel的形式导出。
3、机房信息维护。
4、业务线信息维护。
5、记录主机资产信息的变更记录。
6、执行用户任务(批量执行命令,执行脚本,文件下发。提取客户端文件到本地)
7、实时监控主机硬件资源。
8、webssh。
9、docker服务器管理。
cmdb_client主要实现了通过agent或者SSH的方式对windows7以上版本,centos7版本的资产信息采集。
程序目前主要针对centos 7进行的开发
二、程序目录简介
[root@localhost CMDB]# tree -L 1 cmdb_server/ cmdb_server/ ├── asset_API # 负责接送cmdb_client发来的资产信息,并将资产信息写入数据库 ├── assetRepository # 数据库 ├── cmdb_server # 程序主目录 ├── data_dir # 存放日志,下载文件的目录 ├── db.sqlite3 ├── manage.py ├── plugin # 插件库:处理SSH连接,发送报警邮件,日志,主机存活扫描,分页处理,Excel处理 ├── __pycache__ ├── requirements.txt ├── show_page # 实现用户功能的目录 ├── templates ├── test.py [root@localhost cmdb_server]# tree -L 1 show_page/ show_page/ ├── client_manage # 用于展示资产信息 ├── docker_manage # docker服务器管理 ├── host_monitor # 主机监控 ├── __init__.py ├── login_register # 用户登录认证 ├── __pycache__ ├── user_task # 执行用户任务 ├── web # 功能APP └── web_ssh # webssh
三、程序开发平台
操作系统:centos 7
软件版本:python 3.6 django 1.11.20 mariadb 5.5.64
主要用到的技术:python,django,SSH,websocket,ajax,需要用到的运维命令。
四、程序执行流程
SSH模式:
使用agent模式:
ssh模式对比agent模式:
方便管理:SSH模式只需要将cmdb_client程序放在一台主机即可获得所有主机资产信息,agent模式需要将cmdb_client程序放到所有主机上。
易于维护:当cmdb_client内容发生改变时,SSH模式只需要修改cmdb_client主机的程序即可,agent模式需要将修改后的cmdb_client程序重新发给每台主机。
运行效率:SSH模式需要通过SSH的方式连接每一台主机,会受网络,服务器对SSH远程连接的处理等因素影响效率不是很高,agent模式则是在本地获取数据后直接使用request.POST将数据发给cmdb_server,没有远程登录认证的过程,因此在效率上要比SSH模式快。
安全性:SSH模式需要登录到目标主机上,这个过程可能被抓包抓取到登录凭证或者主机被黑客入侵程序中的登录认证等敏感信息将被窃取,存在一定安全隐患,agent模式的程序中没有登录认证等敏感数据,因此在安全上要好于SSH模式。
程序实现思路:
cmdb_client的SSH模式:
cmdb_client的agent模式:
cmdb_server:
五、功能演示
1、登录认证
2、获取资产信息
2.1资产信息的其它操作
3、机房信息和业务线
4、主机变更记录
5、执行用户任务
5.1 执行批量安装命令
5.2 批量执行shell脚本
5.3 批量文件下发
5.4 文件提取
6、主机监控
7、webssh
8、docker管理
8.1 批量安装docker
8.2 统一镜像源
8.3 镜像搜索和批量下载
8.4 批量创建容器
8.5 docker服务,容器,镜像相关操作
8.6 使用dockerfile创建镜像
小结:
由于本人没有实际的运维经验,所以程序的稳定性有待考察,目前主要针对centos 7进行开发,对于其它平台有些功能可能无法正常工作需完善。