介绍
CMDB –Configuration Management Database 配置管理数据库, CMDB存储与管理企业IT架构中设备的各种配置信息,它与所有服务支持和服务交付流程都紧密相联,支持这些流程的运转、发挥配置信息的价值,同时依赖于相关流程保证数据的准确性。
CMDB,几乎是每个运维人都绕不过去的字眼,但又是很多运维人的痛,因为基本上所有的互联网公司都在搞,都在想着把尽可能多信息都收集汇总过来,然后实现自动化,智能化,但是CMDB很少有成功的,因此它也被称为运维人的耻辱。
我们运维人不要再为了KPI,绩效等东东重复造轮子,并且造出来的轮子只能自己用。我们运维人工作中共同的迫切需求点是什么呢?
1,中文的web页面即使丑点也可以接受。日常查看导入导出,新增等等操作方便,而且防止语言不通误操作。
2,数据库模型和业务逻辑是分离开的。只需要建业务逻辑字段就能自动映射为数据库模型。
3,动态实现表间关系。随着收集数据的完善,表与表之间关系越来越复杂,不要因后续业务需要,对表做出改动,而影响以前的关系和调用,可以动态扩展。想想一下,增加个关系字段,原来的代码都要改的酸爽。
4,自定义表。可以自定义根据业务需求建表和逻辑关系。
5,动态API接口。根据表逻辑改动API动态自动更改,弱化业务和数据关系的实现,并且能够和外部系统做联动,支持API接口调用,方便扩展和自动化。
以上需求是最迫切的,本人工作多年,自己用django写过cmdb系统,但到后来维护成本会越来越大,考察了国内外开源的软件,最终找到cmdbuild,基本上可以满足上面全部需求,下面就来介绍下用docker容器快速安装cmdbuild,因cmdbuild是国外的软件,所以国内文档很少。
参考
环境
镜像版本:
quentinv/cmdbuild:t7-2.1.4
postgres 9.4
安装
环境调整
关闭防火墙
1 | systemctl stop firewalld.service |
PostgreSQL的安装
cmdbuild数据存储是在PostgreSQL中的,生产环境建议建立PostgreSQL数据库集群,这里为单点。
1 | 拉取最新镜像 |
如做迁移,需要导入数据。如新建可跳过这步。
1 | 复制备份文件到容器中 |
Cmdbuild安装
1 | 拉取镜像 |
配置使用
登录设置语言和配置PostgreSQL
完成后登录。因为登录时需要读取数据库中的用户数据,默认导入进去的用户名/密码:admin/123456
填坑
PostgreSQL 数据导入和导出
1 | pg_dump -U root cmdbuild > cmdb_db_dump_2016-12-05.sql |
如果导入数据出错,需删除数据库,重新导入
1 | #登录 |
删除数据库时,删除失败,报错:
1 | ERROR: database "mctest" is being accessed by other users 详细:There are 2 other sessions using the database. |
1 | #断开所有连这个数据库的连接 |
科普
1 | psql -U user -d dbname |
连接ldap
1 | 进入cmdb容器 |
这里贴一张本人以前用django写cmdb系统时的数据库设计图,仅供参考: