一种部署OpenStack的实现方法及系统与流程

文档序号:16627201发布日期:2019-01-16 06:13阅读:377来源:国知局
一种部署OpenStack的实现方法及系统与流程

本发明涉及计算机技术领域,尤指一种部署openstack的实现方法及系统。



背景技术:

openstack是一个由nasa(nationalaeronauticsandspaceadministration,美国国家航空航天局)和rackspace合作研发并发起的,以apache许可证授权的自由软件和开放源代码项目,openstack是一个开源的云计算管理平台项目,由几个主要的组件组合起来完成具体工作。openstack支持几乎所有类型的云环境,项目目标是提供实施简单、可大规模扩展、丰富、标准统一的云计算管理平台。openstack通过各种互补的服务提供了基础设施即服务(iaas)的解决方案,每个服务提供api(applicationprogramminginterface,应用程序编程接口)以进行集成。

openstack包含两个主要模块:nova和swift,前者是nasa开发的虚拟服务器部署和业务计算模块;后者是rackspace开发的分布式云存储模块,两者可以一起用,也可以分开单独使用。

传统的openstack部署和运维方式偏命令行化,部署openstack和后期运维查看日志等都只能使用命令行的方式操作,这样就对一些不太熟悉openstack的用户不很友好。



技术实现要素:

为了解决上述技术问题,本发明提供了一种部署openstack的实现方法及系统,能够通过web(worldwideweb,全球广域网)页面部署openstack。

为了达到本发明目的,本发明实施例提供了一种部署openstack的实现方法,基于djangoweb框架,包括:

通过web页面发送ansible部署命令至服务器以部署openstack组件;

获取所述服务器执行所述ansible部署命令得到的输出信息;

缓存所述输出信息到redis数据库,并通过所述web页面展示所述输出信息。

可选地,所述通过web页面发送ansible部署命令至服务器以部署openstack组件,包括:

通过web页面获取所述ansible部署命令,将所述ansible部署命令以参数的方式通过ansible的playbook_executor接口和run接口传递至所述服务器。

可选地,所述获取所述服务器执行所述ansible部署命令得到的输出信息,包括:

调用ansible.utils.display.display接口,获取所述输出信息。

可选地,所述通过所述web页面展示所述输出信息,包括:

通过django的管道将所述输出信息同步至所述web页面。

可选地,所述方法还包括:

基于paramiko封装,通过所述web页面对部署所述openstack组件的服务器和所述openstack组件的服务进行监控。

本发明实施例还提供一种部署openstack的实现系统,基于djangoweb框架,包括:

发送模块,用于通过web页面发送ansible部署命令至服务器以部署openstack组件;

获取模块,用于获取所述服务器执行所述ansible部署命令得到的输出信息;

缓存输出模块,用于缓存所述输出信息到redis数据库,并通过所述web页面展示所述输出信息。

可选地,所述发送模块,用于通过web页面获取所述ansible部署命令,将所述ansible部署命令以参数的方式通过ansible的playbook_executor接口和run接口传递至所述服务器。

可选地,所述获取模块,用于调用ansible.utils.display.display接口,获取所述输出信息。

可选地,所述输出模块,用于通过django的管道将所述输出信息同步至所述web页面。

可选地,所述系统还包括:

监控模块,用于基于paramiko封装,通过所述web页面对部署所述openstack组件的服务器和所述openstack组件的服务进行监控。

与现有技术相比,本发明实施例基于djangoweb框架,包括:通过web页面发送ansible部署命令至服务器以部署openstack组件;获取所述服务器执行所述ansible部署命令得到的输出信息;缓存所述输出信息到redis数据库,并通过所述web页面展示所述输出信息。通过本发明实施例,为openstack的部署提供了便利,针对测试以及运维人员去搭建一套openstack集群,只需要在web页面前端输入命令就可以在web页面看到部署信息,提高产品的易用性和便利性。

本发明的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点可通过在说明书、权利要求书以及附图中所特别指出的结构来实现和获得。

附图说明

附图用来提供对本发明技术方案的进一步理解,并且构成说明书的一部分,与本申请的实施例一起用于解释本发明的技术方案,并不构成对本发明技术方案的限制。

图1为本发明实施例的部署openstack的实现方法的流程图;

图2为本发明实施例的部署openstack的实现系统的组成示意图。

具体实施方式

为使本发明的目的、技术方案和优点更加清楚明白,下文中将结合附图对本发明的实施例进行详细说明。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互任意组合。

在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行。并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。

django是一个开放源代码的web应用框架,由python语言编写而成。采用了mvc的框架模式,即模型m,视图v和控制器c。它最初是被开发来用于管理劳伦斯出版集团旗下的一些以新闻内容为主的网站的,即是cms(contentmanagementsystem,内容管理系统)软件。并于2005年7月在bsd(berkeleysoftwaredistribution,伯克利软件套件)许可证下发布。

本发明实施例中,基于django开发openstack部署和运维,利用django整合了orm(orientedrelationalmapping,对象映射关系)的良好特性,使用django的管道技术,结合redis缓存数据库和本地mysql数据库,安全方面使用基于sshv2协议的paramiko开发工具,这是基于python语言开发的用于ssh登录的第三方工具包,方便对openstack中所有的机器进行免密配置和免密登录。openstack部署方面,使用基于kolla-ansible和docker技术的部署方式,kolla-ansible,是基于一种使用python开发ansible运维编排工具,能够实现任务分发,角色指定等,能够很方便的将openstack不同功能的组件部署到相应的机器上。docker是一个开源的应用容器引擎,基于go语言,并遵从apache2.0协议开源。docker可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的linux机器上,也可以实现虚拟化。kolla就是将openstack所有组件以docker镜像的方式打包,kolla-ansible对镜像进行拉取并安装。

django的特点是app解耦,可以灵活的创建app并实现热插拔。在本发明实施例中,结合kolla-ansible的部署方式,实现基于django的openstack页面部署。

如图1所示,本发明实施例的部署openstack的实现方法,基于djangoweb框架,包括:

步骤101,通过web页面发送ansible部署命令至服务器以部署openstack组件。

本步骤中,实现在页面前端发送ansible部署命令。

在一实施例中,通过web页面获取所述ansible部署命令,将所述ansible部署命令以参数的方式通过ansible的playbook_executor接口和run接口传递至所述服务器。

这里对ansible源码进行了改装引用,使用了ansible的playbook_executor接口和run接口,从前端获取指令,将指令以参数的形式传递给上述两个接口就可以实现前端执行playbook(ansible的任务配置文件)。

步骤102,获取所述服务器执行所述ansible部署命令得到的输出信息。

本步骤中,实现将输出信息重定向到前端页面。

在一实施例中,调用ansible.utils.display.display接口,获取所述输出信息。

这里也是对ansible的源码进行了重新封装使用,调用ansible.utils.display.display()接口,获取ansible执行的输出信息。

步骤103,缓存所述输出信息到redis数据库,并通过所述web页面展示所述输出信息。

本步骤中,实现缓存页面输出信息及展示输出。

在一实施例中,通过django的管道(channels)将所述输出信息同步至所述web页面。

这里使用django的channels技术,channels是基于websocket通信技术,这样就可以将输出信息同步动态输出到前端页面。

另外,本发明实施例还可以查看docker镜像运行信息,是否是正常运行状态。

在一实施例中,所述方法还包括:

基于paramiko封装,通过所述web页面对部署所述openstack组件的服务器和所述openstack组件的服务进行监控。

部署完成后,可以使用基于paramiko封装的方式,对集群中服务器以及服务器中openstack的服务进行监控,可以采用定期发送心跳包的方式进行监控。

通过本发明实施例,为openstack的部署提供了便利,针对测试以及运维人员去搭建一套openstack集群,只需要在web页面前端输入命令就可以在web页面看到部署信息,提高产品的易用性和便利性。

如图2所示,本发明实施例的部署openstack的实现系统,基于djangoweb框架,包括:

发送模块21,用于通过web页面发送ansible部署命令至服务器以部署openstack组件;

获取模块22,用于获取所述服务器执行所述ansible部署命令得到的输出信息;

缓存输出模块23,用于缓存所述输出信息到redis数据库,并通过所述web页面展示所述输出信息。

通过本发明实施例,为openstack的部署提供了便利,针对测试以及运维人员去搭建一套openstack集群,只需要在web页面前端输入命令就可以在web页面看到部署信息,提高产品的易用性和便利性。

在一实施例中,所述发送模块21,用于通过web页面获取所述ansible部署命令,将所述ansible部署命令以参数的方式通过ansible的playbook_executor接口和run接口传递至所述服务器。

在一实施例中,所述获取模块22,用于调用ansible.utils.display.display接口,获取所述输出信息。

在一实施例中,所述缓存输出模块23,用于通过django的管道将所述输出信息同步至所述web页面。

在一实施例中,所述系统还包括:

监控模块,用于基于paramiko封装,通过所述web页面对部署所述openstack组件的服务器和所述openstack组件的服务进行监控。

本发明实施例中,可以将django应用在openstack的部署和运维上,可以很方便的从web界面查看openstack系统的部署情况和运行情况。

本发明实施例还提出一种部署openstack的实现设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现上述部署openstack的实现方法。

本发明实施例还提出一种计算机可读存储介质,存储有计算机可执行指令,所述计算机可执行指令被处理器执行时实现上述部署openstack的实现方法。

综上所述,本发明实施例针对ansible的重新封装和对djangochannels技术与redis结合方式的创新,实现了输出信息动态刷新和页面缓存以及动态监控openstack部署状态和运行状态信息。

本领域普通技术人员可以理解,上文中所公开方法中的全部或某些步骤、系统、装置中的功能模块/单元可以被实施为软件、固件、硬件及其适当的组合。在硬件实施方式中,在以上描述中提及的功能模块/单元之间的划分不一定对应于物理组件的划分;例如,一个物理组件可以具有多个功能,或者一个功能或步骤可以由若干物理组件合作执行。某些组件或所有组件可以被实施为由处理器,如数字信号处理器或微处理器执行的软件,或者被实施为硬件,或者被实施为集成电路,如专用集成电路。这样的软件可以分布在计算机可读介质上,计算机可读介质可以包括计算机存储介质(或非暂时性介质)和通信介质(或暂时性介质)。如本领域普通技术人员公知的,术语计算机存储介质包括在用于存储信息(诸如计算机可读指令、数据结构、程序模块或其他数据)的任何方法或技术中实施的易失性和非易失性、可移除和不可移除介质。计算机存储介质包括但不限于ram、rom、eeprom、闪存或其他存储器技术、cd-rom、数字多功能盘(dvd)或其他光盘存储、磁盒、磁带、磁盘存储或其他磁存储装置、或者可以用于存储期望的信息并且可以被计算机访问的任何其他的介质。此外,本领域普通技术人员公知的是,通信介质通常包含计算机可读指令、数据结构、程序模块或者诸如载波或其他传输机制之类的调制数据信号中的其他数据,并且可包括任何信息递送介质。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1