|
|
|
|
移动端

2.5.4 Django的配置(3)

《运维前线:一线运维专家的运维方法、技巧与实践》第2章利用Facter和Django快速构建CMDB,本章将会详细讲解,如何利用开源软件Facter和Django快速构建一个小型的CMDB系统。界面与功能不算复杂,这也是它轻量的体现,本章更多的是提供一种思路,以达到抛砖引玉的作用,仅供大家参考。本节为大家介绍Django的配置。

作者:云技术社区来源:机械工业出版社|2017-04-23 12:37

技术沙龙 | 6月30日与多位专家探讨技术高速发展下如何应对运维新挑战!


2.5.4 Django的配置(3)

在命令行登录数据库,并查看数据库信息,就能看到如图2-9所示的内容,说明数据库已创建成功。

6.视图设置

上文中我们已经成功设置了Django的M(Models,模型),下面我们来设置V(View,视图),如下代码是一个登出页面和一个home页面的View:

  1. # encoding:utf8  
  2. # Create your views here.  
  3. # 导入需要使用的模块  
  4. from django.template import RequestContext  
  5. from django.shortcuts import render_to_response  
  6. from django.contrib.auth.decorators import login_required  
  7. from django.contrib.auth.views import logout_then_login  
  8. # 判断用户是否登录  
  9. @login_required  
  10. # 登出时的调用  
  11. def logout_view(request):  
  12.     return logout_then_login(request)  
  13. # 判断用户是否登录  
  14. @login_required  
  15. # 登录后调用home页所展示的页面,template为home.html  
  16. def home(request):  
  17.     return render_to_response('home.html', locals(), context_instance=RequestCo 
  18.     ntext(request)) 

URL设置(这里直接使用了Django自带的login函数,所以不需要自己写login view):

  1. # 设置字符编码  
  2. # encoding:utf8  
  3. # 从urls中导入patterns、include、url模块  
  4. from django.conf.urls import patterns, include, url  
  5. # 从contrib中导入admin模块  
  6. from django.contrib import admin  
  7. # 从http中导入HttpResponseRedirect模块  
  8. from django.http import HttpResponseRedirect  
  9.  
  10. # 设置前端访问的URL对应的后端视图  
  11. urlpatterns = patterns('',  
  12.                      # url什么参数都不带时,直接重定向到login  
  13.                        url(r'^$', lambda x: HttpResponseRedirect('/login/')),  
  14.                      # 登出对应的视图为cmdb.views.logout_view  
  15.                          url(r'^logout/$','cmdb.views.logout_view', name='cmdb_logout'),  
  16.                      # 登录对应的view为django.contrib.auth.views.login,对应的  
  17.                            template为login.html  
  18.                        url(r'^login/$','django.contrib.auth.views.login', {'template_  
  19.                        name': 'login.html'},  
  20.                            name='cmdb_login'),  
  21.                      # home页面,对应的view为cmdb.views.home  
  22.                        url(r'^home/$', 'cmdb.views.home', name='home'),  

通过如上定义,现在就启动Django服务,登录后即可看到如图2-10所示的界面。代码已托管至Github网站https://github.com/oysterclub/open-cmdb,有兴趣的朋友可以去复制下来查看、修改或使用。下面就来展示一下登录界面的效果图(注,前端框架为bootstrap)。

利用python manage.py syncdb命令输入的用户名和密码登录。登录后的页面为home空白页(见图2-11),具体如下(home空白页主要是为了以后做导向流页面或数据图表展示页面,这里先留空):

7.使用Python程序获取Facts数据

通过如上定义,我们已经完成了视图、数据表结构的定义。而数据的来源既可以通过添加,也可以通过Facter工具来获取。下面我们就来讲讲如何自动获取Agent机器的系统数据(如果想要充分了解Facter工具,可以参考阅读《Puppet实战》的第9章“Facter介绍”)。Facter工具会在Puppet Agent与Puppet Master通信的时候把获取到的Agent主机系统信息和自己定义的Facts信息汇报给Puppet Master,生成一个hostname.yaml格式的文件,文件存放在/var/lib/puppet/yaml/facts目录下,文件的格式如图2-12所示,其中的values数据:domain、ipaddress、macaddress等正是构建CMDB所需要的系统数据,因此我们可以通过一个Python程序来处理这些数据,并录入MySQL中,最终通过Django来实现前端展示。因此一个最简单的CMDB系统就构建完成了。


喜欢的朋友可以添加我们的微信账号:

51CTO读书频道二维码


51CTO读书频道活动讨论群:342347198

【责任编辑:book TEL:(010)68476606】

回书目   上一节   下一节
点赞 0
分享:
大家都在看
猜你喜欢

读 书 +更多

精通JBuilder 2006

JBuilder 2006是一款强大的Java企业级开发平台,其集成了几乎所有的Java技术,涵盖了软件开发生命周期的各个过程。本书深入浅出地介绍了JBu...

订阅51CTO邮刊

点击这里查看样刊

订阅51CTO邮刊