Django构建自动化运维资产管理系统

简介:

   随着企业服务器数量越来越多,当到达几百台,上千台服务器之后,服务器资产管理也逐渐繁杂,每天如果通过人工统计检测会浪费大量的时间,而且有可能会有小小的疏忽而遗漏,那有没有什么开源的管理系统自动去管理呢,方法是必须滴有咯,我这里采用最简单的Django admin框架来实现。实现方法非常简单,这里做记录,希望跟大家一起交流。

  • Django开发简介:

这里采用Django MVC开发模型,简单来说MVC 是一种软件开发的方法,它把代码的定义和数据访问的方法(模型)与请求逻辑 (控制器)还有用户接口(视图)分开来。

      在django里面,我们讲采用models.py 、views.py、urls.py以及html模板文件来实现这个需求。

  • Django安装部署:

Django的安装可以参考我的上一篇文章,这里直接创建工程和app名称。

    1、创建asset工程:

1
django-admin.py  startproject Asset

    2、配置数据库:

编辑settings.py文件,修改存储方式为mysql,同时设置数据库名和密码,保存退出。如下图配置:

wKiom1QioRLTQhUAAAGv6e7aWG0822.jpg

数据库信息配置完毕后,创建名为asset的数据库,并设置密码。

同时修改setings.py,找到APPS模块处,添加我们的工程名,Asset,如下图添加方法:

wKioL1QioXOBhtfPAAF5xQ5x0qk011.jpg

    3、新建models.py文件:

采用models方式创建数据库表和字段,语句如下:

1
2
3
4
5
6
7
8
9
10
11
from   django.db   import   models
class  asset_system(models.Model):
         ip_info  = models.CharField(max_length = 50 )
         serv_info  = models.CharField(max_length = 50 )
         cpu_info  = models.CharField(max_length = 50 )
         disk_info  = models.CharField(max_length = 50 )
         mem_info  = models.CharField(max_length = 50 )
         load_info  = models.CharField(max_length = 50 )
         mark_info  = models.CharField(default = 'beijing_idc' ,max_length = 50 ,blank = True )
         def  __unicode__( self ):
                 return  self .ip_info models.py

文件创建成功后,然后返回上一级目录(manage.py目录),执行:

1
python manage.py validate 返回为:0 errors found表示检查数据编写正确。
1
然后把数据写入到数据库中,执行命令:python manage.py  syncdb

会提示输入用户名和邮箱和密码,这里的用户名和密码为访问django  admin后台需要输入的用户名和密码。

    4、修改settings.py和urls.py

分别修改如下:

把settings.py里面: 'django.contrib.admin',前面#号注释掉,同时注释掉'django.contrib.admindocs',前的#号即可,如下图:

wKioL1QioojwdxlsAAIHIIuEo8c990.jpg

把urls.py里面,将如下三行#号去掉即可:

1
2
3
from  django.contrib   import  admin
admin.autodiscover()
url(r '^admin/' ,include(admin.site.urls)),

同时添加如下行,引用settings文件配置:

1
from  django.conf  import  settings

如下图:

wKioL1QioqaioXURAAHdtDOmVdk851.jpg

  • Django Admin后台管理:

    配置完毕后,登录后台管理系统,重启python app,然后访问报错404,报错的原因是由于没有添加/admin/二级目录访问,输入/admin/进入这个页面,代表django admin 配置成功。登录后截图如下:

wKioL1Qiou3CxBFxAAGOHcKdt2g441.jpg

    默认没有我们创建的数据库表,那如何在界面显示呢?如下在工程应用目录(与models.py同级),新建一个admin.py文件,写入如下内容:

1
2
3
4
5
6
from  django.contrib  import  admin
from  asset.models  import  asset_system
class  serversadm(admin.ModelAdmin):
         list_display  = ( 'ip_info' , 'serv_info' , 'cpu_info' , 'disk_info' , 'mem_info' , 'load_info' , 'mark_info' )
         search_fields  =  ( 'ip_info' , 'cpu_info' )
admin.site.register(asset_system,serversadm)

配置完后,重启python,然后刷新一下页面,默认会出现403的提示“CSRF verification failed.Request aborted.,我们需要把settings.py里面如下行临时先注释掉(跟跨越请求有关):

1
#'django.middleware.csrf.CsrfViewMiddleware',

然后刷新,会看到新添加的一个asset_system表,如下图:

wKiom1Qio_SjbnbSAAGTq1sXvYE429.jpg

    然后往里面添加多条cpu、硬盘、内存信息即可(可以使用脚本导入数据库),为了更好的样式,我们可以安装插件django-admin-bootstrapped-1.6.8.tar.gz,安装方法很简单,解压python setup.py install即可。

然后在settings.py 里面找到:'django.contrib.admin'这一行,在这行之前加入如下语句:

1
2
'django_admin_bootstrapped.bootstrap3' ,
'django_admin_bootstrapped' ,

    就引用了bootstrap样式,界面显示效果就比较美观,好的由于时间原因,博文就到此结束,后期会增加更多功能和界面。

wKiom1QipETzVORDAAN6bfgNSus011.jpg

 附图二,后期可以把所有的功能整合到一个html页面里面,如下图所示:

wKiom1QipOWxRqYIAAExRfSSkbo247.jpg


本文转自 wgkgood 51CTO博客,原文链接:http://blog.51cto.com/wgkgood/1557846

相关文章
|
3天前
|
消息中间件 运维 Kubernetes
构建高效自动化运维体系:Ansible与Kubernetes的融合实践
【5月更文挑战第9天】随着云计算和微服务架构的普及,自动化运维成为确保系统可靠性和效率的关键。本文将深入探讨如何通过Ansible和Kubernetes的集成,构建一个强大的自动化运维体系。我们将分析Ansible的配置管理功能以及Kubernetes容器编排的优势,并展示如何将二者结合,以实现持续部署、快速扩展和高效管理现代云原生应用。文章还将涵盖实际案例,帮助读者理解在真实环境下如何利用这些工具优化运维流程。
|
3天前
|
运维 Kubernetes Cloud Native
构建高效云原生运维体系:Kubernetes最佳实践
【5月更文挑战第9天】 在动态和快速演变的云计算环境中,高效的运维是确保应用稳定性与性能的关键。本文将深入探讨在Kubernetes环境下,如何通过一系列最佳实践来构建一个高效且响应灵敏的云原生运维体系。文章不仅涵盖了容器化技术的选择与优化、自动化部署、持续集成/持续交付(CI/CD)流程的整合,还讨论了监控、日志管理以及灾难恢复策略的重要性。这些实践旨在帮助运维团队有效应对微服务架构下的复杂性,确保系统可靠性及业务的连续性。
|
1天前
|
数据采集 编解码
LabVIEW开发教学实验室自动化INL和DNL测试系统
LabVIEW开发教学实验室自动化INL和DNL测试系统
|
3天前
|
Linux Shell C语言
Linux:自动化构建 - make
Linux:自动化构建 - make
11 1
|
4天前
|
前端开发 UED Python
Wagtail-基于Python Django的内容管理系统CMS实现公网访问
Wagtail-基于Python Django的内容管理系统CMS实现公网访问
|
4天前
|
Java Maven
Maven 自动化构建
Maven自动化构建确保依赖稳定性:当bus-core-api项目构建完成后,app-web-ui和app-desktop-ui项目自动构建。这两个项目依赖bus-core-api的1.0-SNAPSHOT版本。通过Maven,团队能高效管理项目间的依赖关系,实现无缝集成和更新。
|
4天前
|
数据库 Docker 容器
【Docker 专栏】使用 Dockerfile 自动化构建 Docker 镜像
【5月更文挑战第8天】Dockerfile是构建Docker镜像的关键,它包含一系列指令,用于描述应用运行环境及所需软件包。通过自动化构建,能提高效率、保证可重复性并提升灵活性。确定基础镜像、安装依赖、设置环境后,执行Dockerfile生成镜像,用于应用程序部署。虽然需要熟悉Docker技术和应用细节,但其带来的益处使其成为现代软件开发和部署的重要工具。
【Docker 专栏】使用 Dockerfile 自动化构建 Docker 镜像
|
4天前
|
运维 Kubernetes 监控
构建高效自动化运维体系:基于Ansible的策略与实践
【5月更文挑战第8天】 在当今IT基础设施管理领域,自动化不再是一个选择,而是必要的步骤。随着复杂性的增加和变更的频繁性,自动化工具如Ansible提供了一种高效、可靠的解决方案来简化配置管理和多节点部署。本文将探讨如何利用Ansible构建一个高效的自动化运维体系,涵盖其核心原理、策略设计以及在实际环境中的应用。我们将分析Ansible与其他自动化工具的不同之处,并提供一些最佳实践,以帮助运维专家提升他们的工作效率和系统稳定性。
|
5天前
|
运维 负载均衡 持续交付
构建高效自动化运维体系:Ansible与Docker的协同实践
【5月更文挑战第7天】 在当今快速迭代的软件开发环境中,自动化运维成为确保部署效率和一致性的关键。本文将探讨如何通过结合Ansible和Docker技术,构建一个高效的自动化运维体系,旨在提升运维效率,减少人为错误,并实现持续集成与持续部署(CI/CD)的流程自动化。文章详细阐述了Ansible的配置管理机制、Docker容器化的优势,以及二者在实际运维场景中的结合应用,为读者提供一套可行的自动化运维解决方案。
|
6天前
|
运维 Kubernetes Devops
构建高效自动化运维体系:DevOps与容器化技术融合实践
【5月更文挑战第6天】随着企业IT架构的复杂化以及快速迭代的市场需求,传统的运维模式已难以满足高效率和高质量的交付标准。本文将探讨如何通过结合DevOps理念和容器化技术来构建一个高效的自动化运维体系,旨在实现持续集成、持续部署和自动化管理,提升系统的可靠性、可维护性和敏捷性。