自动化接口设计和后端脚本

171 阅读1分钟

ansible 接口和后端调度执行

整体架构概述

架构的整体流程:

运维系统 ---> 接收运维系统下发任务 ---> 任务数据结构预处理 ---> 执行任务(调用ansible playbook) ---> 回调 ---> 运维系统

设计原则

原则:稳定、有序、解耦、高效

为确保任务有序执行,整个架构用的生产和消费队列模型来实现数据结构预处理和调度执行

为避免不必要的改动影响整个代码结构,接收任务接口以及数据结构预处理这两块,尽量逻辑简单化,并且分解出来.

为避免任务运行同步阻塞,在确认任务可以解耦,把任务执行和执行结果回调分解成异步方式。

为了更高效的利用运算资源,代码部分用了协程之类的方式来实现。

架构模块构成

架构主要有四个模块和ansible playbook 脚本构成。

四个模块: 接收任务模块、数据结构预处理模块、执行任务模块、回调模块。

技术栈

回调模块采用python协程,其余三个模块用golang + goroutine + channel、自动化脚本用ansible playbook

关于 playbook 相比原先那套salt的改进

  • 更加抽象化,对业务角色流程、对业务角色实例化都进行了抽象。多个同类型的业务角色都可以共用一套自动化流水线。
  • 流程更加灵活、支持灵活定义变量,适配不同流程
  • 公共依赖的资源也抽象出来,减少重复脚本
  • 维护成本更低