这里是普通文章模块栏目内容页
CMDB、bk-cmdb、Adminset 开源cmdb运维平台
CMDB

项目地址:https://zhuanlan.zhihu.com/p/34191320
自动安装脚本(python3、docker),前提是安装python3,安装教程请查看centos7下安装python3

# -*- coding: utf-8 -*-
import os
import subprocess
import argparse
import time

def base(cmd):
    if subprocess.call(cmd, shell=True):
        raise Exception("{} 执行失败".format(cmd))

def install_docker():
    base("sudo yum install -y yum-utils device-mapper-persistent-data lvm2")
    base("sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo")
    base("sudo yum makecache fast")
    base("sudo yum -y install docker-ce")
    if(not os.path.exists("/etc/docker")):
        base("mkdir -p /etc/docker")
    with open("/etc/docker/daemon.json", "w") as f:
        f.write('{\n    "registry-mirrors": ["https://9f4w4icn.mirror.aliyuncs.com"] \n}')
    base("sudo systemctl daemon-reload")
    base("sudo systemctl start docker")

def create_dir():
    if (not os.path.exists("/var/cmdb/db")):
        base("sudo mkdir -p /var/cmdb/db")
    if (not os.path.exists("/var/cmdb/es")):
        base("sudo mkdir -p /var/cmdb/es")

def run_db_container():
    base("sudo docker run --name cmdb-db -d -e MYSQL_ROOT_PASSWORD=cmdbcmdb -v /var/cmdb/db:/var/lib/mysql mysql:5.7.21")

def run_es_container():
    base("sudo docker run --name cmdb-es -d -v /var/cmdb/es:/usr/share/elasticsearch/data elasticsearch:5.6.8")

def init_db():
    base("sudo docker run -it --rm --link cmdb-db -e ENV=PRO -e DB_HOST=cmdb-db -e DB_PORT=3306 -e DB_USERNAME=root -e DB_PASSWORD=cmdbcmdb -e DB_NAME=cmdb mingmingtang/cmdb init-db")

def run_cmdb_container(site_url, email_host, email_port, email_username, email_password):
    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))

def input_para(help):
    value = ""
    while(not value):
        value = raw_input(help)
    return value

if __name__ == '__main__':
    if(os.geteuid() != 0):
        raise("请以root权限运行")
    site_url = input("请输入网站域名或IP(http://cmdb.xxx.com):")
    email_host = input("网站邮箱服务器(smtp.163.com):")
    email_port = input("邮箱服务器端口(25):")
    email_username = input("邮箱用户名(cmdb@163.com):")
    email_password = input("邮箱密码|独立授权码(P@ssw0rd):")

    print("开始安装docker")
    install_docker()
    print("开始创建目录")
    create_dir()
    print("开始运行mysql容器")
    run_db_container()
    print("开始运行elasticsearch容器")
    run_es_container()
    print("等待数据库启动完成(10s)")
    time.sleep(10)
    print("开始初始化数据库")
    init_db()
    print("开始运行cmdb")
    run_cmdb_container(site_url, email_host, email_port, email_username, email_password)
    print("完成!")

执行

sudo python install_cmdb.py
sudo docker ps

执行以上命令将看到三个容器
访问web http://your_server_ip/#/login?next_path=%2Fapp%2Fdata
账户/密码:admin/cmdbcmdb
在这里插入图片描述
优点是可以自定义字段,随意添加表。
缺点没有批量导入导出功能。机器数量多添加比较繁琐。

bk-cmdb

项目地址:https://github.com/Tencent/bk-cmdb/blob/master/docs/wiki/container-support.md
快速体验可以使用docker方式部署,官方提供了docker镜像,将需要安装的软件都集成到了此镜像里。

[root@0b49696feeb7 data]# ps -ef
UID        PID  PPID  C STIME TTY          TIME CMD
root         1     0  0 07:07 ?        00:00:00 /usr/sbin/init
root        17     1  3 07:07 ?        00:02:56 /data/sidecar/jdk1.8.0_181/bin/java -Dzookeeper.log.dir=. -Dzookeeper.root.logger=INFO,CONSOLE -cp /data/sidecar/zookeeper/bin/.
root        39     1  0 07:07 ?        00:00:11 /data/sidecar/redis/bin/redis-server 0.0.0.0:6379
root        45     1  0 07:07 ?        00:00:37 mongod -f /data/sidecar/mongodb/mongo.conf
root        94     1  4 07:07 ?        00:03:53 ./cmdb_adminserver --addrport=172.17.0.5:60004 --logtostderr=false --log-dir=./logs --v=3 --config=configures/migrate.conf
root       109     1  4 07:07 ?        00:03:59 ./cmdb_apiserver --addrport=172.17.0.5:8080 --logtostderr=false --log-dir=./logs --v=3 --regdiscv=127.0.0.1:2181
root       126     1  0 07:07 ?        00:00:47 ./cmdb_auditcontroller --addrport=172.17.0.5:50005 --logtostderr=false --log-dir=./logs --v=3 --regdiscv=127.0.0.1:2181
root       146     1  0 07:07 ?        00:00:51 ./cmdb_datacollection --addrport=172.17.0.5:60005 --logtostderr=false --log-dir=./logs --v=3 --regdiscv=127.0.0.1:2181
root       159     1  2 07:07 ?        00:02:16 ./cmdb_eventserver --addrport=172.17.0.5:60009 --logtostderr=false --log-dir=./logs --v=3 --regdiscv=127.0.0.1:2181
root       175     1  1 07:07 ?        00:01:07 ./cmdb_hostcontroller --addrport=172.17.0.5:50002 --logtostderr=false --log-dir=./logs --v=3 --regdiscv=127.0.0.1:2181
root       207     1  1 07:07 ?        00:01:29 ./cmdb_hostserver --addrport=172.17.0.5:60001 --logtostderr=false --log-dir=./logs --v=3 --regdiscv=127.0.0.1:2181
root       229     1  3 07:07 ?        00:02:58 ./cmdb_objectcontroller --addrport=172.17.0.5:50001 --logtostderr=false --log-dir=./logs --v=3 --regdiscv=127.0.0.1:2181
root       252     1  0 07:07 ?        00:00:46 ./cmdb_proccontroller --addrport=172.17.0.5:50003 --logtostderr=false --log-dir=./logs --v=3 --regdiscv=127.0.0.1:2181
root       304     1  0 07:07 ?        00:00:46 ./cmdb_procserver --addrport=172.17.0.5:60003 --logtostderr=false --log-dir=./logs --v=3 --regdiscv=127.0.0.1:2181
root       315     1  0 07:07 ?        00:00:44 ./cmdb_toposerver --addrport=172.17.0.5:60002 --logtostderr=false --log-dir=./logs --v=3 --regdiscv=127.0.0.1:2181
root       326     1  0 07:07 ?        00:00:48 ./cmdb_webserver --addrport=172.17.0.5:8090 --logtostderr=false --log-dir=./logs --v=3 --regdiscv=127.0.0.1:2181
root       535     0  5 08:34 pts/0    00:00:00 bash
root       548   535  0 08:34 pts/0    00:00:00 ps -ef

执行命令:

docker run --name bk-cmdb -d -p 8081:8090 ccr.ccs.tencentyun.com/bk.io/cmdb-standalone:latest

访问web:http://your_server_ip:8081/
在这里插入图片描述
拓扑化的主机管理:主机基础属性、主机快照数据、主机归属关系管理
组织架构管理:可扩展的基于业务的组织架构管理
模型管理:既能管理业务、集群、主机等内置模型,也能自定义模型
进程管理:基于模块的主机进程管理
事件注册与推送:提供基于回调方式的事件注册与推送
通用权限管理:灵活的基于用户组的权限管理
操作审计:用户操作行为的审计与回溯

Adminset

Adminset基于DevOps理念开发,以整合全部运维场景为己任,是一个真正的基于运维思维而开发的全自动化运维平台。私以为Adminset是一个开源的CMDB,是一个运维集成系统的入口。它可以包括CMDB的基础功能,也有自动录入的功能,有一个脚本直接在目标机器上执行之下,它就会把信息自动上报到CMDB里,有直接来导入的API的接口。它可以集成CMDB里面的信息,做一个下拉的选择,选择安装什么,一点执行直接就推到目标机器上去了。也能审核,将所有的任务在后台的日志打出来了。郭宏泽,现任为胜科技技术总监,是AdminSet开源运维平台的创建者。

基础安装说明:
1、基本要求:centos 7.2(1511) django 1.9.8(兼容Django1.11) python 2.7

2、服务端安装
生产服务器建议 4核CPU,8G内存以上,学习测试建议 2核CPU,2G内存以上,服务器操作系统版本要求 centos7.2及以上
2.1、下载代码
git clone https://github.com/guohongze/adminset.git
2.2、执行安装脚本-自动
adminset/install/server/auto_install.sh
如果使用自动安装则手动安装跳过,如果手动安装则跳过此步。
访问:http://your_server_ip
使用用户名admin 密码Adminset123
在这里插入图片描述
3.客户端安装agent
通过官方文档可以知道服务端是通过解析主机名来自定上报和注册的,所以要为主机设置主机名hostname,然后在hosts里添加解析。

##centos7
$ hostnamectl set-hostname xxx
## centos6
$ sed -i "s/HOSTNAME\(.*\)/HOSTNAME=xxx/" /etc/sysconfig/network
## 添加hosts解析
192.168.6.60 xxx

3.1 取出adminset包里的client文件夹拷贝到客户机上

$ cd /usr/local/src/adminset/install/
$ tar zcvf client.tar.gz client
$ scp client.tar.gz 192.168.6.60://usr/local/src

3.2 客户机操作

$ chmod +x /usr/local/src/client/install.sh 
$ /usr/local/src/client/install.sh

在这里插入图片描述