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目录中。
<b>2.1 cmdb简介</b>
<b></b>
cmdb用于存储和管理企业it架构中各种设备的配置信息,其中包括主机、项目、用户、机房、网络等。其被认为是itil服务管理的核心,所有流程所需要使用的配置信息都将通过cmdb来进行获取,例如监控、dashboard、自动化、流程等。cmdb在企业it架构中的核心地位如图2-1所示。
图2-1 cmdb的核心地位
cmdb特性如下:
设备信息统一化、标准化。
设备信息可维护性更强。
设备信息关系清晰化、可视化。
设备信息的查询、更新更快。
当然,在实际生产中,会对上述特性和涵盖范围有轻重大小的区分,为了能够更加合理、更加准确地设计出适合自有业务模式的cmdb,下面我们来看下几大主流开源cmdb是如何设计的。