- 博客(44)
- 资源 (2)
- 收藏
- 关注
原创 python自动化运维学习第四十四天--发布系统
cmdb和权限系统弄好以后,下面就是代码发布系统。分析发布系统需要几个方面,代码库(git/svn)、代码路径、代码版本号、应用、环境等。一个应用可能有好几个小应用组成,每个小应用对应一个代码库;还有可能只有一个单独的应用对应一个代码库,没有其他小应用。应用有测试环境和生产环境,每个环境对应一台或多台主机。发布时需要指定应用、版本号、环境,到代码指定路径下载代码,并通过工具发送到指定环境主机指...
2019-02-23 23:48:00
433
原创 python自动化运维学习第四十三天--bootstrap套用
cmdb页面已经创建好了,但是缺少样式,页面打开不好看,简单的方法是使用现成的bootstrap模板,修改为自己想要的结果。首先需要找模板。网上有很多现成的模板,找一个跟cmdb系统相似的后端系统即可。找模板时需要有cmdb系统需要的table表和form表单,查询和添加修改时需要用到这些样式。例如下边这样的示例中的都是假数据,在cmdb系统中套用时需要修改后端代码,这些数据应该都是从数据...
2019-02-19 22:55:36
374
原创 python自动化运维学习第四十二天--cmdb权限相关代码实现
权限表中的to_display字段添加后,进入django的后台页面,把增删改权限的to_display项关联到查看,例如添加主机、编辑主机和删除主机的to_display字段选查看主机查看的to_display项为空,不填。这样就把主机相关的菜单都放到查看主机这个菜单中了。主机、用户、菜单、权限等相关项都整合到查看项这个菜单中。views.py中的登录相关代码from demo impo...
2019-02-05 21:41:59
340
1
原创 python自动化运维学习第四十一天--登录后数据需求分析
接上篇,配置django后台admin,进入管理后台。添加一些数据,首先添加用户,分别添加3个用户,添加3个岗位开发、测试和运维;再添加权限表,权限路径根据django中的url填写,显示名字分别为增、删、改、查/主机、用户、菜单等;添加权限组,组名为主机、用户、菜单;最后添加菜单,菜单填写页面左侧要显示的菜单名,如主机、用户等。添加数据后还要把这些数据关联起来,如用户设置岗位,岗位配置权限,权限...
2019-02-02 22:20:37
256
原创 python自动化运维学习第四十天--权限表设计
根据前篇介绍,权限主要涉及到用户、职位、权限、权限组(二级菜单)和菜单(主)五张表。下面是这几张表的结构class Users(models.Model): username = models.CharField(max_length=32, verbose_name="用户名") password = models.CharField(max_length=128, verbo...
2019-02-01 15:10:49
252
原创 python自动化运维学习第三十九天--权限系统业务场景
根据员工的不同岗位设置不同的权限,保护敏感信息。这里说的权限针对的业务场景是CMDB,一般分为两个维度,一个是用户名密码,另一个是主机维度。针对用户名密码的维度,分为生产环境、灰度环境和测试环境(根据自己的实际情况划分)。生产环境root权限只有运维;user权限(服务启动用户)也是运维;只读readonly权限可以是运维/开发/测试/项目主管。灰度环境下,root权限也是只有运维;user权...
2019-01-29 12:31:37
357
原创 python自动化运维学习第三十八天--阿里云api入门
前面几篇都是介绍的cmdb获取物理机或私有云的主机信息。这里介绍通过阿里云api获取阿里云服务器的相关信息,然后经过处理后再存放到cmdb服务器中。首先要注册一个阿里云账号,这里不做介绍。注册后,登录阿里云,鼠标放到右上角的用户图像上,会显示一项“accesskeys”点击进入“安全信息管理”页面,点击页面右侧的“创建AccessKey”,生成“AccessKeyId”和“AccessK...
2019-01-25 23:14:59
705
原创 python自动化运维学习第三十七天--cmdb总结
接上篇,通过salt-api拿到了想要的数据,但是这个数据包括很多内容。以内存为例,只需要内存大小,其他信息不需要。这时我们就要对内存数据做一些处理,返回我们真正想要的值。下面是对通过salt-api获取的数据做处理,get_data.py的内容def send_main(param): salt = SaltApi(SALT_API_CON,param) # print("s...
2019-01-24 08:29:03
359
原创 python自动化运行学习第三十六天--请求salt-api
根据上一篇博文,把其中配置相关代码单独放到另一个文件中,作为程序的一个配置文件来使用目录结构如下创建一个settings的目录,目录下新建一个config.py文件,内容如下host_info = { "disk":"fun.hosts.disk.Disk", "cpu":"fun.hosts
2019-01-22 23:41:02
182
原创 python自动化运维学习第三十五天--面向对象python2和3的区别
前面讲到使用salt-api获取客户端数据,还有个遗留问题。在主机比较多时如何保证获取的主机不会有重复,比如使用ip来标识主机,如果配置了keepalived的vip,发生ip变动时就会导致获取的数据不是原主机的数据。可以使用salt-minion的id来标识每个主机,由于minion的id必须是唯一的,正好符合我们的要求。面向对象中python2和3的区别向下进行前还要先清楚面向对象中pyt...
2019-01-20 23:18:01
245
原创 python自动化运维学习第三十四天--调用salt-api
安装saltstack从官网下载一个rpm的源,安装这个yum源。master上安装salt-api、salt-master和salt-minion,客户端安装salt-minion。master和api安装yum install -y salt-master salt-api pyOpenSSLpip install salt-apipip install cherrypy==3.2....
2019-01-18 23:13:44
314
原创 python-自动化运维学习第三十三天--cmdb客户端需求梳理
前面几节cmdb服务端基本完成了,还差分页和登录相关部分。在机器比较多时不可能每台机器的信息都手动输入,那样就违背了我们自动化运维的初衷。我们可以在服务端做一个定时任务,定时去收集主机的相关信息;或者在页面上设计一个按钮,一键自动收集更新主机信息。收集主机的信息可以使用saltstack、ansible等工具,也可以自己写一个客户端,如果使用阿里云,它会有自己的api。通过这些工具收集主机的信...
2019-01-18 08:25:05
438
原创 python自动化运维学习第三十二天--cmdb基于form增删改查
使用Django的form,创建一个form_class.py的文件from django.forms import Form,fields,widgetsfrom demo import modelsclass HostForm(Form): hostname = fields.CharField( required=True, error_mes...
2019-01-18 00:03:02
176
原创 python自动化运维学习第三十一天--cmdb增删改查
前一节已经梳理了cmdb需要存储的信息,根据这些信息设计数据库表结构。首先创建一个Django项目,在项目models.py中编写数据库表结构class Memory(models.Model): '''内存''' size=models.CharField(max_length=32, blank=True, null=True, verbose_name='内存/G') ...
2019-01-16 22:19:23
373
原创 python自动化运维学习第三十天--CMDB需求
CMDB是资产管理的简称,是运维自动化的基础。代码的发布、系统的监控以及堡垒机等都要依靠CMDB来实现的。功能分析:需要记录的指标来源(公有云、物理机等)、ip(内网、外网)、主机名、cpu、内存、硬盘、内核、操作系统、ecs_name(针对阿里云)、标识_name、上线状态、运行的程序、所属环境(测试、生产)、区域/城市、机房、机柜、硬件类型等。逻辑梳理:1、使用数据库来存储数据,一般...
2019-01-14 23:54:53
1221
原创 python自动化运维学习第二十九天--uwsgi+nginx+Django部署上线
写好一个Django项目后,需要把它放到线上环境去。由于我们是在pycharm中来开发的,运行调试都是使用的pycharm,直接把项目放到线上Linux环境中运行会出现单进程这种状况,即只能同时处理一个请求,不能处理并发请求。并不是我们想要的结果,这时就需要用到uwsgi。线上一般会使用nginx+uwsgi+Django来部署。具体操作步骤如下:Linux系统安装nginx、uwsgi、p...
2019-01-07 23:35:55
195
原创 python自动化运维学习第二十八天--Django中间件
Django的中间件就是一个类。在项目settings模块中定义的变量MIDDLEWARE,其中的每一个元素都是一个中间件。MIDDLEWARE = [ 'django.middleware.security.SecurityMiddleware', 'django.contrib.sessions.middleware.SessionMiddleware', 'djan...
2019-01-06 21:13:38
264
2
原创 python自动化运维学习第二十七天--form表单
Form表单有两个作用用户请求验证生成HTML标签例如要做一个注册页面,注册的信息要做一些验证1、用户名、密码等不能为空2、符合一定格式。手机号11位、邮箱必须有@号等3、自定义的验证信息。两次输入的密码必须相同等注册的实例:urls部分代码urlpatterns = [ url(r'^admin/', admin.site.urls), url(r'^re...
2019-01-03 22:46:11
217
原创 python自动化运维学习第二十六天--CBV登录验证
回顾前边的urls代码urlpatterns = [ url(r'^admin/', admin.site.urls), url(r'^index/', views.Cbv.as_view()), #CBV]再看下views中的代码class Cbv(View): def get(self,request): retur...
2018-12-30 23:37:12
144
原创 python自动化运维学习第二十五天--FBV、CBV和序列化
FBV:function base views (views中使用函数来接收路由)CBV:class base views(views中使用class来接收路由)前几篇文章中都是使用的FBV,下面使用CBV处理路由请求views.py部分代码from django.views import View #导入View模块class Cbv(View)...
2018-12-29 23:23:46
315
转载 python自动化运维第二十四天--cookie和session
简介1、cookie不属于http协议范围,由于http协议无法保持状态,但实际情况,我们却又需要“保持状态”,因此cookie就是在这样一个场景下诞生。cookie的工作原理是:由服务器产生内容,浏览器收到请求后保存在本地;当浏览器再次访问时,浏览器会自动带上cookie,这样服务器就能通过cookie的内容来判断这个是“谁”了。2、cookie虽然在一定程度上解决了“保持状态”的需求,但...
2018-12-28 23:27:21
161
原创 python自动化运维学习第二十三天--django分页
分页就是页面显示的内容过多,分多页来显示,如论坛的帖子、电子书籍等views.py页面分页配置如下from django.core.paginator import Paginator,EmptyPage,PageNotAnIntegerdef page(request): user_list = models.UserInfo.objects.all().order_by("id"...
2018-12-27 23:12:56
179
原创 python自动化运维学习第二十二天--ORM高级
ORM查询双下划线和条件查询直接上例子---------------双下划线(__)单表条件查询---------------- obj_list = models.UserInfo.objects.filter(id__lt=5, id__gt=1) # 获取id大于1且小于5的值 for i in obj_list: print(i.name) mod...
2018-12-26 23:01:30
151
原创 python自动化运维学习第二十一天--ORM跨表操作
数据库表和表都是有关联的,一般分为一对一、一对多和多对多。一对一就是一张表的数据与另外一张表的数据是一一对应关系。一对多是一张表的一条数据对应于另一张表的多条数据。如学校表和班级表,一个学校包含多个班级。多对多是一张表的多个数据对应另一张表的多条数据。如班级表和学生表,一个班级有多个学生,一个学生属于多个班级。在ORM中可以跨表执行增删改查,跟单表的增删改查稍有区别。views.py示例...
2018-12-25 23:45:27
167
原创 python自动化运维学习第二十天--ORM增删改查
数据库的配置django支持的数据库类型有sqlite、MySQL、oracle、postgresql。Django默认使用的是sqlite数据库,自带了sqlite数据库驱动,引擎名为django.db.backends.sqlite3。在settings.py中可以查看DATABASES = { 'default': { 'ENGINE': 'django.db....
2018-12-23 15:20:36
273
原创 python自动化运维学习第十九天--views的返回和admin
views视图返回当用户发送请求后,urls根据请求路由到views指定方法去处理后会返回,再进行下一步的操作。views有三种返回方式render、HttpResponse和redirect。它们分别代表什么意思呢,先看如下view.py的样例from django.shortcuts import render,HttpResponse,redirectfrom demo impor...
2018-12-22 16:25:16
254
原创 python自动化运维学习第十八天--template
templatetemplate就是模板,在html代码中嵌入逻辑控制代码。template支持的语法变量语法格式: {{var_name}}----------------------------------Template和Context对象 >>> python manange.py shell (进入该django项目的环境)&a
2018-12-20 23:19:01
272
原创 python自动化运维学习第十七天--urls
urlsurls.py文件是对请求的路由,通过访问不同路径进行不同的处理。如前几篇文章中写的urls.py文件from django.conf.urls import urlfrom django.contrib import adminfrom demo import views #导入demo包下的views模块,后来添加的urlpatterns = [ url(...
2018-12-19 23:37:53
309
原创 python自动化运维学习第十六天--models基本使用和基本命令
modules基本使用models是数据库的api,可以对数据库进行增删改查等操作。学习阶段使用的数据库是sqllite,使用其他数据库可以修改settings.py文件中的配置项。使用数据库前需要在数据库中提前创建一个库,表可以通过models创建。使用models.py文件创建一个表from django.db import modelsclass UserInfo(modules...
2018-12-19 00:05:00
578
原创 python自动化运维学习第十五天--Django流程和urls基础
MVC模式和MTV模式Django的MTV模式本质是各组件之间为了保持松耦合关系,Django的MTV分别代表:Model(模型):负责业务对象与数据库的对象(ORM)ORM提供了sql的api,使用这个api就可以对数据库进行增删改查等操作。Template(模版):负责如何把页面展示给用户,通过渲染展示页面View(视图):负责业务逻辑,并在适当的时候调用Model和Templat...
2018-12-16 19:48:21
231
原创 python自动化运维学习第十四天--类的属性和方法总结
类的属性类属性(公有属性)类的私有属性对象的公有属性对象的私有属性内置属性函数的局部变量全局变量#!/usr/bin/python# -*- coding:utf-8 -*-class MyClass(object): var1 = '类属性,类的公有属性 var1' __var2 = '类的私有属性 __var2' def fun1(self): ...
2018-12-06 17:44:30
151
原创 python自动化运维学习第十三天--类的内置方法和继承
内部类所谓内部类就是在类的内部定义的类,主要目的是为了更好的抽象现实世界。比如,汽车是个类,汽车的底盘、轮胎也可以抽象为类,将其定义到汽车类中则形成内部类,更好的描述汽车类,因为底盘、轮胎都是汽车的一部分。内部类的实例化方法1:直接使用外部类调用内部类object_name = outclass_name.inclass_name()采用外部类.内部类来实例化方法2:先对外部类进行实...
2018-12-05 12:34:58
210
原创 python自动化运维学习第十二天--面向对象和类
面向对象和类面向过程和面向对象编程面向过程编程:函数式编程,C语言等面向对象编程:C++,Java,Python等类和对象类和对象是面向对象中的两个重要概念类:是对事物的抽象,比如:人类、球类等对象:是类的一个实例,比如:足球、篮球等类用来描述具有相同的属性和方法的对象的集合。它定义了该集合中每个对象所共有的属性和方法。实例说明:球类可以对球的特征和行为进行抽象,然后可以...
2018-12-04 12:10:29
178
原创 python自动化运维学习第十一天--模块的使用
模块模块是python组织代码的基本方式。一个python脚本可以单独运行,也可以导入到另一个脚本中运行,当脚本被导入运行时,称其为模块(module)。所有的.py文件都可以作为一个模块导入。模块名与脚本的文件名相同。例如编写一个名为hello.py的脚本,可以在另一个脚本中用import hello语句导入这个脚本。包python的模块可以按照目录组织为包。创建一个包的步骤:...
2018-12-02 14:49:03
225
原创 python自动化运维学习第十天--内置函数
内置函数内置函数不用定义,直接可以使用abs() #计算绝对值,只能是数字max() #求序列/可迭代对象的最大值,可以有非数字min() #求序列/可迭代对象的最小值,可以有非数字len() #计算序列的长度,返回整数,字典会返回元素数divmod(x,y) #返回x,y的商和余数组成的元组pow(x,y[,z]) #求x的y次方,如果...
2018-12-01 16:30:14
203
1
原创 python自动化运维学习第九天--匿名函数
接昨天的递归调用写一个脚本,列出目录下所有的文件#!/usr/bin/python# -*- coding: utf-8 -*-import os,sysdef print_files(path): lsdir = os.listdir(path) dirs = [i for i in lsdir if os.path.isdir(os.path.join(path, ...
2018-11-29 22:26:43
136
原创 python自动化运维学习第八天--函数的多类型传值和冗余参数
函数的多类型传值和冗余参数多类型传值先上例子:def fun(x, y, z): return x + y + z t = (1, 2, 3) #定义一个元组fun(*t) #把元组作为函数的参数,不加*号会报错#执行后的结果为>>> 6t1 = (4, 5) #定义一个元组fun(6,*t1) ...
2018-11-28 22:42:38
193
原创 python自动化运维学习第七天--函数的变量和返回值
函数的变量局部变量和全局变量python中的任何变量都有特定的作用域在函数中定义的变量一般只能在该函数内部使用,这些只能在程序特定部分使用的变量就叫做局部变量在一个文件顶部定义的变量可以供文件中的任何函数调用,这些可以为整个程序所使用的变量称为全局变量例子#!/usr/bin/python# -*- coding:utf-8 -*-x = 100 #...
2018-11-27 17:37:16
156
原创 python自动化运维学习第六天--函数
函数函数是完成特定功能的一个语句组,这组语句可以作为一个单位使用。可以通过函数名在程序中不同地方多次执行(函数调用)分为预定义函数和自定义函数预定于函数可以直接使用自定义函数需要自己编写后才能使用使用函数是为了提高应用的模块性和代码重用率函数的定义和调用def 函数名([参数列表]): ##定义函数函数名([参数列表]) ##调用函数函数名必须...
2018-11-24 12:59:10
233
2
原创 python自动化运维学习第五天--文件操作
循环遍历文件使用open来打开文件打开模式:r:以读方式打开(只能打开存在的文件)w:以写方式打开(会覆盖存在的文件,文件不存在会创建)a:以追加方式打开(文件不存在会创建)r+:以读写方式打开w+:以读写方式打开(参考w)a+:以读写方式打开(参考a)rb:以二进制读模式打开(参考r)wb:以二进制写模式打开(参考w)ab:以二进制追加模式打开(参考a)rb+:以二进制...
2018-11-23 17:59:42
214
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人