一种基于Ansible的自动化运维系统和方法与流程

文档序号:19943029发布日期:2020-02-14 23:26阅读:215来源:国知局
一种基于Ansible的自动化运维系统和方法与流程

本发明涉及移动it系统运维的领域,尤其涉及一种基于ansible的自动化运维系统和方法。



背景技术:

当前移动it系统运维的机器越来越多,当前的运维多数还停留在传统的运维阶段,传统运维以手动执行shell命令或脚本为主,传统的调度通过人工或crontab定时任务实现。传统的运维方法,可靠性低,人工干预多的情况下,很容易出现人为操作失误,维护的可靠性不能保证。



技术实现要素:

本发明所要解决的技术问题是针对现有技术的不足,提供。

本发明解决上述技术问题的技术方案如下:

一种基于ansible的自动化运维系统,包括:任务调度模块、消息中间件模块、woker模块和ansible模块;

所述任务调度模块用于创建任务、编排所述任务和定时对所述任务进行调度,并发布到消息中间件;

所述消息中间件模块,用于传输调度后的所述任务,并将调度后的所述任务放在任务队列中;

所述woker模块用于从任务队列中消费待执行任务,初始化任务并调用ansible接口,生成可执行的任务;

所述ansible模块用于执行所述可执行的任务,完成运维任务。

本发明的有益效果是:任务调度模块创建和编排任务,根据编排要素,执行时间、执行周期、执行上下文关系和出入参数创建调度任务,再通过woker接收调度任务,并生成执行文件,ansible模块执行任务。相比现技术的运维以手动执行shell命令或脚本,人工调度或者crontab定时调度的方案,本申请的方案人工成本低、可靠性高,在任务流程较多时能够自动衔接流程,自动执行下一个阶段的任务流,自动化程度更高。

在上述技术方案的基础上,本发明还可以做如下改进。

进一步地,所述任务调度模块具体用于创建任务,对所述任务中的多个子任务进行编排,根据预设编排要素创建调度任务,定时并发布所述调度任务到所述消息中间件模块。

采用上述进一步方案的有益效果是:通过任务调度模块根据实际运维工作要求创建工作任务,再对工作任务中的多个子任务根据编排要素进行编排,再创建调度任务;通过任务创建、子任务编排和创建包含编排条件的调度任务,实现运维任务的实时调度,并可以在复杂条件下有序的衔接任务流中的任务,使得系统运维效率更高。

进一步地,所述woker模块具体用于消费所述任务队列中的待执行任务,根据所述待执行任务的初始化playbook,并调用ansible接口;

所述ansible模块具体用于执行所述playbook,通过所述playbook调用对应的roles,完成主机的自动运维。

采用上述进一步方案的有益效果是:woker模块消费所述任务队列中的待执行任务,根据所述待执行任务的初始化playbook;ansible模块执行playbook,完成主机的自动运维,相比传统人为运维方式,不需要人为干预,避免了人为操作失误的情况,自动生成playbook执行文件,传统人为编写shell脚本,效率更高。

进一步地,所述woker模块还用于将所述ansible模块执行完的子任务的结果及状态返回到所述消息中间件模块的结果队列中。

采用上述进一步方案的有益效果是:ansible模块在执行完playbook,将执行完playbook的结果,通过woker模块返回到结果队列中,帮助系统获知任务执行的情况,系统根据执行结果,自动判断下一步需要执行的任务。

进一步地,所述任务调度模块还用于获取所述结果队列中任务执行的状态,判断所述执行的结果,如果所述执行的结果是执行完成,则进行下一个子任务;如果所述执行的结果是未完成,则继续进行本次子任务。

采用上述进一步方案的有益效果是:任务调度模块根据woker模块执行的结果,自动判断任务的执行状态,如果任务未完成,继续执行本次任务,实现了任务结果的自检;如果任务完成,根据调度任务,调度下一个任务,实现任务流的自动衔接。

本发明解决上述技术问题的另一种技术方案如下:

一种基于ansible的自动化运维的方法,包括以下步骤:

s1,任务调度模块创建任务、编排所述任务和定时对所述任务进行调度;

s2,消息中间件模块传输调度后的所述任务,并将调度后的所述任务放在任务队列中;

s3,woker模块从任务队列中消费提取待执行任务,初始化任务并调用ansible接口,生成可执行的任务;

s4,ansible模块执行所述可执行的任务,完成运维任务。

本发明的有益效果是:任务调度模块创建和编排任务,根据编排要素,执行时间、执行周期、执行上下文关系和出入参数创建调度任务,再通过woker接收调度任务,并生成执行文件,ansible模块执行任务。相比现技术的运维以手动执行shell命令或脚本,人工调度或者crontab定时调度的方案,本申请的方案人工成本低、可靠性高,在任务流程较多时能够自动衔接流程,自动执行下一个阶段的任务流,自动化程度更高。

在上述技术方案的基础上,本发明还可以做如下改进。

进一步地,所述任务调度模块创建任务、编排任务和定时调度任务,具体包括:

所述任务调度模块创建任务;

对所述任务中的多个子任务进行编排;

根据预设编排要素创建调度任务,定时并发布所述调度任务到所述消息中间件模块。

采用上述进一步方案的有益效果是:通过任务调度模块根据实际运维工作要求创建工作任务,再对工作任务中的多个子任务根据编排要素进行编排,再创建调度任务;通过任务创建、子任务编排和创建包含编排条件的调度任务,实现运维任务的实时调度,并可以在复杂条件下有序的衔接任务流中的任务,使得系统运维效率更高。

进一步地,所述s3具体包括:

所述woker模块消费所述任务队列中的待执行任务,根据所述待执行任务的初始化playbook,并调用ansible接口;

所述s4具体包括:

所述ansible模块执行所述playbook,通过所述playbook调用对应的roles,完成主机的自动运维。

采用上述进一步方案的有益效果是:woker模块消费所述任务队列中的待执行任务,根据所述待执行任务的子任务生成playbook;ansible模块执行playbook,完成主机的自动运维,相比传统人为运维方式,不需要人为干预,避免了人为操作失误的情况,自动生成playbook执行文件,传统人为编写shell脚本,效率更高。

进一步地,还包括:所述woker模块将所述ansible模块执行完的子任务的结果及状态返回到所述消息中间件模块的结果队列中。

采用上述进一步方案的有益效果是:ansible模块在执行完playbook,将执行完playbook的结果,通过woker模块返回到结果队列中,帮助系统获知任务执行的情况,系统根据执行结果,自动判断下一步需要执行的任务。

进一步地,还包括:所述任务调度模块获取所述结果队列中任务执行的状态,判断所述执行的结果,如果所述执行的结果是执行完成,则进行下一个子任务;如果所述执行的结果是未完成,则继续进行本次子任务。

采用上述进一步方案的有益效果是:任务调度模块根据woker模块执行的结果,自动判断任务的执行状态,如果任务未完成,继续执行本次任务,实现了任务结果的自检;如果任务完成,根据调度任务,调度下一个任务,实现任务流的自动衔接。

本发明附加的方面的优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本发明实践了解到。

附图说明

图1为本发明的实施例提供的基于ansible的自动化运维系统的结构框图;

图2为本发明的其他实施例提供的基于ansible的自动化运维方法流程示意图;

图3为本发明的其他实施例提供的基于ansible的自动化运维系统的结构框架图。

具体实施方式

以下结合附图对本发明的原理和特征进行描述,所举实施例只用于解释本发明,并非用于限定本发明的范围。

如图1所示,为本发明实施例提供的一种基于ansible的自动化运维系统,该系统包括:任务调度模块11、消息中间件模块12、woker模块13和ansible模块14;

任务调度模块11用于创建任务、编排任务和定时对任务进行调度,并发布到消息中间件;

任务调度模块11根据实际的运维需求,创建任务,可以根据任务的复杂程度或不同应用场景,具体选择开发任务的play或role;根据编排要素编排任务中多个子任务,编排要素可以包括任务执行时间、执行周期、执行上下文的关系和子任务的出入参数,执行上下文的关系是指上一个子任务的执行结果会影响下一个任务的执行过程,上一个子任务和下一个子任务需要连在一起执行,形成上下文关系;子任务的出入参数是指,上一个子任务的出参数是下一个子任务的入参数,上下这两个子任务需要连在一起。并对待调度的任务进行序列化,将序列化后的待调度的任务发布到消息中间件模块12。其中任务的序列化是指把任务的状态数据经调制后存入数据库。

消息中间件模块12,用于传输调度后的任务,并将调度后的任务放在任务队列中;

消息中间件模块12可以使用消息队列rabbitmq,消息中间件模块12配置出两个通道,一个作为任务队列通道,另一个作为结果队列通道。

消息中间件模块12接收到调度后的任务,并将任务发布到相应通道,以便各通道的woker模块13消费。

woker模块13用于从任务队列中消费待执行任务,初始化任务并调用ansible接口,生成可执行的任务;其中woker模块13消费待执行任务是指,根据待执行任务的排列规则,依次获取待执行任务的子任务。

待执行任务是根据编排要素编排并序列化后的任务,ansible模块14还不能执行;经过woker模块13对任务进行反序列化,并生成ansible模块14可执行的playbook文件。

woker模块13消费消息中间件调度后的任务,对任务数据进行反序列化,初始化playbook文件,并调用ansible接口。所述反序列化是指从序列化的表示形式的任务中提取数据,并直接设置任务对象状态,就是将序列化的数据经反调制从数据库中取出。

ansible模块14用于执行任务文件,完成运维任务。

ansible模块14执行playbook,通过playbook调用对应的roles,完成主机的自动运维。

任务调度模块11创建和编排任务,根据编排要素,执行时间、执行周期、执行上下文关系和出入参数创建调度任务,再通过woker模块13接收调度任务,并生成执行文件,ansible模块14执行任务。相比现技术的运维以手动执行shell命令或脚本,人工调度或者crontab定时调度的方案,本申请的方案人工成本低、可靠性高,在任务流程较多时能够自动衔接流程,自动执行下一个阶段的任务流,自动化程度更高。

优选地,在上述任意实施例中,任务调度模块11具体用于创建任务,对任务中的多个子任务进行编排,根据预设编排要素创建调度任务,定时并发布调度任务到消息中间件模块12。

任务调度模块11根据实际的运维需求,创建任务,可以根据任务的复杂程度或不同应用场景,具体选择开发任务的play或role;根据编排要素编排任务中多个子任务,编排要素可以包括任务执行时间、执行周期、执行上下文的关系和子任务的出入参数,执行上下文的关系是指上一个子任务的执行结果会影响下一个任务的执行过程,上一个子任务和下一个子任务需要连在一起执行,形成上下文关系;子任务的出入参数是指,上一个子任务的出参数是下一个子任务的入参数,上下这两个子任务需要连在一起;根据编排要输编排任务的过程,例如给10台server创建文件系统,首先开发这个任务的play或role,根据任务的编排需要梳理编排要素,比如任务执行时间、执行周期、执行上下文的关系和子任务的出入参数,根据需要的编排要素,对任务中的子任务进行编排。并对待调度的任务进行序列化,将序列化后的待调度的任务发布到消息中间件模块12。

通过任务调度模块11根据实际运维工作要求创建工作任务,再对工作任务中的多个子任务根据编排要素进行编排,再创建调度任务;通过任务创建、子任务编排和创建包含编排条件的调度任务,实现运维任务的实时调度,并可以在复杂条件下有序的衔接任务流中的任务,使得系统运维效率更高。

优选地,在上述任意实施例中,woker模块13具体用于消费任务队列中的待执行任务初始化playbook,并调用ansible接口;

ansible模块14具体用于执行playbook,通过playbook调用对应的roles,完成主机的自动运维。

woker模块13消费任务队列中的待执行任务,根据待执行任务的子任务生成playbook;ansible模块14执行playbook,完成主机的自动运维,相比传统人为运维方式,不需要人为干预,避免了人为操作失误的情况,自动生成playbook执行文件,传统人为编写shell脚本,效率更高。

优选地,在上述任意实施例中,woker模块13还用于将ansible模块14执行完的子任务的结果及状态返回到消息中间件模块12的结果队列中。

ansible模块14在执行完playbook,将执行完playbook的结果,通过woker模块13返回到结果队列中,帮助系统获知任务执行的情况,系统根据执行结果,自动判断下一步需要执行的任务。

优选地,在上述任意实施例中,如图3所示,是基于ansible的自动化运维系统,任务调度模块11还用于获取结果队列中任务执行的状态,判断执行的结果,如果执行的结果是执行完成,则进行下一个子任务;如果执行的结果是未完成,则继续进行本次子任务。

任务调度模块11获取结果队列中任务执行的结果,判断执行的结果,如果执行的结果是执行完成,则进行下一个子任务;还可以包括当一个任务的多个子任务都执行完成,则进行下一个任务的子任务。

任务调度模块11根据woker模块13执行的结果,自动判断任务的执行状态,如果任务未完成,继续执行本次任务,实现了任务结果的自检;如果任务完成,根据调度任务,调度下一个任务,实现任务流的自动衔接。

在某一实施例中,给出了一种基于ansible的自动化运维的方法,包括以下步骤,如图2所示:

s1,任务调度模块11创建任务、编排任务和定时对任务进行调度;

任务调度模块11根据实际的运维需求,创建任务,可以根据任务的复杂程度或不同应用场景,具体选择开发任务的play或role;根据编排要素编排任务中多个子任务,编排要素可以包括任务执行时间、执行周期、执行上下文的关系和子任务的出入参数,执行上下文的关系是指上一个子任务的执行结果会影响下一个任务的执行过程,上一个子任务和下一个子任务需要连在一起执行,形成上下文关系;子任务的出入参数是指,上一个子任务的出参数是下一个子任务的入参数,上下这两个子任务需要连在一起。并对待调度的任务进行序列化,将序列化后的待调度的任务发布到消息中间件模块12。其中任务的序列化是指把任务的状态数据经调制后存入数据库。

s2,消息中间件模块传输调度后的所述任务,并将调度后的所述任务放在任务队列中;

消息中间件模块12可以使用消息队列rabbitmq,消息中间件模块12配置出两个通道,一个作为任务队列通道,另一个作为结果队列通道。

消息中间件模块12接收到调度后的任务,并将任务发布到相应通道,以便各通道的woker模块13消费。

s3,woker模块13从任务队列中消费提取待执行任务,初始化任务并调用ansible接口,生成可执行的任务;其中woker模块13消费待执行任务是指,根据待执行任务的排列规则,依次获取待执行任务的子任务。

待执行任务是根据编排要素编排并序列化后的任务,ansible模块14还不能执行;经过woker模块13对任务进行反序列化,并生成ansible模块14可执行的playbook文件。

woker模块13消费消息中间件调度后的任务,对任务数据进行反序列化,生成子任务的可执行的playbook文件。所述反序列化是指从序列化的表示形式的任务中提取数据,并直接设置对象状态,就是将序列化的数据经反调制从数据库中取出。

s4,ansible模块14执行任务,完成运维任务。

ansible模块14执行playbook,通过playbook调用对应的roles,完成主机的自动运维。

任务调度模块11创建和编排任务,根据编排要素,执行时间、执行周期、执行上下文关系和出入参数创建调度任务,再通过woker模块13接收调度任务,并生成执行文件,ansible模块14执行任务。相比现技术的运维以手动执行shell命令或脚本,人工调度或者crontab定时调度的方案,本申请的方案人工成本低、可靠性高,在任务流程较多时能够自动衔接流程,自动执行下一个阶段的任务流,自动化程度更高。

在上述技术方案的基础上,本发明还可以做如下改进。

优选地,在上述任意实施例中,任务调度模块11创建任务、编排任务和定时调度任务,具体包括:

任务调度模块11创建任务;

对任务中的多个子任务进行编排;

根据预设编排要素创建调度任务,定时并发布调度任务到消息中间件模块12。

任务调度模块11根据实际的运维需求,创建任务,可以根据任务的复杂程度或不同应用场景,具体选择开发任务的play或role;根据编排要素编排任务中多个子任务,编排要素可以包括任务执行时间、执行周期、执行上下文的关系和子任务的出入参数,执行上下文的关系是指上一个子任务的执行结果会影响下一个任务的执行过程,上一个子任务和下一个子任务需要连在一起执行,形成上下文关系;子任务的出入参数是指,上一个子任务的出参数是下一个子任务的入参数,上下这两个子任务需要连在一起。根据编排要输编排任务的过程,例如给10台server创建文件系统,首先开发这个任务的play或role,根据任务的编排需要梳理编排要素,比如任务执行时间、执行周期、执行上下文的关系和子任务的出入参数,根据需要的编排要素,对任务中的子任务进行编排。并对待调度的任务进行序列化,将序列化后的待调度的任务发布到消息中间件模块12。

通过任务调度模块11根据实际运维工作要求创建工作任务,再对工作任务中的多个子任务根据编排要素进行编排,再创建调度任务;通过任务创建、子任务编排和创建包含编排条件的调度任务,实现运维任务的实时调度,并可以在复杂条件下有序的衔接任务流中的任务,使得系统运维效率更高。

优选地,在上述任意实施例中,s3具体包括:

woker模块13消费任务队列中的待执行任务,根据所述待执行任务的初始化playbook,并调用ansible接口;

s4具体包括:

ansible模块14执行playbook,通过playbook调用对应的roles,完成主机的自动运维。

woker模块13消费任务队列中的待执行任务,根据待执行任务的子任务生成playbook;ansible模块14执行playbook,完成主机的自动运维,相比传统人为运维方式,不需要人为干预,避免了人为操作失误的情况,自动生成playbook执行文件,传统人为编写shell脚本,效率更高。

优选地,在上述任意实施例中,还包括:woker模块13将ansible模块14执行完的子任务的结果及状态返回到消息中间件模块12的结果队列中。ansible模块14在执行完playbook,将执行完playbook的结果,通过woker模块13返回到结果队列中,帮助系统获知任务执行的情况,系统根据执行结果,自动判断下一步需要执行的任务。

优选地,在上述任意实施例中,还包括:任务调度模块11获取结果队列中任务执行的状态,判断执行的结果,如果执行的结果是执行完成,则进行下一个子任务;如果执行的结果是未完成,则继续进行本次子任务。

任务调度模块11获取结果队列中任务执行的结果,判断执行的结果,如果执行的结果是执行完成,则进行下一个子任务;还可以包括当一个任务的多个子任务都执行完成,则进行下一个任务的子任务。

任务调度模块11根据woker模块13执行的结果,自动判断任务的执行状态,如果任务未完成,继续执行本次任务,实现了任务结果的自检;如果任务完成,根据调度任务,调度下一个任务,实现任务流的自动衔接。

读者应理解,在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不必针对的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任一个或多个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。

在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的方法实施例仅仅是示意性的,例如,步骤的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个步骤可以结合或者可以集成到另一个步骤,或一些特征可以忽略,或不执行。

上述方法如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分,或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、磁碟或者光盘等各种可以存储程序代码的介质。

以上,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到各种等效的修改或替换,这些修改或替换都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。

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