Ansible作为老牌的自动化运维工具,由Python开发,应用广泛,但其默认只提供了命令行下的使用方式,好在提供有完善的API支持二次开发,可以很方便的集成到我们的自动化运维系统中

最近一个朋友跳槽到了新公司转做DevOps开发,接到的第一个需求就是基于Ansible研发简单的任务中心,而他欠缺相关经验就找我帮忙,我就花了两天时间从熟悉Ansible开始写了个项目,由于我们的任务都是通过自研的一套自定义任务引擎Probius来实现的,之前从未正式用过Ansible,趁此机会也算是熟悉了

本篇文章只有思路没有代码,主要帮助新手了解流程整理思路,从而更好的理解代码

思路整理

可以通过Web运行Ansible的Module和Playbook这是我们的目标,要实现这个目标我们要做哪些功能呢?我大概画了个脑图帮助整理思路

前端页面

根据上边的思路,我们来想一下都需要编写哪些页面,首先需要一个任务执行页面,在这个页面里需要选择是本次任务是运行module还是Playbook,如果是需要运行module,则需要用户选择具体的module和输入参数,如果需要运行playbook,则需要用户选择具体的playbook和输入参数,无论是运行module还是playbook,都需要确定在哪些主机上运行

通常情况下我们的主机信息都是通过CMDB系统维护的,而对于任务的执行,大多也是针对项目或服务,所以对主机的选择就转换成了对项目或服务的选择,选择了项目服务就确定了运行主机,由此一个完整的任务执行页面就确定了

上边的页面有两个下拉选择框,其一是项目的选择,我们通过选择项目来确定运行的主机,这些数据需要去CMDB获取,这就需要CMDB提供2个API,一个用来获取项目服务的列表,供页面上选择,另外还需要一个根据项目服务查询项目服务下主机列表的API,以确定任务要运行的主机列表

另外一个下拉框是playbook的选择,这就需要另外一个playbook管理的页面,管理playbook就需要进行增删改查,一个简单的页面如下

任务执行过程中需要一个实时展示日志的页面,可以及时的观察任务执行过程中遇到的问题,点击运行按钮直接跳转到任务执行日志页面,观察任务执行日志

任务执行完成后还需要一个历史任务的列表页面,可以查看所有历史执行的任务,以及可以根据条件方便的过滤任务

简单的几个页面就将整个流程清晰的展示了出来

后端逻辑

上边讲了前端页面的设计思路,而后端的逻辑又是怎样的,我们同样从这几个页面入手思考

ansible执行页面,当用户点击提交按钮的同时会将所选项目、所选模块/playbook,以及参数传给后端,后端根据所选的项目获取到项目下的主机,然后将主机、module/playbook、参数,以及任务创建时间、创建用户等信息写入数据库,同时调用AnsibleAPI异步执行,最后跳转到任务详情页面

AnsibleAPI执行过程中将日志实时写入缓存,同时可以通过websocket推给任务详情页面,任务详情页面接受到数据之后展示,如果觉得使用websocket没必要也可以像我一样直接在任务详情页启动一个循环,每秒请求日志将更新追加到页面上,在任务执行完成后,将缓存数据写入数据库,这样的好处是可以减少对数据库的读写,提高效率,整个流程大概如下

以上是运行和任务详情页面的后端逻辑,而对于playbook和任务历史两个页面就比较简单了,就是普通的增删改查而已,不过多介绍

后记

一个新项目在开始编写代码之前就需要对这个项目有相对清晰的认识,在脑海里过一下基本逻辑,这一步也可以借助思维导图来完成,然后搭框架填内容水到渠成

Django+Ansible构建任务中心思路的更多相关文章

  1. Django + Ansible 主机管理(有源码)

    本文给大家介绍如何利用 Django + Ansible 进行 Web 项目管理.   Django介绍 一个可以使 Web 开发工作愉快并且高效的 Web 开发框架,能够以最小的代价构建和维护高质量 ...

  2. Python+Django+ansible playbook自动化运维项目实战☝☝☝

    Python+Django+ansible playbook自动化运维项目实战☝☝☝  一.入门引导 DevOPSDevOps(英文Development和Operations的组合)是一组过程.方法 ...

  3. Python+Django+ansible playbook自动化运维项目实战✍✍✍

    Python+Django+ansible playbook自动化运维项目实战  整个课程都看完了,这个课程的分享可以往下看,下面有链接,之前做java开发也做了一些年头,也分享下自己看这个视频的感受 ...

  4. Python+Django+Ansible Playbook自动化运维项目实战

    Python+Django+AnsiblePlaybook自动化运维项目实战 整个课程都看完了,这个课程的分享可以往下看,下面有链接,之前做java开发也做了一些年头,也分享下自己看这个视频的感受,单 ...

  5. 英特尔® 至强® 平台集成 AI 加速构建数据中心智慧网络

    英特尔 至强 平台集成 AI 加速构建数据中心智慧网络 SNA 通过 AI 方法来实时感知网络状态,基于网络数据分析来实现自动化部署和风险预测,从而让企业网络能更智能.更高效地为最终用户业务提供支撑. ...

  6. 使用Ansible实现数据中心自动化运维管理

    长久以来,IT 运维在企业内部一直是个耗人耗力的事情.随着虚拟化的大量应用.私有云.容器的不断普及,数据中心内部的压力愈发增加.传统的自动化工具,往往是面向于数据中心特定的一类对象,例如操作系统.虚拟 ...

  7. 【转】使用 Ansible 实现数据中心自动化管理

    长久以来,IT 运维在企业内部一直是个耗人耗力的事情.随着虚拟化的大量应用.私有云.容器的不断普及,数据中心内部的压力愈发增加.传统的自动化工具,往往是面向于数据中心特定的一类对象,例如操作系统.虚拟 ...

  8. App 组件化/模块化之路——构建开发架构思路

    App 组件化/模块化开发架构思路 随着业务的发展 App 开发技术也越来越成熟,对开发者来说 App 代码量也迅速地增长到一个数量级.对于如何架构 App 已经每个开发者面临的实际问题.好的架构可以 ...

  9. Django中多表查询思路

    需求: 1.有一张文章表和一张评论表 2.两张表的关系是一对多 3.规则:若是有新评论,则将对应的文章置顶,若是有新文章则将新文章置顶. 思路: 在文章表中增加一个最后评论时间的字段.然后采用分组排序 ...

随机推荐

  1. 【阅读笔记】Java核心技术卷一 #5.Chapter7

    7 异常.断言和日志 在 Java 中,如果某个方法不能够采用正常的途径完整它的任务,就可以通过另外一个路径退出方法. 在这种情况下,将会立刻退出,并不返回任何值,而是抛出(throw)一个封装了错误 ...

  2. HCNA Routing&Switching之二层交换技术VLAN基础

    前文我们主要聊了下交换机的工作原理和以太网接口的速率和双工相关话题,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/15088183.html:今天我们主要来聊一 ...

  3. 双击映射坚果云网盘并打开的AHK源代码

    双击映射坚果云网盘并打开的AHK源代码 #SingleInstance,force ;当此脚本已经运行时自动替换旧实例再次运行.#Persistent ;让脚本持久运行(即直到用户关闭或遇到 Exit ...

  4. Java8 Lambda表达式(二)

    目录 一.Java8 内置的四大核心函数式接口 1. 消费型接口 Consumer 2. 供给型接口 Supplier 3. 函数型接口 Function 4.断言型接口 Predicate 二.方法 ...

  5. Hybrid接口

    目录 一.Hybrid接口 1.1 VLan的基本概念 1.2 Hybrid接口特点 1.3 Hybrid接口工作原理 1.4 Hybrid配置 一.Hybrid接口 1.1 VLan的基本概念 特点 ...

  6. Linux必知必会的命令全集(持续更新)

    Linux有超过五百多种命令,每个命令还有十几二十种选项,令人抓狂,本文旨在整理本人工作常用的Linux命令,希望对大家有所帮助! 1.cd 跳转文件夹 最常用的命令,没有之一. cd    # 进入 ...

  7. 树莓派3B/3B+/4B 刷机装系统烧录镜像教程

    树莓派3B/3B+/4B 刷机装系统烧录镜像教程 树莓派 背景故事 刚拿到树莓派的第一件事,应该就是要装系统了,那么应该怎么操作呢?下面就给大家介绍一下吧. 硬件准备 树莓派:3B/3B+/4B,本教 ...

  8. TCP拥塞控制详解

    1. 拥塞原因与代价 拥塞的代价 当分组的到达速率接近链路容量时,分组经历巨大的排队时延. 发送方必须执行重传以补偿因为缓存溢出而丢弃的分组. 发送方在遇到大时延时进行的不必要重传会引起路由器利用其链 ...

  9. TCP实现聊天

    TCP实现聊天 IO流关闭是简写的,正常写要判断是否为null 客户端:(最好捕获异常) 1.连接服务器Socket 2.发送消息 package net.TCPChat; import java.i ...

  10. MyBatis学习02(配置解析)

    配置解析 核心配置文件 mybatis-config.xml 系统核心配置文件 MyBatis 的配置文件包含了会深深影响 MyBatis 行为的设置和属性信息. 能配置的内容如下: configur ...