《基于python的自动化运维系统设计与实现.doc》由会员分享,可在线阅读,更多相关《基于python的自动化运维系统设计与实现.doc(39页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、摘要自动化运维系统能够为运维人员提供对大规模服务器群集进行可视化运维操作的平台,通过自动化运维系统运维人员可以更直观清晰的了解和记录主机信息,并进行管理。本文设计并实现了一个自动化运维系统。系统设计开发使用VIM开发工具,Python开发语言,MySQL数据库,使用了集中化运维管理工具SaltStack,基于web.py的架构完成,该系统设计实现的功能包括:账户管理,主机管理,已加入SaltStack的主机信息采集,Master监控,本系统同时提供对于远程主机的命令管理。关键词: Python; SaltStack; 自动化运维Abstract The automated operation
2、and maintenance system can provide a platform for the operation and maintenance personnel to visualize the operation and maintenance of large-scale server clusters. Through the automatic operation and maintenance system, the operation and maintenance personnel can understand and record the host info
3、rmation more intuitively and clearly, and manage it.This paper designs and implements an automated operation and maintenance system. The system design and development uses VIM development tools, Python development language, MySQL database, and uses the centralized operation and maintenance managemen
4、t tool SaltStack, which is completed based on the web.py architecture. The functions designed and implemented by the system include: account management, host management, and has joined SaltStack The host information collection, Master monitoring, the system also provides command management for the r
5、emote host.Key words: Python; Saltstack; Automated operations目 录第一章 绪论11.1 研究意义与目的11.2 研究背景和现状11.3系统内容综述与论文结构21.3.1本文主要内容21.3.2本文主要结构2第二章 系统分析与设计42.1 需求分析42.2系统总体设计42.2.1开发结构设计42.2.2系统架构设计42.2.3总体功能架构52.3 SaltStack综述62.3.1简介62.3.2 SaltStack基本原理62.3.3 SaltStack的部署架构72.3.4为何选择 SaltStack92.4开发技术综述92.4.
6、1 Python编程语言92.4.2 web.py框架102.4.3 Mako模板102.4.4 psutil库102.4.5 Dmidecode工具102.4.6 MySQL数据库102.5系统所需环境及数据库设计102.5.1 系统运行时所需环境112.5.2环境配置112.5.3数据库表分析112.5.4概念模型设计122.5.5数据库表结构设计12第三章 自动化运维系统的详细设计与实现153.1用户模块的设计与实现153.1.1登陆注册流程153.1.2用户模块的介绍与实现163.2模块的设计与实现173.2.1主页功能流程173.2.2主页模块的介绍与实现183.3主机登记模块的设计
7、与实现183.3.1主机登记功能流程183.3.2主机登记模块的设计与实现193.4 SaltStack模块的设计与实现193.4.1 SaltStack模块功能流程193.4.2 SaltStack模块的设计与实现21第四章 系统测试224.1 运行环境224.2 测试过程22第五章 总结与展望285.1 总结285.2 未来展望28参 考 文 献29附 录30致 谢33广东东软学院本科生毕业设计(论文)第一章 绪论1.1 研究意义与目的随着互联网时代的飞速发展,特别是在发展中飞速融入了人们的生活中。在这其中产生的信息也是越来越大,越来越多,云计算与大数据也就这么随着发展,而在发展中跟上来的
8、挑战就是所需要管理的主机集群也愈发庞大,而作为在这后面提供支持的运维人员所需面临的就是如此多的主机,而这有许多工作都是繁琐,重复的,而所需要处理的如此多且重复,那么就很容易出现错误。该自动化运维系统基于WEB开发,用户可以通过在该系统中看到主节点的资源信息,以及将所有的机器进行一个登记,以及对各个主机的信息可以进行查看,并且在WEB中通过SaltStack管理工具可以通过批量的命令发送来进行对旗下主机的一些重复性操作进行批量处理。因此该选题还是有必要的,因为这样就可以通过一个可视化的WEB界面来直观的让使用人员了解所有的主机情况,并且让一些重复繁琐的操作一次就能实现,减少出错的概率,因此这对于
9、运维人员来说是具有实用性的【1】。通过使用WEB来开发该自动化运维平台,该课题主要是有以下的几点目的:1、在大学的时候所学的一些相关专业课程的基础上,将所学的知识与实践结合使用,来进一步巩固相关专业的知识以及实操的能力,从而达到对学习过的知识了解的更清晰,运用更熟练,这是对于已学习过的知识进行更深的挖掘;2、随着互联网时代的飞速发展,为此提供支持的主机数量也越来越庞大,完成该选题是为了给使用人员提供一个自动化运维平台,能够减低运维人员的一些重复繁琐的工作量,以及更好的对主机集群进行更好的管理;3、自动化运维领域目前较为热门,这能够帮助我们掌握Python的一部分知识,以及对于MySQL,Sal
10、tStack运维管理工具等进行学习,在之后的职业选择中有更多的选择,在进行相关的运维工作能有更好的帮助。通过该选题的设计与实现,可以有效的增强我们对于新知识的学习与使用、对相关资料的查询以及使用,以及找出问题分析并解决、综合实践使用相关知识等能力,这有利于我们的学习能力、专业技能能力以及逻辑能力的进一步加强。1.2 研究背景和现状在互联网用户及内容的规模还不如现在的过去,为这些行为提供服务的主机数量并不多,因此运维人员通过逐台的登陆主机进行维护或者进行部署服务等都是游刃有余。而随着互联网的逐渐发展,伴随着的就是信息数据量的逐渐增多以及需要上线的项目也变得越来越多,这时候就需要逐渐的扩大主机群的
11、规模,在面对逐渐扩大的主机集群时,运维人员则通过shell脚本以及Python来对这些主机进行维护等处理。而到了现在,又伴随这云计算大数据等的到来,以及人工智能等行业的火热,运维人员所需要面临的挑战就大了,因此就有了Ansible、Chef、Puppet、Fabric、SaltStack等的自动化运维工具来为人们提高效率。为了完成该自动化运维平台,通过学习、研究、分析,本自动化运维系统主要功能有用户可以通过在该系统中看到主节点的资源信息,将所有的机器进行一个登记,以及对各个主机的信息可以进行查看,并且我们可以使用SaltStack管理工具通过批量的命令发送来对旗下主机的一些重复性操作进行批量处
12、理,这有助于提高人们的工作效率,让一些重复、繁琐的工作减少出现错误。该自动化运维平台使用Python语言进行编码与实现,后台则采用web.py的框架,存储方面则使用MySQL数据库来为数据提供存储以及通过SaltStack运维工具来实现功能,通过这些相关工具和技术的结果使用来完成该系统。1.3系统内容综述与论文结构1.3.1本文主要内容本系统是一个基于Python开发的WEB项目,是一个自动化运维的WEB应用。前端使用Mako进行开发,后台使用web.py进行开发,数据库使用MySQL,并结合了SaltStack自动化运维工具。可以通过本系统来进行对主节点的资源信息展示的,以及远程命令、查询子
13、节点的信息、批量部署等等功能。1.3.2本文主要结构本论文的主要结构介绍如下:第 1 章:绪论,主要是论述自动化运维平台研究的意义与目的、课题的背景与现状以及对本论文的主要内容进行简单的概述第 2 章:系统分析与设计,主要是对该系统的功能模块来进行需求的分析,然后设计出一套符合本系统的架构模式和结构模式,介绍集中化运维工具SaltStack介绍以及开发本系统时使用到的一些技术还有系统所需要的环境以及数据库设计。第 3 章:自动化运维系统的详细设计与实现,首要是详细介绍本系统的各个功能模块 的设计思路以及核心代码的实现,主要有功能实现、关键技术和关键的业务逻辑等第 4 章:系统测试,主要写了对于
14、整个系统进行测试第 5章: 总结与展望,对于本论文进行归纳总结以及提出展望。第二章 系统分析与设计2.1 需求分析用户模块:用户登陆、注册、修改信息、退出。主页模块:展示主节点当前各类信息。显示当前时间。主机登记模块:登记所需记录的主机详细信息。修改所需记录的主机详细信息。删除所需记录的主机详细信息。SaltStack模块:显示当前加入SaltStack的子节点信息。通过SaltStack命令执行功能实现远程命令、批量部署等功能。2.2系统总体设计2.2.1开发结构设计设计、创建该WEB的模式使用了MVC模式,该模式的是指Model View Controller即模型-视图-控制器。关于该模
15、式作用如下:1. Model即模型,它表示的即是核心的对于数据的操作或者对于数据库的操作;2. Controller即控制器,它负责的根据收到的请求而调用所需要的Model来完成请求;3. View即视图,它则与用户进行交互并根据所接受到的数据来呈现到用户面前。2.2.2系统架构设计本自动化运维系统的架构由客户端和服务端组成,客户端面对的是使用该自动化运维平台并进行交互的用户,所有功能的实现则由客户端、服务端、数据库以及SaltStack之间的交互完成。如下图2-1所示,为该自动化运维系统的总体架构:图2-1 系统架构图2.2.3总体功能架构根据 2.1 的功能需求分析,如图2-2所示,此为该
16、自动化运维系统的功能模块:图2-2 系统功能模图2.3 SaltStack综述2.3.1简介SaltStack是一个在2011年建立的开源项目,这是一个功能强大,能适应与大规模的进行批量管理服务器的C/S自动化集中管理工具,该工具是基于Python语言实现,实现它的底层网络架构,进行通信的则是轻量级消息队列ZeroMQ。通过对于SaltStack的部署以及使用,我们能够对大量服务器做到任务执行以及配置管理以及基于这两大功能延伸的另外的一些功能如采集服务器数据等等。2.3.2 SaltStack基本原理SaltStack所使用的模式是C/S模式,即客户端/服务端的模式,其中客户端是指SaltSt
17、ack中的minion子节点,服务端指Saltstack中的Master主节点,主节点Master与子节点minion之间的通信是利用的轻量级消息队列ZeroMQ。当主节点和子节点的SaltStack对应组件下载安装完后,配置完对应配置和hosts启动服务后,子节点minion会连接主节点Master将自己的pub key发送过去,请求它为其签发证书,而这时的主节点Master则通过salt-key 命令可以查看并且接受子节点minion的key,为它签发证书,而等到证书签发完毕后,就代表这主节点Master和子节点minion之间已经互相信任了。这时候我们就可以通过主节点Master端发送任
18、何指令让匹配的子节点minion执行,子节点minion执行完命令后则返回结果。在这之间完成任务是通过4505以及4506两个端口实现的,其中4505端口对于的是轻量级消息队列ZeroMQ的PUB system,它的功能是用来发送消息的,而4506端口则是REP system,它的功能则是用来接受消息的。SaltStack的主节点与子节点之间的的消息是通过轻量级消息队列ZeroMQ的发布-订阅模式来进行传递的,它们之间的连接方式有tcp以及icp两种。SaltStack的命令通过salt.client.LocalClient.cmd_cli发布到主节点Master,并以此来获取一个jobid,
19、而命令执行得到的结果则是根据此jobid来获取的。主节点Master 接收到该命令后,则通过ZeroMQ在发送到子节点minion上,并通过接受到的消息得到需要执行的命令在通过minion._handle_aes处理,其会发起一个本地线程来执行命令。在处理完命令后,调用minion._return_pub方法,将执行结果返回给主节点Master。主节点Master接受到了子节点minion返回的结果后,在通过使用Master._handle_aes方法,将结果写的文件中。在最后获取到结果并最终输出到终端的则是salt.client.LocalClient.cmd_cli通过轮询获取Job执行结
20、果【2】。在SaltStack中的还包含了State、Grain、Pillar、Highstate、Modules等模块。其中,State模块是通过在服务器Master中的/srv/salt路径下编写.sls函数关于配置管理等的一些指令,在通过命令调用该函数实现对与目标服务器的配置管理等。Grain是在SaltStack中的以key value形式存储的一种静态的数据库,它存储的是由客户端minion要返回给服务端的数据,这部分数据是静态的,包含一些如操作系统类型、版本或者一些硬件属性的不经常改变的数据。Pillar是在SaltStack中的以key value形式存储的一种动态的数据库这里面
21、存储的数据是比较私密的,它存储的是客户端minion需要向服务器索要的数据,这些数据是只有指定的某个minion客户端才能看到的关于自身的Pillar数据,而别的是无法看见的。Highstate的功能与State模块功能类似,但是却是能通过top.sls来对多个服务器来进行更为仔细的管理。Modules模块则是包含的SaltStack的指令,包括命令行cmd模块指令、cp模块指令、service模块指令等等,通过这些指令来完成SaltStack的功能【3】。2.3.3 SaltStack的部署架构在SsltStack中,它包含的角色有三种,其中最重要的两个角色分别是处于中心控制系统的Maste
22、r角色,以及被管理的客户端minion,还有一个角色是syndic,它的作用类似与代理,即只负责分发任务下去给客户端minion执行。而基于这三种角色,SaltStack则有四种部署的架构【4】:第一种:Master服务器与所有客户端minion直连,minion通过消息队列直接接受来自于Master服务器分发下来的命令,并执行命令或者完成配置管理,具体结构图如图2-3所示:图2-3单Master直连第二种:Master服务器通过syndic节点来将命令发布给旗下的客户端minion,在该架构中,Master服务器通过syndic来对客户端进行管理,通过这种结构,则可以进行更加多级的扩展以此来
23、满足更大规模的使用,具体结构图如图2-4所示:图2-4 使用代理连接第三种:多台Master服务器与所有客户端minion直连,minion通过消息队列直接接受来自于Master服务器分发下来的命令,并执行命令或者完成配置管理,而使用这种结构的时候,客户端minion需要在hosts以及salt的配置文件中配置多个服务端的节点以及多个服务器Master之间的配置、状态、密钥文件等需要相同,以此来提高系统的高可用,解决单点问题,具体结构图如图2-5所示:图2-5 多Master连接第四种:单minion客户端的无Master服务器模式,即单机版,在该种架构当中,客户端不受任何的服务器Master
24、控制使用,只要在本地运行,一些相关的功能就能自己完成,具体结构图如图2-6所示:图2-6 单机版在本次系统中,我们采用的是第一种Master服务器对所有客户端minion进行管理的架构,在进行这小型的架构时即可满足需求。2.3.4为何选择 SaltStack 目前来说可以选择的自动化运维工具有很多,但是目前而言较为热门的还是Puppet、Chef、Ansible和SaltStack、Fabric这几个工具。其中Ansible、SaltStack和Fabric这三者都是基于Python来进行开发的,而Puppet、Chef则是基于Ruby来进行开发的。和Saltstack相比,Ansible和其
25、之间功能是非常相似的,不过SaltStack是基于轻量级消息队列ZeroMQ来进行通信的,而Ansible则不一样,它的底层主要还是通过SSH来进行通信,而ZMQ相比,那Ansible它的通信速度则就慢了许多了,而当如果遇到更大规模的集群时,是不如SaltStack的,除此之外,它在对于支持的环境这方面而言,也是比SaltStack支持的操作系统的数量要更少一些,不过它相对与SaltStack,它在进行安装部署的时候,子节点是不需要在下载安装agent的,相对与SaltStack而言则是则是更简单。而Fabric相对与SaltStack而言,它要更适合与小型的环境中,而且相比较与SaltSta
26、ck而言,由于它的定位以及本身,会更加的容易出现单点故障,因此如果是在稍微大型些的环境中使用的话则显的不妥。Puppet则是相对于这些而言要更成熟,但是它的库也因此显的更为笨重,除此之外,由于它是基于Ruby开发的,而如果要使用它则需要对此语言有更深入的了解才能很好的掌握该工具,相比较而言,它的使用门槛还是有点高的。而Chef与Puppet有点类似,但也是一样由于是基于Ruby开发的,想要使用该工具的话还需要通过次语言进行更多的开发以及了解才能对其进行使用,这相对与Pupper而言,更不是一个能简单使用的工具【5】。因此基于多方面的考虑,我们在这里选择了使用SaltStack这一款工具,相比较
27、而言,它具有较为全面的功能,以及拥有快速的速度,对于各类操作系统环境的支持也要更加全面,在大型的集群环境也不会显得不堪重用,而且使用门槛不高,对于使用人员而言更为友好,而且由于是使用Python开发的,因此对于该语言是相当兼容的,而Python中的数量庞大的库对其的使用更是提供了更为有力的支持【6】。2.4开发技术综述2.4.1 Python编程语言Python是当前较为热门的,能在时下火热的领域中频频出现的如人工智能等的一种面向对象的解释型高级计算机脚本语言。它在创立之初就是为了要编写shell脚本而出现的。目前来说,在现在的许多公司对于使用Python的工程师还是很有需求的,而别是在与人工
28、智能以及运维方面等。Python这一门语言具有许多的有点,比如简洁、拥有大量的扩展库,而正是凭借这些扩展库让Python拥有了许多的功能以及对于新手而言更为友好,它的使用门槛并不会特别的高,正是这等等的众多优点也让它的在现在的众多的编程语言当中能有属于它自己的地位,当然了,Python也并不是毫无缺点的,比如相对与C、Java等语言来说它的速度就相对而言慢了不少了,而这也是它解释型语言的特性导致的,它在工作的时候是需要将代码解释给硬件能理解的语言,所以就会导致在速度方面会比较慢,以及还有另外的一些小的缺点,当然了,这些缺点对于Python而言并不会盖过它的优点【7】。2.4.2 web.py框
29、架web.py框架是一个小巧轻量但是这不影响它功能强大的一个基于Python的WEB开发框架。它是一个很精简的框架,只是提供了基础的骨架以及url路由,对于用户而言通过使用这个框架对于业务的逻辑方面来说是更容易上手使用进行开发的,不过也是因为它精简的特性所导致它所拥有的功能并没有其他框架那样强悍,如果有所需要的另外一些功能则需要使用者自己在去进行开发。2.4.3 Mako模板Mako模板是一个基于Python的一个WEB模板,它是一个借鉴了Jinjia2等多个优秀模板而编写出来的一个简单易上手、渲染速度快,并且对于Python语言的引用有着优秀的支持的一个模板,虽然它的使用难度并不算很高,但是
30、这并不影响它的对于Python中的WEB开发的优秀的支持。2.4.4 psutil库psutil库你一个可以在Python使用的且且跨平台的一个第三方库。它在对于对系统资源监控之一方面起到重要的作用,通过使用该库,我们使用Python来进行对系统管理的时候效率会的到非常大的提高,而且使用调用该库并实现功能的时候非常简单,只需要些许代码即可实现所要实现的对系统资源监控的功能,除此之外,该库所支持的操作系统数量也是不少,主流的大部分操作系统都能支持进行资源监控,psutil绝对是一个在运维人员手中的一个重要第三方库。2.4.5 Dmidecode工具Dmidecode是一个可以获取系统硬件信息的一
31、个工具,我们可以通过下载Python使用的版本来对该工具进行使用,通过该工具,我们能够对于系统的的硬件信息进行获取,这是一个对于psutil的补充使用。2.4.6 MySQL数据库MySQL是一个在现在也有非常多个人或企业使用的一个开源的、体量小、轻型的关系型数据库,别看它开源且体量不大,但是这写都不影响它的功能,功能强大,对于使用人员来说相对于其他数据库而言更容易上手,对于许多操作系统都是提供使用支持的,而且具有非常不错的稳定性的同时维护方面也并不困难,这些结合起来对于个人或者是一些中小企业来说,满足他们的数据存储需求也是完全足够的了,而即便是是在面对大型的数据存储的场景时,它也并不是不能使
32、用的,这足以看出它的功能强大【8】。2.5系统所需环境及数据库设计2.5.1 系统运行时所需环境桌面虚拟软件:VMware Workstation PRO操作系统:Centos6.5数据库:MySQL5.1.73SaltStack:SaltStack 2015.5.102.5.2环境配置1、Python的相关配置:在使用操作系统自带的Python的时候,还需要下载pip这一Python的包管理工具,以此来下载使用一些所需要使用的Python的库,在下载后,可一通过pip -V命令来查看pip的版本,并以此来查看是否安装正确。而在正确下载该管理工具后,在下载其他包后,可以是哦那个pip -sho
33、w命令来查看所下载的包是否正确。2、MySQL的相关配置:MySQL是我在该系统中采用的用来存放一些数据的关系型数据库,在本次中所使用的是5.1.73版本的数据库。在下载安装后,我们在为其创建了root用户以及密码为123456789,除此之外,为了能够不仅仅是在本机连接上数据库,通过MySQL的命令,为用户root赋予了远程登陆的权限,除此之外,为了防止数据库出现问题,将这里面的空账号删除。3、SaltStack的相关配置:SaltStack是我在该系统中所使用的一款自动化集中管理工具。在下载该工具前,我们需要修改yum源,因为如果使用默认的仓库的话,这里面是不含有该工具的,因此需要安装新的
34、yum源,并更改相应的配置。在完成前面的步骤后,由于在本系统中所采用的架构是服务端Master直接管理客户端minion,所以需要分别对应下载相应的salt-master和salt-minion版本。下载完相对于的版本,则分别在所有服务器中的hosts文件中增加相对应的ip到主机名的映射,然后在minion服务器中修改SaltStack的相应配置后,将所有服务器启动,在启动后,客户端minion会根据之前的hosts文件中的映射以及相应salt文件中的配置寻找带Master并发送证书请求其为自己进行签名,已达到互信,Master可以通过salt-key -a的命令来接受某客户端的请求,不过如果
35、需要接受很多minion的时候,则可以修改相应的auto_accept的配置,让Master自动为minion签发证书。如此一来,SaltStack也就完成了相应的配置可以进行使用了。2.5.3数据库表分析为了能够满足该自动化运维系统的功能需求,在此于数据库中建立了与用户信息模块、主机信息模块、配置信息模块、登陆信息模块等相关的表来实现。用户信息模块:该表存放了用户的id、账号、密码、昵称、手机号码、邮箱账号、用户等级、用户状态、最后登陆记录、注册时间、备注等这类信息。主机信息模块:该表存放了关于该主机的id、主机名称、如果存在域名记录域名信息、内网ip、公网ip、管理ip、服务器型号对应id
36、、CPU信息对应id、硬盘大小对应id、内存大小对应id、操作系统版本、自定义编码信息、登记时间信息、上架时间信息、更改的时间、登记者id、更改者id、任务信息、类型、机房归属信息对应id、所属机柜信息对应id、标签、编号、当前状态、备注等信息。配置信息模块:该表存放了关于该配置的id、类型、该类型的值、组标记、当前状态、备注等信息。登陆信息模块:该表存放了关于登陆顺序信息id、用户id登陆时间、登陆ip、登陆地方、使用浏览器类型、登录令牌、过期时间、会话状态等信息。2.5.4概念模型设计根据上述的需求分许,我们可以凭此得到设计思路,并按照此思路设计出各实体关系,并用E-R图表现出来。各E-R
37、图如图2-7所示:图2-7 实体关系图2.5.5数据库表结构设计当前的表结构设计如表2-1至2-4所示:表2-1用户信息users表字段名类型长度允许空值主键注释idint3用户的idusernamevarchar20账号passwordvarchar60密码nicknamevarchar20是昵称mobilevarchar15是手机号码emailvarchar50是邮箱账号levelint1用户等级statusvarchar3用户状态loginfoint5最后登陆记录regdatetimestamp0注册时间commentvarchar50是备注表2-2 主机信息hosts表字段名类型长度允
38、许空值主键注释idint3用户的idhostnamevarchar30主机名称domainvarchar30是如果存在域名记录域名信息priip1varchar15内网ippriip2varchar15是内网ippubip1varchar15是公网ippubip2varchar15是公网ipadminipvarchar15是管理ipmodelvarchar30服务器型号对应idcpuvarchar30CPU信息对应idhddvarchar20是硬盘大小对应idmemvarchar20内存大小对应idosvarchar30操作系统版本rnumvarchar20自定义编码信息storagedate
39、date0登记时间信息startdatedate0上架时间信息mdatetimestamp0更改的时间creatorint3登记者ideditorint3更改者idrolevarchar20任务信息typevarchar20类型idcvarchar20机房归属信息对应ididctagvarchar20所属机柜信息对应idstagvarchar20标签snumvarchar20编号statusvarchar10当前状态commentvarchar20是备注表2-3 配置信息options表字段名类型长度允许空值主键注释idint3该配置的idtypevarchar15类型valuevarchar
40、50该类型的值defaultvarchar3组标记statusvarchar3当前状态commentvarchar20是备注表2-4 登陆信息login_logs表字段名类型长度允许空值主键注释idint6登陆顺序信息iduidint3用户iddatatimestamp0登陆时间ipvarchar15登陆iplocationvarchar30是登陆地方agentvarchar150使用浏览器类型tokenvarchar64是登录令牌expirydatetime0是过期时间statusvarchar3会话状态第三章 自动化运维系统的详细设计与实现3.1用户模块的设计与实现3.1.1登陆注册流程如
41、果用户的登陆进网站后则进入登陆界面,在输入相关用户信息进行登陆后,会去数据库进行判断是否正确并将结果返回到前面,如果成功则登陆,失败则无法进入。在进入网站后可以通过用户管理的功能增加用户,并将该数据与数据库中数据进行比较,如果用户信息不存在则注册成功,存在则注册失败。其中登陆注册的流程图如图3-1至3-2所示。图3-1 登陆流程设计图3-2 注册流程设计3.1.2用户模块的介绍与实现用户模块中包括了登陆、注册、修改信息、删除用户、查看信息、退出组成。用户添加、删除、修改查看页面如图3-3至3-4所示。图3-3 登陆页面图3-4 用户管理页面在登陆的时候,点击登陆,则通过一个监控事件将用户信息拿
42、去数据库进行查询,然后通过该信息获取该用户的所有信息并保存开启一个session会话中在将此次会话状态设置为运行中的时候并根据此进行一个cookie的设置然后在进行用户的登陆,最终通过验证跳转进入主页。而在登陆后,则可以对用户进行注册,通过新增用户,对用户的数据进行输入后,则将该数据拿去数据库中根据用户名来进行判断是否拥有重复的用户,经过判断没有后,则将新用户的数据存入数据库中完成用户注册。进行用户注册后,还可以对用户信息进行修改、查看以及删除以及对使用状态的更改。这一系列操作则是通过修改数据库中的数据属性来进行实现。在完成了一系列操作后需要退出,则在选择登出后,通过该用户的id找到数据库中的
43、数据将数据库中关于该用户的使用状态进行更改,并将该session会话关闭,这时候即完成了退出。该部分的主要代码逻辑如附录1中所示。3.2模块的设计与实现3.2.1主页功能流程在进行登陆后,会将信息传递到主页后,在主页中将这些传递过来的信息在页面中展现出来,其中流程图如图3-5所示。图3-5 主页功能流程设计3.2.2主页模块的介绍与实现在该模块中主要是包含了相关的资源展示展示主页以及当前时间显示和导航栏。如图3-6所示。图3-6 主页在登陆后,通过urls的功能调用对象使用以此获取需要在主页中展示的相关系统资源信息,并将通过引用的包的功能来实现这一需求,在将获取到的相关系统资源信息以及登陆的用
44、户信息传递到主页中,主页在通过Mako来将得到的各类信息进行展示。而关于时间显示的实现则是通过导入时间的包来获取当前时间,并在主页中显示。该部分的主要代码逻辑如附录2中所示。3.3主机登记模块的设计与实现3.3.1主机登记功能流程在通过登陆进入网站后,可以在选项中选择主机管理进入管理界面,进入主机管理界面后,可以通过添加主机信息,进入添加界面,在将对某主机的配置以及描述等信息录入后就添加完成。添加完成后可以进行编辑查看以及删除操作。其中流程图如图3-7所示。图3-7 登记、查看、删除主机流程设计3.3.2主机登记模块的设计与实现在该模块中主要是包含了主机信息的录入、编辑查看以及删除操作,如图3
45、-8所示。图3-8 主机页面录入操作是在选择添加主机后,先通过数据库获取到配置信息表传递到前端提供给用户选择,在用户选择完毕后,则将最后的信息传递到后台,先通过数据库查询有无冲突的信息,在检测不冲突后,则进行插入数据的操作,开始将主机信息写入数据库中,这样就完成了添加操作。编辑查看主要是通过id在数据库中查找相关对于的主机信息,并将对应的信息传递到前端,然后就将获取的信息读取出来并进行展示。而删除则是通过id在库中查找到对于的信息,并进行数据的删除。该部分的主要代码逻辑如附录3中所示。3.4 SaltStack模块的设计与实现3.4.1 SaltStack模块功能流程在进入网站后通过选项进入SaltStack功能列表,在选择实时状态时,可以查看已经加入SaltStack集群中的客户端minion节点的信息。在功能列表中选择命令下发时,可以进入远程命令的功能列表,在进入后,