本发明属于网络信息技术,具体涉及一种用于管理应用部署的方法及系统。
背景技术:
应用的部署既花费大量的时间又容易人为出错,并且随着部署环境中不断增加的部署目标数量,部署将出现更多的不确定性。首先,在部署环境方面,对于分散在不同的数据中心,主机无法实现统一的部署管理,这些都将带来了更多的风险。其次,在应用管理方面,随着应用越来越复杂,依赖关系比以往任何时候都更复杂,更难以跟踪,部署脚本难以维护。同时,部署包含多个组件的应用程序更是极具挑战性,一方面需要确定应用部署的每个组件的版本,另一方面是将所有组件的所需版本传送到目标环境上,并执行相应的部署逻辑。再者,在部署人员方面,不同的部署人员存在技能的差别,可能导致应用的部署存在一定的差异性,不能完全发挥应用的性能或者在部署中途出现部署失败的情况。最后,在部署要求方面,企业要求更频繁的部署。企业开发人员开发进展速度非常快,需要迅速的部署应用到测试环境中以便测试人员测试,因而对部署功能的需求越来越强烈。
目前,应用部署常见的模式分为两种,一种是采用人工部署的方式,另外一种是采用持续集成/持续部署工具进行自动化部署。对于人工部署,部署成本高、执行效率低,运维人员的工作量巨大,应用部署的可控性较差。同时,部署的过程中无法实时查看部署的过程以及保存部署的历史数据。对于自动化部署,现有的部署工具不能将需要管理的主机、不同版本的应用、大量的部署脚本进行管理,部署的流程较为复杂。
技术实现要素:
针对现有技术中存在的问题,本发明提出一种用于管理应用部署的方法及系统,实现应用部署的全生命周期管理与简化部署的流程,其具体技术内容如下:
本发明的一种用于管理应用部署的方法,其包括:
一)初始化步骤;
读取部署流程相关的数据,检验数据的完整性和有效性;其中,包括数据格式的检验、主机是否已经纳管的检验、应用包和脚本文件是否存的检验;
二)ssh连接性测试步骤;
读取部署流程中所涉及的主机ip信息,测试各主机的ssh连通性;若存在没有连通的主机,则部署流程中止,同时返回该主机的ip以及其所涉及到的部署步骤;若各主机均满足ssh连通性,则执行下一步;
三)应用部署步骤;
获取所涉及的主机信息或集群信息,以及获取应用包和脚本;
将应用包和脚本文件上传至对应主机或集群上,并根据部署流程中定义的顺序来执行相应的脚本;
若正确地执行了脚本,则返回相应的变量信息并继续执行下一个脚本;否则,中止当前脚本的执行,退出本次部署;或者是返回相应的变量信息,接着执行下一个脚本,直至完成部署流程中定义的所有步骤;
在执行完成部署流程中定义的所有步骤后,输出部署的最终结果。
于本发明的一个或多个实施例当中,所述应用部署步骤中,根据脚本中预设的错误处理机制来中止当前脚本的执行,退出本次部署;或者是返回相应的变量信息,接着执行下一个脚本。
于本发明的一个或多个实施例当中,所述脚本中包含有用于返回的变量名称、值以及类型,其中,所述类型包括整个部署流程均可用的全局变量、当前步骤可用的局部变量,以及下一步骤可用的限定变量。
于本发明的一个或多个实施例当中,所述应用部署步骤中根据部署流程定义有若干个执行步骤,每一个执行步骤中若干个要求按序执行的脚本。
本发明的一种用于管理应用部署的系统,其包括:主机管理模块、应用包管理模块、脚本管理模块、部署流程管理模块以及应用部置管理模块;
所述主机管理模块用于执行对主机的管理,其获取主机信息或/和将若干主机进行归类以建立集群;
所述应用包管理模块用于执行对应用包的管理,其获取应用包,并将所获得的不同版本的同一应用保存至主机的同一文件夹内;
所述脚本管理模块用于执行对脚本的管理,其中包括脚本的新增、修改或删除操作,并将不同脚本进行归类;
所述部署流程管理模块用于执行部署流程的编辑和管理,其供用户定义若干个执行步骤,每一执行步骤当中各脚本的执行顺序;
所述应用部置管理模块用于执行部署过程,其按部署流程获取所涉及的主机信息或集群信息,以及获取应用包和脚本;将应用包和脚本文件上传至对应主机或集群上,并根据部署流程中定义的顺序来执行相应的脚本;在执行完成部署流程中定义的所有步骤后,输出部署的最终结果。
于本发明的一个或多个实施例当中,所述脚本管理模块以脚本录入或脚本上传的方式获取脚本。
于本发明的一个或多个实施例当中,所述应用部置管理模块动态地显示各个主机返回的部署信息,便于用户实时查看部署的结果。
于本发明的一个或多个实施例当中,还包括应用部署日志查询模块,用于通过搜索功能查询部署的历史信息,以在部署失败后查看部署失败的原因。
本发明的有益效果是:通过本技术实现应用部署的全生命周期管理,提供的部署流程简单,功能完善,降低了企业的部署成本,提升了部署的速度、便利性以及可靠性。
附图说明
图1为本发明的系统架构示意图。
图2为本发明的应用部署步骤流程图。
图3为本发明的应用部署示例流程图。
具体实施方式
如下对本申请方案作进一步描述:
参见附图1,一种用于管理应用部署的系统,其包括:主机管理模块、应用包管理模块、脚本管理模块、部署流程管理模块、应用部置管理模块以及应用部署日志查询模块;所述主机管理模块用于执行对主机的管理,即通过主机的ip、ssh的端口、用户名和密码实现对主机的管理,其获取主机信息或/和将若干主机进行归类以建立集群;所述应用包管理模块用于执行对应用包的管理,其获取应用包,并将所获得的不同版本的同一应用保存至主机的同一文件夹内,方便应用包的管理;所述脚本管理模块用于执行对脚本的管理,其中包括脚本的新增、修改或删除操作,并将不同脚本进行归类;其中,脚本的新增方式包括脚本录入或脚本上传,可以手动输入脚本的内容或者上传相关的脚本;在脚本中预设有错误处理机制,即直接退出本次部署和不处理,默认为直接退出本次部署;所述部署流程管理模块用于执行部署流程的编辑和管理,其供用户定义若干个执行步骤,每一执行步骤当中各脚本的执行顺序;所述应用部置管理模块用于执行部署过程,其按部署流程获取所涉及的主机信息或集群信息,以及获取应用包和脚本;将应用包和脚本文件上传至对应主机或集群上,并根据部署流程中定义的顺序来执行相应的脚本;在执行完成部署流程中定义的所有步骤后,输出部署的最终结果;即,部署流程可以根据用户的要求修改流程的先后顺序,流程的第一步默认是测试主机的ssh连通性,用户无法修改,后面的步骤是用户根据自己需要部署的应用自定义下一步相关的信息,每一步包含主机或集群信息,应用包的信息、部署脚本的信息以及当前步骤错误处理或退出机制。如果每一步包含多个脚本时,可以指定脚本执行的先后执行选项。同时每个脚本包含脚本执行错误或者失败后的处理机制,通常的错误处理机制为直接退出本次部署和不处理,默认为直接退出本次部署。每个脚本的信息也包含了需要输出的变量的名称、值以及类型,这里的类型表示为全局变量(用于整个流程均可用的变量)、局部变量(该步骤可用的变量)以及限定变量(仅下一步骤需要使用的变量);所述应用部置管理模块动态地显示各个主机返回的部署信息,便于用户实时查看部署的结果;应用部署日志查询模块获取最终结果并形式应用部署日志,其用于通过搜索功能查询部署的历史信息,方便在部署失败后查看部署失败的原因。
参见附图2,一种用于管理应用部署的方法,其包括:
一)初始化步骤;
读取部署流程相关的数据,检验数据的完整性和有效性;其中,包括数据格式的检验、主机是否已经纳管的检验、应用包和脚本文件是否存的检验;
二)ssh连接性测试步骤;
读取部署流程中所涉及的主机ip信息,测试各主机的ssh连通性;若存在没有连通的主机,则部署流程中止,同时返回该主机的ip以及其所涉及到的部署步骤;若各主机均满足ssh连通性,则执行下一步;
三)应用部署步骤;
获取所涉及的主机信息或集群信息,以及获取应用包和脚本;
将应用包和脚本文件上传至对应主机或集群上,并根据部署流程中定义的顺序来执行相应的脚本;
若正确地执行了脚本,则返回相应的变量信息并继续执行下一个脚本;否则,中止当前脚本的执行,退出本次部署;或者是返回相应的变量信息,接着执行下一个脚本,直至完成部署流程中定义的所有步骤;
在执行完成部署流程中定义的所有步骤后,输出部署的最终结果。
所述应用部署步骤中,有若干个执行步骤,每一个执行步骤中若干个要求按序执行的脚本;根据脚本中预设的错误处理机制来中止当前脚本的执行,退出本次部署;或者是返回相应的变量信息,接着执行下一个脚本。所述脚本中包含有用于返回的变量名称、值以及类型,其中,所述类型包括整个部署流程均可用的全局变量、当前步骤可用的局部变量,以及下一步骤可用的限定变量。
参见附图3,为本发明的应用部署示例,在经过初始化和步骤1的ssh连通性测试后,依次运行用户预设的部署流程,包括:
步骤2,部署前的准备步骤;
获取自定义流程的所有数据,例如:主机数据(主机1、主机2),应用包数据(module.tar.gz,...),脚本数据(脚本1信息,脚本2信息);
执行自定义流程的处理步骤,包括:
执行脚本1,检查主机内存和cpu是否满足要求;
执行脚本2,检查主机是否包含组件;
依次执行余下脚本,完成后跳转至步骤3。
步骤3,安装数据库步骤;
获取自定义流程的所有数据,例如:主机数据(主机a...),应用包数据(mysql.tar.gz,...),脚本数据(脚本1信息,脚本2信息);
执行自定义流程的处理步骤,包括:
执行脚本1,检查是否已安装数据库;
执行脚本2,安装数据库并检查是否安装成功;
依次执行余下脚本,完成后跳转至步骤4。
步骤4,安装代理nginx步骤;
获取自定义流程的所有数据,例如:主机数据(主机b...),应用包数据(nginx.tar.gz,...),脚本数据(脚本1信息,脚本2信息);
执行自定义流程的处理步骤,包括:
执行脚本1,检查是否已安装nginx;
执行脚本2,安装nginx并检查是否安装成功;
依次执行余下脚本,完成后跳转至步骤5。
步骤5,安装应用步骤;
获取自定义流程的所有数据,例如:主机数据(主机c...),应用包数据(application.tar.gz,...),脚本数据(脚本1信息,脚本2信息);
执行自定义流程的处理步骤,包括:
执行脚本1,检查数据库与nginx是否连通;
执行脚本2,安装应用并检查是否安装成功;
依次执行余下脚本,完成后跳转至步骤5。
上述步骤2-5为自定义的部署流程步骤,其执行内容与数量由用户设置;通过每步中的脚本及其错误处理机制实现顺序执行或中止退出。程序执行完毕后(判断为最后一个部署流程步骤),则退出部署流程,返回最终结果。
上述优选实施方式应视为本申请方案实施方式的举例说明,凡与本申请方案雷同、近似或以此为基础作出的技术推演、替换、改进等,均应视为本专利的保护范围。
1.一种用于管理应用部署的方法,其特征在于,包括:
一)初始化步骤;
读取部署流程相关的数据,检验数据的完整性和有效性;其中,包括数据格式的检验、主机是否已经纳管的检验、应用包和脚本文件是否存的检验;
二)ssh连接性测试步骤;
读取部署流程中所涉及的主机ip信息,测试各主机的ssh连通性;若存在没有连通的主机,则部署流程中止,同时返回该主机的ip以及其所涉及到的部署步骤;若各主机均满足ssh连通性,则执行下一步;
三)应用部署步骤;
获取所涉及的主机信息或集群信息,以及获取应用包和脚本;
将应用包和脚本文件上传至对应主机或集群上,并根据部署流程中定义的顺序来执行相应的脚本;
若正确地执行了脚本,则返回相应的变量信息并继续执行下一个脚本;否则,中止当前脚本的执行,退出本次部署;或者是返回相应的变量信息,接着执行下一个脚本,直至完成部署流程中定义的所有步骤;
在执行完成部署流程中定义的所有步骤后,输出部署的最终结果。
2.根据权利要求1所述的用于管理应用部署的方法,其特征在于:所述应用部署步骤中,根据脚本中预设的错误处理机制来中止当前脚本的执行,退出本次部署;或者是返回相应的变量信息,接着执行下一个脚本。
3.根据权利要求1所述的用于管理应用部署的方法,其特征在于:所述脚本中包含有用于返回的变量名称、值以及类型,其中,所述类型包括整个部署流程均可用的全局变量、当前步骤可用的局部变量,以及下一步骤可用的限定变量。
4.根据权利要求1所述的用于管理应用部署的方法,其特征在于:所述应用部署步骤中根据部署流程定义有若干个执行步骤,每一个执行步骤中若干个要求按序执行的脚本。
5.一种用于管理应用部署的系统,其特征在于,包括:主机管理模块、应用包管理模块、脚本管理模块、部署流程管理模块以及应用部置管理模块;
所述主机管理模块用于执行对主机的管理,其获取主机信息或/和将若干主机进行归类以建立集群;
所述应用包管理模块用于执行对应用包的管理,其获取应用包,并将所获得的不同版本的同一应用保存至主机的同一文件夹内;
所述脚本管理模块用于执行对脚本的管理,其中包括脚本的新增、修改或删除操作,并将不同脚本进行归类;
所述部署流程管理模块用于执行部署流程的编辑和管理,其供用户定义若干个执行步骤,每一执行步骤当中各脚本的执行顺序;
所述应用部置管理模块用于执行部署过程,其按部署流程获取所涉及的主机信息或集群信息,以及获取应用包和脚本;将应用包和脚本文件上传至对应主机或集群上,并根据部署流程中定义的顺序来执行相应的脚本;在执行完成部署流程中定义的所有步骤后,输出部署的最终结果。
6.根据权利要求1所述的用于管理应用部署的系统,其特征在于:所述脚本管理模块以脚本录入或脚本上传的方式获取脚本。
7.根据权利要求1所述的用于管理应用部署的系统,其特征在于:所述应用部置管理模块动态地显示各个主机返回的部署信息,便于用户实时查看部署的结果。
8.根据权利要求5-7任一项所述的用于管理应用部署的系统,其特征在于:还包括应用部署日志查询模块,用于通过搜索功能查询部署的历史信息,以在部署失败后查看部署失败的原因。
技术总结