2章
利用Facter和Django快速构建CMDB
作者简介
陈立军,金山西山居DevOps,原新浪研发系统开发。
刘宇,网名守住每一天,金山西山居架构师,《Puppet实战》一书作者,《Puppet实战手册》译者之一,《Python高级进阶》译者之一,InfoQ社区编辑,自动化运维专家。
CMDB(Configuration Management Database),又称配置管理数据库,更多的时候我们习惯将其称为资产管理系统。它既是ITIL标准体系的核心,又是运维的基础核心系统。它通常位于整个运维自动架构的底层,但在运维自动化体系中,它又起到了极其关键性的作用。据我个人了解目前很多中小型企业,乃至一些中大型互联网公司,都还在采用传统的Excel来管理资产。
采用Excel维护资产时,需要耗费大量的人力和精力,这些工作包括:数据的采集、整合、记录、维护、检验和更新,每一项都比较繁琐。而采用开源CMDB系统却又不够灵活,无法和公司的其他系统相结合。面对这些问题,自行研发一套适用于公司的CMDB系统,是当务之急。
本章将会详细讲解,如何利用开源软件Facter和Django快速构建一个小型的CMDB系统。界面与功能不算复杂,这也是它轻量的体现,本章更多的是提供一种思路,以达到抛砖引玉的作用,仅供大家参考。
本章的所有代码都托管在Github网站上https://github.com/oysterclub/open-cmdb。其中脚本集中在CMDB目录中。
2.1 CMDB简介
CMDB用于存储和管理企业IT架构中各种设备的配置信息,其中包括主机、项目、用户、机房、网络等。其被认为是ITIL服务管理的核心,所有流程所需要使用的配置信息都将通过CMDB来进行获取,例如监控、Dashboard、自动化、流程等。CMDB在企业IT架构中的核心地位如图2-1所示。
图2-1 CMDB的核心地位
CMDB特性如下:
设备信息统一化、标准化。
设备信息可维护性更强。
设备信息关系清晰化、可视化。
设备信息的查询、更新更快。
当然,在实际生产中,会对上述特性和涵盖范围有轻重大小的区分,为了能够更加合理、更加准确地设计出适合自有业务模式的CMDB,下面我们来看下几大主流开源CMDB是如何设计的。