# 资产管理系统 **Repository Path**: bfhgddgd/CMDB ## Basic Information - **Project Name**: 资产管理系统 - **Description**: 运维自动化项目 资产管理系统 - **Primary Language**: Python - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 2 - **Created**: 2021-11-21 - **Last Updated**: 2021-11-21 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ## 运维自动化项目 ### 目的 > -减少人工干预,降低人员成本 -资产管理 -操作管理 API:1.用户在数据库中获取数据 2.从客户端中获取资产存取到数据库 四种方式: 1.agent: 在每个客户端上定时执行subprocess获取资产信息发送到API处理之后存取到数据库 快 有agent 2.paramiko(ssh):作为中控机,远程通过paramiko连接每个客户端执行脚本获取资产信息发送到API 无agent 慢 ansible fabric 内部都是基于paramiko实现的 3.saltstack(rpc):在saltstack基础上,在saltmaster上部署一个程序,定时去取当前未采集服务器列表,然后拿着服务器列表远程去执行,拿到结果汇报给API。 在所有的客户端上装一个软件(agent),saltmaster通过利用zeromq(基于内存的消息队列一种) 从每一个agent中的获取资产信息发送到API(rpc模式) 快,开发成本低 依赖saltstack 4.基于puppet报表功能:客户端每30分钟想服务端汇报一次,汇报的时候服务端执行ruby脚本获取命令执行命令(factor:自定义命令)获取客户端(saltslave) 数据汇报到API 自动汇报 ruby ### CMDB - 运维自动化基础 - 资产管理 > 功能: - Agent或中控机 -字典套字典 =》数据 -认证API a.时间超时 b.访问记录 c.加密后进行比较 =====》Tornado源码中来了《===== - API - 后台管理 作业: CMDB采集资产信息示例 - Django URL - views CBV方式 # 提交到API的数据结构 server_info = plugins.get_server_info(hostname) # 序列化成字符串 server_json = Json.dumps(server_info.data) response = requests.post( url="http://ww.....", json=server_json ) 预习: 数据库表结构 - API验证 客户端和服务段都以一个共同的时间戳,客户端发送 密文(一个字符串|一个时间戳(shalib加密))|时间戳,服务器里拿到数据,根据已有字符串和获取的时间戳加密后和发送的密文做验证,并把通过的key值加入到服务器端列表(redis等缓存中)。可以进行时间限制,当前时间和发送时间做差,时间大于限制时间则拒绝。 - 保存资产数据;保存资产变更记录 作业: 前提: 1. Agent汇报数据格式 { ‘status’: '', 'hostname':“ssdf” "data":{ 'disk': {status"...} } } 2. 数据库表结构 3. # ========》 server_obj服务器对象 ;server_info 《========== # 硬盘 或 网卡 或 内存 # 硬盘:增删改 # 1. server_obj反向关联硬盘表,获取数据库中硬盘信息 # [ # {'slot': "#1", 'size': '100'}, # {'slot': "#2", 'size': '60'}, # {'slot': "#3", 'size': '88'}, # ] # old_list = ['#1','#2','#3'] # 2. server_info['disk'] 新汇报的硬盘数据 # { # "#1":{'slot': "#1", 'size': '90'}, # "#4":{'slot': "#4", 'size': '40'}, # } # new_list = ['#1','#4'] #3. 更新['#1'] 删除['#2','#3'] 增加 ['#4'] #4. # 增加 ['#4'] CMDB总结: 1.三种采集资产的方式 唯一标识:根据主机名唯一标识,必须制定规则,主机名不能相同。(不可以是电脑的序列号,因为虚拟机可能相同) 2.API验证 API验证(tornado源码,加密cookie+时间限制+访问记录) 数据库表结构 3.后台管理 告别CURD,公共组件(前端和后端)