CMDB设计
CMDB(资产管理数据库)
CMDB是所有运维工具的数据基础
CMDB包含的内容
- 用户管理,记录测试,开发,运维人员的用户表
- 业务线管理,需要记录业务的详情
- 项目管理,指定此项目用属于哪条业务线,以及项目详情
- 应用管理,指定此应用的开发人员,属于哪个项目,和代码地址,部署目录,部署集群,依赖的应用,软件等信息
- 主机管理,包括云主机,物理机,主机属于哪个集群,运行着哪些软件,主机管理员,连接哪些网络设备,云主机的资源池,存储等相关信息
- 主机变更管理,主机的一些信息变更,例如管理员,所属集群等信息更改,连接的网络变更等
- 网络设备管理,主要记录网络设备的详细信息,及网络设备连接的上级设备
- IP管理,IP属于哪个主机,哪个网段, 是否被占用等
CMDB实现的三种方式
(1)Agent实现方式:Agent方式,可以将服务器上面的Agent程序作定时任务,定时将资产信息提交到指定API录入数据库

其本质上就是在各个服务器上执行subprocess.getoutput()命令,然后将每台机器上执行的结果,返回给主机API,然后主机API收到这些数据之后,放入到数据库中,最终通过web界面展现给用户
优点:速度快
缺点:需要为每台服务器部署一个Agent程序,适用于上万台机器
(2)ssh实现方式 (基于Paramiko模块)
中控机通过Paramiko(py模块)登录到各个服务器上,然后执行命令的方式去获取各个服务器上的信息

优点 :无Agent 缺点:速度慢,适用于一两百台机器
在机器台数不多时候可用此方法
import paramiko
# 创建SSH对象
# ssh = paramiko.SSHClient()
# 允许连接不在know_hosts文件中的主机
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
# 连接服务器
ssh.connect(hostname='c1.salt.com', port=22, username='root', password='') # 执行命令
stdin, stdout, stderr = ssh.exec_command('df')
# 获取命令结果
result = stdout.read() # 关闭连接
ssh.close()
(3)saltstack方式

此方案本质上和第二种方案大致是差不多的流程,中控机发送命令给服务器执行。服务器将结果放入另一个队列中,中控机获取将服务信息发送到API进而录入数据库。
saltstack安装配置
master端:
1.安装salt-master
yum install salt-master
2. 修改配置文件:/etc/salt/master
interface: 0.0.0.0 # 表示Master的IP
3. 启动
service salt-master start
"""
slave端:
"""
1. 安装salt-minion
yum install salt-minion
2. 修改配置文件 /etc/salt/minion
master: 10.211.55.4 # master的地址
或
master:
- 10.211.55.4
- 10.211.55.5
random_master: True
id: c2.salt.com # 客户端在salt-master中显示的唯一ID
3. 启动
service salt-minion start
"""
授权
salt-key -L # 查看已授权和未授权的slave
salt-key -a salve_id # 接受指定id的salve
salt-key -r salve_id # 拒绝指定id的salve
salt-key -d salve_id # 删除指定id的salve
执行命令
在master机器上执行对salve进行远程操作
salt 'c2.salt.com' cmd.run 'ifconfig'
import subprocess
cmd = "salt '*' cmd.run 'ifconfig'"
res = subprocess.getoutput(cmd)
print(res)
基于API方式
import salt.client local = salt.client.LocalClient()
result = local.cmd('c2.salt.com', 'cmd.run', ['ifconfig'])
CMDB设计的更多相关文章
- 02: CMDB设计思路
1.1 cmdb理解 参考博客:https://www.cnblogs.com/laowenBlog/p/6825420.html 参考博客2:https://www.cnblogs.com/ ...
- 双态运维:如何让CMDB配置维护更贴近人性
近来很多行业内的大佬关于CMDB连连发声,CMDB的关注度持续高涨,CMDB的前生就是长满雀斑的丑媳妇,扭扭捏捏不受待见这么多年,终于熬出头要见公婆了.哎,她的贤惠谁能懂? 言归正传,在拜读了多篇大牛 ...
- CMDB经验分享之 – 剖析CMDB的设计过程
作为IT管理的核心,CMDB逐渐成为系统管理项目实施的热点.在很多的案例中,由于忽视了CMDB的因素,ITIL的深入应用受到了极大的挑战.同时,由于CMDB是IT管理信息的集中,CMDB也是一个重要的 ...
- CMDB数据库设计
title: CMDB 数据库设计 tags: Django --- CMDB数据库设计 具体的资产 服务器表和网卡.内存.硬盘是一对多的关系,一个服务器可以有多个网卡.多个内存.多个硬盘 hostn ...
- CMDB服务器管理系统【s5day87】:需求讨论-设计思路
自动化运维平台愿景和服务器管理系统背景 服务器管理系统 管理后台示例 需求和设计 为什么开发服务器管理系统? 背景: 原来是用Excel维护服务器资产,samb服务[多个运维人员手动维护] 搭建运维自 ...
- CMDB资产管理系统的数据表设计
Server表: asset = models.OneToOneField('Asset') 主机名(hostname) sn号(sn) 制造商(manufacture) 系统(os_platform ...
- Python之路【第二十二篇】CMDB项目
浅谈ITIL TIL即IT基础架构库(Information Technology Infrastructure Library, ITIL,信息技术基础架构库)由英国政府部门CCTA(Central ...
- Python学习路程CMDB
本节内容 浅谈ITIL CMDB介绍 Django自定义用户认证 Restful 规范 资产管理功能开发 浅谈ITIL TIL即IT基础架构库(Information Technology Infra ...
- CMDB反思5
ITSM工具规划设计 http://blog.vsharing.com/xqscool/A946789.html 相比PPT中被管的数个对象(像培训什么的也都在其中),我们的需求其实就要小得多,但是问 ...
随机推荐
- 配置监听器 服务器启动时 检索常用数据 保存在application中 减少数据的查询操作(OA项目)
模型 大致介绍一下:左侧菜单是用户登录成功之后显示的页面 这些数据就是通过查询数据库 然后在页面中把查到的数据 循环遍历出来 构成了操作菜单 第一个解决的问题:常用数据 在服务器启动的时候 ...
- idea常用方便的快捷键
Ctrl+D 复制行Ctrl+F 查找文本Ctrl+G 定位到某行Ctrl+H 显示类结构图(类的继承层次)Ctrl+I 实现方法ctrl+J 显示所有快捷键模板ctrl+k 提交代码到SVNCrtl ...
- 关于Windows通过远程桌面訪问Ubuntu
关于Windows通过远程桌面訪问Ubuntu 问题及目标 Window环境通过远程桌面訪问Ubuntu Ubuntu机器端 1. 安装所需软件包 sudoapt-get install xrdp ...
- 我的php站点系统分析工具01
出于后的工作需求.须要高速弄清楚整个php站点系统是怎样执行的.抱着试探的心态.写出了这个工具. 临时把它叫做"系统信息动态解析地图"吧,或许"系统信息图"更方 ...
- centos 下 KVM虚拟机的创建、管理与迁移
kvm虚拟机管理 一.环境 role hostname ip OS kvm_server target 192.168.32.40 ...
- angularjs1--动画
<!DOCTYPE HTML> <html ng-app="myApp"> <head> <meta http-equiv="C ...
- H5自带进度条&滑块
一.H5自带进度条 <div id="d1"> <p id="pgv">进度:0%</p> <progress id= ...
- tp5控制器调用,方法调用
<?php //命名空间 namespace app\index\controller; use app\admin\controller\Deer; class User{ public ...
- 取消overflow-scroll的滚动条
通常情况下设置完overflow:scroll之后,就会在页面中出现滚动条,下边的方法可以取消掉此滚动条: container为当前设置overflow:scroll的元素 1.使用以下CSS可以隐藏 ...
- art-template模板渲染及其过滤器
原生语法 使用原生语法,需要导入template-native.js文件.在HTML中定义模板,注意模板的位置,不要放到被渲染区域,防止模板丢失. <script id="tpl&qu ...