python cmdb 马哥_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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值