项目作者: open-cmdb

项目描述 :
CMDB配置管理系统资产管理系统
高级语言: Python
项目地址: git://github.com/open-cmdb/cmdb.git
创建时间: 2018-03-02T14:00:49Z
项目社区:https://github.com/open-cmdb/cmdb

开源协议:GNU Lesser General Public License v3.0

关键词:
cmdb vue django django-rest-framework element-ui

下载




cmdb

CMDB 资产管理系统

License: GPL v3
pyversions
vueversions
es2015
element ui

知乎链接

https://zhuanlan.zhihu.com/p/34191320

在线演示

http://cmdb.xyz
用户名:admin 密码:cmdbcmdb (请不要修改)

问答群



特性

  • 热添加删除表 自定义字段类型
  • REST前后端分离架构 开放所有API接口
  • 强大的搜索查找能力(后端使用elasticsearch存储数据 ) 可以配合kibana使用
  • 支持查看数据修改记录
  • 表级权限管理
  • 容器快速部署

前端

  • Vue
  • Element-ui
  • Vue-Router
  • Vuex
  • Axios

后端

  • Python3
  • Django 1.11
  • Django REST framework
  • Elasticsearch
  • Mysql
  • LDAP
  • uwsgi
  • Nginx
  • Docker

前端

https://github.com/open-cmdb/cmdb-web

快速开始

准备一台可以访问互联网的centos服务器(内存大于等于4G) 将下面代码保存到install_cmdb.py 执行sudo python install_cmdb.py

  1. #!/usr/bin/env python2
  2. # -*- coding: utf-8 -*-
  3. import os
  4. import subprocess
  5. import argparse
  6. import time
  7. def base(cmd):
  8. if subprocess.call(cmd, shell=True):
  9. raise Exception("{} 执行失败".format(cmd))
  10. def install_docker():
  11. base("sudo yum install -y yum-utils device-mapper-persistent-data lvm2")
  12. base("sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo")
  13. base("sudo yum makecache fast")
  14. base("sudo yum -y install docker-ce")
  15. if(not os.path.exists("/etc/docker")):
  16. base("mkdir -p /etc/docker")
  17. with open("/etc/docker/daemon.json", "w") as f:
  18. f.write('{\n "registry-mirrors": ["https://9f4w4icn.mirror.aliyuncs.com"] \n}')
  19. base("sudo systemctl daemon-reload")
  20. base("sudo systemctl start docker")
  21. def create_dir():
  22. if (not os.path.exists("/var/cmdb/db")):
  23. base("sudo mkdir -p /var/cmdb/db")
  24. if (not os.path.exists("/var/cmdb/es")):
  25. base("sudo mkdir -p /var/cmdb/es")
  26. def run_db_container():
  27. base("sudo docker run --name cmdb-db -d -e MYSQL_ROOT_PASSWORD=cmdbcmdb -v /var/cmdb/db:/var/lib/mysql mysql:5.7.21")
  28. def run_es_container():
  29. base("sudo docker run --name cmdb-es -d -v /var/cmdb/es:/usr/share/elasticsearch/data elasticsearch:5.6.8")
  30. def init_db():
  31. base("sudo docker run -it --rm --link cmdb-db -e DB_HOST=cmdb-db -e ENV=PRO -e DB_PORT=3306 -e DB_USERNAME=root -e DB_PASSWORD=cmdbcmdb -e DB_NAME=cmdb mingmingtang/cmdb init-db")
  32. def run_cmdb_container(site_url, email_host, email_port, email_username, email_password):
  33. base("sudo docker run -d --name cmdb --link cmdb-db --link cmdb-es -p 80:80 -e ENV=PRO -e SITE_URL={} -e DB_HOST=cmdb-db -e DB_PORT=3306 -e DB_USERNAME=root -e DB_PASSWORD=cmdbcmdb -e DB_NAME=cmdb -e ELASTICSEARCH_HOSTS=cmdb-es -e EMAIL_HOST={} -e EMAIL_PORT={} -e EMAIL_USERNAME={} -e EMAIL_PASSWORD={} mingmingtang/cmdb start".format(site_url, email_host, email_port, email_username, email_password))
  34. def input_para(help):
  35. value = ""
  36. while(not value):
  37. value = raw_input(help)
  38. return value
  39. if __name__ == '__main__':
  40. if(os.geteuid() != 0):
  41. raise("请以root权限运行")
  42. # parser = argparse.ArgumentParser()
  43. # parser.add_argument("--siteurl", type=str, help="E.g: http://cmdb.xxx.com, http://172.17.100.1")
  44. # parser.add_argument("--emailhost", type=str, help="E.g: http://cmdb.xxx.com, http://172.17.100.1")
  45. # parser.add_argument("--emailport", type=str, help="E.g: http://cmdb.xxx.com, http://172.17.100.1")
  46. # parser.add_argument("--emailusername", type=str, help="E.g: http://cmdb.xxx.com, http://172.17.100.1")
  47. # parser.add_argument("--emailpassword", type=str, help="E.g: http://cmdb.xxx.com, http://172.17.100.1")
  48. # args = parser.parse_args()
  49. # SITE_URL = args.SITE_URL
  50. site_url = input_para("请输入网站域名或IP(http://cmdb.xxx.com):")
  51. email_host = input_para("网站邮箱服务器(smtp.163.com):")
  52. email_port = input_para("邮箱服务器端口(25):")
  53. email_username = input_para("邮箱用户名(cmdb@163.com):")
  54. email_password = input_para("邮箱密码|独立授权码(P@ssw0rd):")
  55. print("开始安装docker")
  56. install_docker()
  57. print("开始创建目录")
  58. create_dir()
  59. print("开始运行mysql容器")
  60. run_db_container()
  61. print("开始运行elasticsearch容器")
  62. run_es_container()
  63. print("等待数据库启动完成(10s)")
  64. time.sleep(10)
  65. print("开始初始化数据库")
  66. init_db()
  67. print("开始运行cmdb")
  68. run_cmdb_container(site_url, email_host, email_port, email_username, email_password)
  69. print("完成!")

手工部署

先安装好Elasticsearch(5.6) 和 Mysql(5.7) 其它版本未测试

容器名称

mingmingtang/cmdb

初始化数据库

  1. docker run -it --name cmdb-init-db --rm -e DB_HOST=数据库地址 -e ENV=PRO -e DB_PORT=数据库端口 -e DB_USERNAME=数据库用户名 -e DB_PASSWORD=数据库密码 -e DB_NAME=cmdb mingmingtang/cmdb init-db

示例:

  1. docker run -it --name cmdb-init-db --rm -e DB_HOST=172.16.0.11 -e ENV=PRO -e DB_PORT=3306 -e DB_USERNAME=root -e DB_PASSWORD=******** -e DB_NAME=cmdb mingmingtang/cmdb init-db

运行CMDB

  1. docker run -d --name cmdb -p 80:80 -e ENV=PRO -e SITE_URL=网站地址 -e DB_HOST=数据库地址 -e DB_PORT=数据库端口 -e DB_USERNAME=数据库用户名 -e DB_PASSWORD=数据库密码 -e DB_NAME=cmdb -e ELASTICSEARCH_HOSTS=ES地址,多个用英文逗号隔开,格式http://xx.xx.xx.xx:9200 -e EMAIL_HOST=邮箱smtp地址 -e EMAIL_PORT=邮箱smtp端口 -e EMAIL_USERNAME=发件箱 -e EMAIL_PASSWORD=邮箱密码 mingmingtang/cmdb start

示例:

  1. docker run -d --name cmdb -p 80:80 -e ENV=PRO -e SITE_URL=http://120.79.60.130 -e DB_HOST=172.16.0.11 -e DB_PORT=3306 -e DB_USERNAME=root -e DB_PASSWORD=******** -e DB_NAME=cmdb -e ELASTICSEARCH_HOSTS=http://127.0.0.1:9200 -e EMAIL_HOST=smtp.163.com -e EMAIL_PORT=25 -e EMAIL_USERNAME=mmt_cmdb@163.com -e EMAIL_PASSWORD=******** mingmingtang/cmdb start

嘿 哥们儿 给颗星吧 ┭┮﹏┭┮