开源推荐|灵活多变功能强大的CMDB
一个完善的基础资源数据库是我们构建运维自动化上层应用的基础,所以构建CMDB系统成了有想法在DevOps运维自动化领域有所发展的企业离不开的重要一环,但受制于每家企业不同的内外部环境、资源配置以及管理方式各不相同,开发一套相对通用的CMDB系统就变得非常困难,这也是为什么现在市面上开源的CMDB系统很多,但使用都不是很广泛的主要原因
近段时间偶然发现了一款开源的CMDB系统,构建足够灵活,功能相对完善,使用体验也不错,于是深入研究,了解了其设计思路,更是受益颇多。我们自己也有构建基础资源数据库,目前已成功管理了生产环境所有的资源,更是成为团队小伙伴每天必用的趁手工具,落地效果还不错,这篇文章我就结合自己构建CMDB的经验来介绍下这个开源的CMDB系统:维易CMDB,同时推荐给大家
系统介绍
模型
一个完善的CMDB需要管理企业内的所有资源,不仅是服务器,不仅是数据库,而是所有对我们重要的资源,不仅有硬件,还包括软件,这些资源每个企业可能都不一样,那么要构建相对通用的CMDB,支持自定义资源模型就成了必须的
维易CMDB支持自定义资源分组,例如服务器、数据库等等,支持自定义资源类型,例如物理机、MySQL等等,支持自定义资源属性,例如服务器名称、内网IP等等,支持自定义资源模型与模型之间的关联,例如网卡关联到服务器、服务器关联到应用、应用关联到产品等等,支持为模型添加自定义的触发器,例如模型数据变化自动通知、自动调用WebHook实现更灵活的控制等等,支持属性的自动发现采集更新,例如云上资源自动同步、自定义发现插件等等,支持关系的自动发现更新,例如网卡自动与主机关联关系、nginx直接与服务器关联关系等等。这一段我连续说了好几个支持、自定义,足以看出它的灵活以及强大
优势:
系统很强大,设计很巧妙,如果使用得当应该能满足很多企业的基本使用需求
系统有很多值得借鉴的地方,例如自定义模型、强大的查询语法和权限设计等等,值得认真推敲学习
社区比较活跃,尤其是微信群几乎是有问必答,虽然公众号文章阅读量跟我一样少的可怜,但文章内容质量不错
开源,这个无需多说,向开源致敬
提升:
配置较为复杂,想要做通用,适应更多的场景,复杂似乎是没有办法的事情,但这对新手和非技术人员很不友好,其实大部分企业对资源都是一样的,如果能内置更多的模型或者有模型市场之类的可以直接使用,那就会简单很多
体验可以更好,配置太复杂了,能否可以从使用体验上做减法,例如添加默认角色,降低授权难度,例如优化服务树,基于服务树进行授权管理等等
总结一下就是系统很棒,值得好好学习,如果你是专业的技术人员,那这个系统使用起来应该难度不大,同时也能真的解决问题,如果你非技术那使用起来就有一定难度了,不过好在社区活跃,支持到位,多问问问题不大
在线体验
最后附上项目Github地址:https://github.com/veops/cmdb
官方还提供有在线Demo可以体验,README有地址和账号密码
觉得不错的话请不要吝惜star,好项目值得被更多的人发现,真诚的希望维易CMDB发展的越来越好,造福更多的运维同行
参考
前置工作
首先安装Python3.8.8
安装步骤如下:
# 安装必要的开发工具和依赖项 sudo yum groupinstall -y "Development Tools" sudo yum install -y zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel # 下载并解压 Python 3.8.8 wget https://www.python.org/ftp/python/3.8.8/Python-3.8.8.tgz tar -xzf Python-3.8.8.tgz cd Python-3.8.8 # 配置编译环境 ./configure --enable-optimizations # 编译 Python make # 使用 altinstall 安装 Python(避免替换系统默认版本) sudo make altinstall # 验证 Python 安装 python3.8 --version # 如果出现以下提示 Looking in links: /tmp/tmps4xogbd7 Processing /tmp/tmps4xogbd7/setuptools-49.2.1-py3-none-any.whl Processing /tmp/tmps4xogbd7/pip-20.2.3-py2.py3-none-any.whl Installing collected packages: setuptools, pip WARNING: The script easy_install-3.8 is installed in '/usr/local/bin' which is not on PATH. Consider adding this directory to PATH or, if you prefer to suppress this warning, use --no-warn-script-location. WARNING: The script pip3.8 is installed in '/usr/local/bin' which is not on PATH. Consider adding this directory to PATH or, if you prefer to suppress this warning, use --no-warn-script-location. Successfully installed pip-20.2.3 setuptools-49.2. 这段信息表明 setuptools 和 pip 已经成功安装到您的系统中。然而,还存在两个警告: easy_install-3.8 脚本安装在 '/usr/local/bin' 目录下,但是该目录不在 PATH 环境变量中。 pip3.8 脚本安装在 '/usr/local/bin' 目录下,但是该目录不在 PATH 环境变量中。 这些警告表示这些脚本的路径未被添加到系统的 PATH 环境变量中,因此您可能无法直接通过命令行调用它们。 # 将脚本路径添加到 PATH 环境变量中:您可以编辑您的 shell 配置文件 vi /etc/bashrc #在文件末尾添加以下行 export PATH="/usr/local/bin:$PATH" # 这行代码将 /usr/local/bin 目录添加到 PATH 环境变量的最前面。如果该目录已经在 PATH 中,则不会重复添加。保存并关闭文件。 # 为了使修改生效,您需要重新加载 shell 配置文件。您可以在终端中执行以下命令 source ~/.bashrc # 确认修改已生效。您可以执行以下命令来检查 /usr/local/bin 是否已经成功添加到 PATH 中 echo $PATH # 手动安装pip,从官方网站手动下载 pip 安装脚本: curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py --insecure # 运行安装脚本: python3.8 get-pip.py # 如需用pipenv,需要提前安装pipenv pip install pipenv # 如需使用yarn,需要提前安装 sudo yum install yarn #如果安装失败可使用以下方法,先加载yarn源 curl --silent --location https://dl.yarnpkg.com/rpm/yarn.repo | tee /etc/yum.repos.d/yarn.repo # 然后再次执行 sudo yum install yarn # 验证是否安装成功 yarn --version #执行时出现以下错误,可能需要降低nodejs版本 node: relocation error: /lib64/libnode.so.93: symbol FIPS_selftest, version OPENSSL_1_1_0g not defined in file libcrypto.so.1.1 with link time reference #降级操作,先查询本地版本,防止其它系统有依赖后出错 [root@admo cmdb-ui]# rpm -qa |grep nodejs nodejs-libs-16.20.2-1.el7.x86_64 nodejs-16.20.2-1.el7.x86_64 [root@admo cmdb-ui]# rpm -qa |grep glibc compat-glibc-headers-2.12-4.el7.centos.x86_64 glibc-common-2.17-326.el7_9.3.x86_64 glibc-devel-2.17-326.el7_9.3.x86_64 compat-glibc-2.12-4.el7.centos.x86_64 glibc-2.17-326.el7_9.3.x86_64 glibc-headers-2.17-326.el7_9.3.x86_64 # 使用以下命令来卸载 Node.js sudo yum remove nodejs # 安装 nvm(Node.js 版本管理器): # nvm 是一个 Node.js 版本管理器,可以方便地管理不同版本的 Node.js。您可以使用以下命令来安装 nvm: curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.38.0/install.sh | bash # 重新启动终端:安装完成后,您需要关闭当前的终端窗口,并重新打开一个新的终端窗口,以便使 nvm 命令生效。使用 nvm 命令安装您想要的特定版本的 Node.js。例如,要安装 Node.js 12 版本,您可以运行以下命令: nvm install 12 # 如果您想要将新安装的 Node.js 版本设置为默认版本,可以使用以下命令 nvm alias default 12 # 安装完成后,您可以使用以下命令来验证 Node.js 版本: node --version
安装MySQL
教程连接:MySQL5.7安装教程
安装CMDB
请参考:https://github.com/veops/cmdb/blob/master/docs/local.md
# 数据库导入命令 mysql -u root -p cmdb < /usr/local/cmdb/docs/cmdb.sql # 如果出现Error: No such command 'db-setup'.错误请执行以下命令安装Flask-Script 和 Flask-Migrate pip install Flask-Script Flask-Migrate