day_23_CMDB项目开发

1. CMDB开发的流程图

2. ITIL介绍
itil是指导规范,自动化的最终目的实现的指导方针
主要适用于IT服务管理(ITSM)
1.事件管理
2.问题管理 知识库 找出问题的根源 viki
3.配置管理 配置项(硬件设备,软件),数据源的边界
4.变更管理 业务关联不清楚 合理的变更流程
5.发布系统 灰度发布

要实现自动化,首先实现标准化,既是标准化的管理和监控公司的服务器
CMDB就是Configuration Management Database 配置管理数据库
就是管理基础硬件和软件的信息

接下来,就是怎么做
目的:通过Django实现对公司服务器,网络安全设备等硬件进行统一管理和调度

3. 表结构创建
既是要管理和监控这些设备的哪些指标,监控哪些指标,就是放到数据库里的格式化的数据,
很容易通过Django的ORM进行数据的展示,通过某种逻辑关系把数据库的相关信息进行整合

详细资产列表

Asset
Server
SecurityDevice
NetworkDevice
Software
CPU
RAM
Disk
NIC
RaidAdaptor
Manufactory
BusinessUnit
Contract
Cabinet
IDC
Tag
EventLog
UserProfile
NewAssetApprovalZone

Django的用户验证

from django.contrib.auth.models import User

class UserProfile(models.Model):
    user = models.OneToOneField(User)
    name = models.CharField(max_length=32)
    phone = models.IntegerField()

4. CMDB客户端开发
客户端实现方式,通过Python脚本,收集本机的服务器信息,通过网络传输的方式ftp,http等传到管理机上,
我们这里选择http协议进行,使用爬虫方式进行提交数据requests,数据格式是JSON

# 通过Python脚本进行相关服务器信息的抓取,需要安装python扩展
http://starship.python.net/~skippy/win32/Downloads.html       # win32com
https://pypi.python.org/pypi/WMI        # wmi

requeststs提交数据

req = requests.post(url=url,data=data)
# 获取返回结果
callback = req.text
callback = json.loads(callback)

MadKingClient提交数据到服务端

5. 服务器处理客户端汇报的数据
服务器端实现方式,对于客户端发来的JSON数据进行处理,分类存储到数据库中,通过Django的ORM进行查询

# urls.py 路由系统

from django.conf.urls import url,include
from django.contrib import admin

from asset import urls as asset_urls

urlpatterns = [
    url(r'^admin/', include(admin.site.urls)),
    url(r'^asset/',include(asset_urls)),
]

# asset.urls.py

from django.conf.urls import url

from asset import views
urlpatterns = [
    url(r'report/asset_with_no_asset_id/$',views.asset_with_no_asset_id),

]

# views.py 视图函数,对初次汇报的数据进行处理

from django.shortcuts import render,HttpResponse
import json
from django.views.decorators.csrf import csrf_exempt
from asset import core

@csrf_exempt
def asset_with_no_asset_id(request):
    if request.method == 'POST':
        ass_handler = core.Asset(request)
        res = ass_handler.get_asset_id_by_sn()

        return HttpResponse(json.dumps(res))

6. 资产待审批区功能开发
自定制admin需要在model中重新写类

from django.contrib import admin
from asset import models
from asset import core

class AssetApprovalAdmin(admin.ModelAdmin):
    """
    自定义admin
    list_diaplay 显示数据库中的显示的属性
    list_filter 根据某些属性进行过滤
    search_filter 根据某些字段进行查询
    list_editable 编辑某些字段
    """
    list_display = ('sn','asset_type','manufactory','model','cpu_model','os_type','os_release','approved')
    list_filter = ('asset_type','os_type')
    search_fields = ('sn','os_type')
    list_editable = ('asset_type','approved')

    actions = ['asset_approval',]
    def asset_approval(self,request,querysets):
        print("--------asset approval.....",self,request,querysets)

        for obj in querysets:
            asset_handler = core.Asset(request)
            if asset_handler.data_is_valid_without_id(obj):
                """判断是新资产"""
                asset_handler.data_inject() #注射
                obj.approved = True
                obj.save()
                print(asset_handler.response)
    asset_approval.short_description = "新资产审批"

admin.site.register(models.NewAssetApprovalZone,AssetApprovalAdmin)
View Code

7. 资产自动创建代码解析
从待审批区写进数据库的具体流程

 

posted @ 2017-06-29 10:05  huaxiayidao  阅读(53)  评论(0)    收藏  举报