Django+Ansible构建任务中心思路
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构建任务中心思路的更多相关文章
- Django + Ansible 主机管理(有源码)
本文给大家介绍如何利用 Django + Ansible 进行 Web 项目管理. Django介绍 一个可以使 Web 开发工作愉快并且高效的 Web 开发框架,能够以最小的代价构建和维护高质量 ...
- Python+Django+ansible playbook自动化运维项目实战☝☝☝
Python+Django+ansible playbook自动化运维项目实战☝☝☝ 一.入门引导 DevOPSDevOps(英文Development和Operations的组合)是一组过程.方法 ...
- Python+Django+ansible playbook自动化运维项目实战✍✍✍
Python+Django+ansible playbook自动化运维项目实战 整个课程都看完了,这个课程的分享可以往下看,下面有链接,之前做java开发也做了一些年头,也分享下自己看这个视频的感受 ...
- Python+Django+Ansible Playbook自动化运维项目实战
Python+Django+AnsiblePlaybook自动化运维项目实战 整个课程都看完了,这个课程的分享可以往下看,下面有链接,之前做java开发也做了一些年头,也分享下自己看这个视频的感受,单 ...
- 英特尔® 至强® 平台集成 AI 加速构建数据中心智慧网络
英特尔 至强 平台集成 AI 加速构建数据中心智慧网络 SNA 通过 AI 方法来实时感知网络状态,基于网络数据分析来实现自动化部署和风险预测,从而让企业网络能更智能.更高效地为最终用户业务提供支撑. ...
- 使用Ansible实现数据中心自动化运维管理
长久以来,IT 运维在企业内部一直是个耗人耗力的事情.随着虚拟化的大量应用.私有云.容器的不断普及,数据中心内部的压力愈发增加.传统的自动化工具,往往是面向于数据中心特定的一类对象,例如操作系统.虚拟 ...
- 【转】使用 Ansible 实现数据中心自动化管理
长久以来,IT 运维在企业内部一直是个耗人耗力的事情.随着虚拟化的大量应用.私有云.容器的不断普及,数据中心内部的压力愈发增加.传统的自动化工具,往往是面向于数据中心特定的一类对象,例如操作系统.虚拟 ...
- App 组件化/模块化之路——构建开发架构思路
App 组件化/模块化开发架构思路 随着业务的发展 App 开发技术也越来越成熟,对开发者来说 App 代码量也迅速地增长到一个数量级.对于如何架构 App 已经每个开发者面临的实际问题.好的架构可以 ...
- Django中多表查询思路
需求: 1.有一张文章表和一张评论表 2.两张表的关系是一对多 3.规则:若是有新评论,则将对应的文章置顶,若是有新文章则将新文章置顶. 思路: 在文章表中增加一个最后评论时间的字段.然后采用分组排序 ...
随机推荐
- VUE 之_this.da 和 this
作者:张艳涛 日期:2020-07-29 this用在第一层,如果在JS第3二层,要用 _this importfxx(obj) { let _this = this; let inputDOM = ...
- noip模拟测试16
这次考试,难度还是不小的,先说一下考试过程,首先看一遍题,觉得开题顺序1 3 2, 然后我就先打了第一题,我当时可能是受到之前做题的限制了,觉得他只能每次走一 格,也就是一个单位长度,但是实际上,他甚 ...
- Apache httpd的web服务
Apache httpd的web服务 适用于Unix/Linux下的web服务器软件 Apache httpd(开源且免费),虚拟主机,支持HTTPS协议,支持用户认证,支持单个目录的访问控制,支持U ...
- (2)用 if语句 区间判断
1 /*此例子只作为演示*/ 2 3 #include <stdio.h> 4 int main() 5 { 6 printf("请问贵公司给出的薪资是:\n"); 7 ...
- Nacos 笔记
Nacos 笔记 目录 Nacos 笔记 1. Nacos简介 1.1 主流配置中心对比 1.2 主流注册中心对比 1.3 Nacos特性 2. 安装启动 支持外部 MySQL 3. 配置管理 3.1 ...
- 为什么不建议使用WordPress呢?
程序过于注重扩展性与动态配置解析,导致执行流程中包含大量的钩子.判断.文件加载等操作,导致执行效率偏低,对服务器要求较高.对系统的开销,尤其是CPU等部分消耗较大,据观察,单个请求在腾讯云s1主机单核 ...
- Build VM Cluster on CentOS Host
Host Machine [root@bocoty49 ~]# lsb_release -a LSB Version: :base-4.0-amd64:base-4.0-noarch:core-4.0 ...
- SpringMVC学习09(文件的上传和下载)
文件上传和下载 准备工作 文件上传是项目开发中最常见的功能之一 ,springMVC 可以很好的支持文件上传,但是SpringMVC上下文中默认没有装配MultipartResolver,因此默认情况 ...
- awk-02-内置变量
内置变量 示例 1 FS和OFS 2 RS和ORS 3 NF是字段个数 4 NR和FNR NR 统计记录编号,每处理一行记录,编号就会+1,FNR 不同的是在统计第二个文件时会重新计数 NR和FNR区 ...
- 【原创】一文彻底搞懂安卓WebView白名单校验
前言 近两年公司端侧发现的漏洞很大一部分都出在WebView白名单上,针对这类漏洞安全编码团队也组织过多次培训,但是这种漏洞还是屡见不鲜.下面本人就结合产品中容易出现问题的地方,用实例的方式来总结一下 ...