zoukankan      html  css  js  c++  java
  • Python学习day15 CMDB

    Created on 2017年6月6日

    第1课 上节作业 10minutes

      显示页面时,只有登录了才能显示,没登录会弹出一个登录框,就是一个遮挡层

    第2课 自动化之路和CMBD地位 22minutes

    CMDB:
    自动安装
    配置管理系统
    CMDB运维资产管理系统(所有系统都需要调用这里的信息)---核心所在

    图表工具
    highchats
    echats

    CMDB:
    采集硬件数据
    API汇报----开放给所有外部,收集信息,通过API写入到数据库
    页面管理

    大概流程:Client Agent通过URL向API汇报====>API接收后存到数据库中====>后台管理通过调用数据库,对数据进行增删改查

    第3课 CMDB之puppet采集数据方式 21minutes
      采集puppet去操作
      puppet:
      factor ==> 结果以Key/value方式存在 (Saltstack ===> grains)
      report ==> 只要master/slive连接一次,就执行report process函数

      master(保存配置信息,和slive半小时连接一次,可更改)
      slive(从Master获取配置,用此配置得到本地硬件信息)

      可通过puppet采集硬件信息,严重依赖puppet

    第4课 CMDB之自定义python插件采集数据方式 11minutes

      通过Python程序来调用Shell收集硬件信息
      新建了个day15_pj的程序,代码不完整,需补充

    第5课 CMDB之django实现API 35minutes

      每个Agang里得到都是字典,包含设备的硬件信息
      通过对视频里的脚本的复制,部分未看到
      可以通过httplib 的方式将数据发送到一个函数里

    Created on 2017年6月7日
    第6课 CMDB之数据流执行过程回顾 18minutes

    def RequestUrl(host,port,source,params,timeout):
      headers = {'Content-type':'applicaton/','Accept':'text/plain'}
      try:
      conn = httplib.HTTPConnection(host,port,timeout)
      conn.request('POST',source,params,headers)
      response = conn.getresponse()
      original = response.read()
      except Exception,e:
        raise e
      return original
    
      server_info = {'cpu':'idle'}
    
    if __name__ == '__main':
        while True:
        #通过Plugin获取硬件信息
        #将所的获得的信息组合成一个字典,将字典发送到一个API
        #API保存信息到数据库
            RequestData = urllib.urlencode({'data':server_info})
            result =     RequestUrl('127.0.0.1','8888','/recelve_server_info',RequestData,30)
            print '========result: %s =========='%(result,)
            time.sleep(50)
        
    

      

    第7课 CMDB之rest_framework开始API一 31minutes

    可以测试Httplib程序
    -----------------------------------------------------------------
    # -*- coding: utf-8 -*-
    '''
    Created on 2017年6月7日 @author: louts
    '''
    
    import os
    import httplib
    import time
    import json
    import urllib
    from plugins import DiskPlugin
    from plugins import MemoryPlugin
    
    class Program():
    def __init__(self):
    hostname = os.environ['HOSTNAME']
    self.server_info = ''
    
    def execute(self):
    big_dict = {}
    #对每个插件获得的数据直接拉过来,放大一个大字典里
    ram = MemoryPlugin.MemoryPlugin
    ram_dict = ram.execute()
    big_dict = {
    'ram':ram_dict,
    }
    RequestData = {'data':big_dict}
    #格式化数据
    RequestData = urllib.urlencode({'data':server_info})
    #发送数据
    self.requestUrl('127.0.0.1','8000','/api/',RequestData,30)
    
    #通过httplib向URL发送请求 (代码已完整)
    #http://127.0.0.1:8000/index/
    #host:127.0.0.1 port:8000 source:/index/ params:data
    def requestUrl(self,host,port,source,params,timeout):
    headers = {'Content-type':'applicaton/','Accept':'text/plain'}
    try:
    conn = httplib.HTTPConnection(host,port,timeout)
    conn.request('POST',source,params,headers)
    response = conn.getresponse()
    original = response.read()
    except Exception,e:
    raise e
    return original
    
    
    if __name__ == '__main__':
    times = 0
    while True:
    objProgram = Program()
    objProgram.execute()
    times += 1
    time.sleep(30000)
    ----------------------------------------------------------------- 
    
    Python开放接口,其实就是写一个函数,将信息进行返回
    
    def install_os(request):
    #从数据库取数据
    #用Json进行封装
    #返回给用户 
    pass
    
    
    
    #REST是Representational State Transfer的简称,中文翻译为“表征状态转移”
    def server(request):
    
    #REST里的函数用名词来定义
    #可用行业的规则来操作,增删改查
    method = post,delete,put,get
    if post:
    Add
    if delete:
    del
    if put:
    update
    if get:
    Select
    
    
    Django REST framework
    
    pip install djangorestframework
    pip install markdown # Markdown support for the browsable API.
    pip install django-filter # Filtering support
    

      

    Created on 2017年6月10日
    第8课 CMDB之rest_framework开始API二 32minutes

    这里有点问题,需要学习,在URL里不能有两个URL,将原来的URL并到新的当中就可以看到了
    还不知道如何增删改查
    #------rest-framework------------------
    from django.conf.urls import url, include
    from django.contrib.auth.models import User
    from app01.models import Book
    #这里导入有问题
    from rest_framework import routers, serializers, viewsets
    
    # Serializers define the API representation.
    #这个类直接序列化queryset得到的数据
    class UserSerializer(serializers.HyperlinkedModelSerializer):
    class Meta:
    #这里是定义的数据库类
    model = User
    fields = ('url', 'username', 'email', 'is_staff')
    
    # ViewSets define the view behavior.
    class UserViewSet(viewsets.ModelViewSet):
    queryset = User.objects.all()
    serializer_class = UserSerializer
    
    class BookSerializer(serializers.HyperlinkedModelSerializer):
    class Meta:
    #这里是定义的数据库类
    model = Book
    fields = ('url', 'name', 'auth')
    
    # ViewSets define the view behavior.
    class BookViewSet(viewsets.ModelViewSet):
    queryset = Book.objects.all()
    serializer_class = BookSerializer
    
    # Routers provide an easy way of automatically determining the URL conf.
    router = routers.DefaultRouter()
    router.register(r'users', UserViewSet)
    router.register(r'books', BookViewSet)
    
    urlpatterns = [
    url(r'^', include(router.urls)),
    url(r'^api-auth/', include('rest_framework.urls', namespace='rest_framework')),
    url(r'^recevie_server_info/', views.recevie_server_info),
    url(r'^admin/', admin.site.urls),
    ]
    

      


    #----------------------------------

    视频中的URL有POST,实际操作中没有这个功能
    Chrome插件POSTMAN可以对页面进行操作。

    Created on 2017年6月11日
    第9课 CMDB之表结构设计 41minutes

    可以通过rest_framework的装饰器来限制增删改查,但实验未成功
    ---------------------------------------------------
    from rest_framework.decorators import api_view
    from rest_framework.response import Response
    
    #rest_framework装饰器
    @api_view(['GET','PUT','POST','DELETE'])
    def servers(request):
    #REST是Representational State Transfer的简称,中文翻译为“表征状态转移”
    #REST里的函数用名词来定义
    #可用行业的规则来操作,增删改查
    #method = post,delete,put,get
    method = request.method
    if method == 'POST':
    return Response('ddd')
    -------------------------------------------------------
    创建数据库,一个Asset表对应一大堆的后端设备及CPU和内存信息
    

      

    Created on 2017年6月18日
    第10课 CMDB之表结构设计 41minutes

     

     

     

     

     


  • 相关阅读:
    2019春第九周作业
    2019春第八周作业
    2019春第七周作业
    2019春第六周作业
    2019春第五周作业
    2019年春季学期第四周作业
    2019年春季学期第三周作业
    2019年春季学期第二周作业
    学习进度条
    第六周作业
  • 原文地址:https://www.cnblogs.com/syother/p/6954385.html
Copyright © 2011-2022 走看看