设为首页 收藏本站
查看: 5570|回复: 0

[经验分享] Django构建自动化运维资产管理系统

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2014-9-25 13:28:04 | 显示全部楼层 |阅读模式
随着企业服务器数量越来越多,当到达几百台,上千台服务器之后,服务器资产管理也逐渐繁杂,每天如果通过人工统计检测会浪费大量的时间,而且有可能会有小小的疏忽而遗漏,那有没有什么开源的管理系统自动去管理呢,方法是必须滴有咯,我这里采用最简单的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


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-25404-1-1.html 上篇帖子: rsync安装教程 下篇帖子: 使用Linux Screen 管理远程会话,防止连接断开导致的程序中断 管理系统
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表