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

 

 

 

 

 


posted on 2017-06-07 01:43  syother  阅读(433)  评论(0编辑  收藏  举报