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.规则:若是有新评论,则将对应的文章置顶,若是有新文章则将新文章置顶. 思路: 在文章表中增加一个最后评论时间的字段.然后采用分组排序 ...
随机推荐
- 2021年BI软件排名,国内外BI软件功能对比
数据分析是帮助企业深入了解自身业务表现(例如正在做什么或哪块业务需要注意和改进)的重要元素.为了获得更直观的展现,数据分析BI软件可帮助公司通过报告.数据可视化.应用程序等从数据中获取决策数据支撑.没 ...
- 谷粒商城--分布式高级篇P102~P128
谷粒商城--分布式高级篇P102~P128 由于学习的时间也比较少,只有周六周末才有时间出来学习总结,所以一篇一篇慢慢更新吧,本次总结内容为Elasticsearch(相关内容:kibana,es,n ...
- 适合普通大学生的 Java 后端开发学习路线
大家好,我是帅地. 接下来的一段时间,帅地会总结各种技术栈的学习路线,例如 Java 开发,C++ 开发,python 开发,前端开发等等,假如你没有明确的目标,或许可以按照我说的学习路线来学习一波, ...
- OpenFaaS实战之四:模板操作(template)
欢迎访问我的GitHub https://github.com/zq2599/blog_demos 内容:所有原创文章分类汇总及配套源码,涉及Java.Docker.Kubernetes.DevOPS ...
- WinForm PerformClick()
在Winfrom开发中,经常遇到调用Click事件,如:btn_click(null,null),其实winfrom也自带一个模拟点击事件:PerformClick(),区别就是:前者无论控件是否En ...
- Javac 编译器
编译过程 Javac 编译过程大致可以分为1个准备过程和3个处理过程: 准备过程:初始化插入式注解处理器. 解析与填充符号表过程,包括: 词法.语法分析,将源代码的字符流转变为标记集合,构造出抽象语法 ...
- netty系列之:自动重连
目录 简介 使用netty建立连接 自动重连接的原理 模拟自动重连 总结 简介 我们在使用客户端和服务器端连接的过程中,可能会因为各种问题导致客户端和服务器的连接发生中断,遇到这种情况,一般情况下我们 ...
- Spring Cloud Aliaba - Ribbon
Ribbon(有关介绍见RestTemplate末尾) Ribbon负载均衡实现策略 Ribbon负载均衡实现策略通过接口IRule进行实现,默认使用ZoneAvoidanceRule规则进行负载均衡 ...
- 剖析虚幻渲染体系(10)- RHI
目录 10.1 本篇概述 10.2 RHI基础 10.2.1 FRenderResource 10.2.2 FRHIResource 10.2.3 FRHICommand 10.2.4 FRHICom ...
- docker-02
环境准备 10.0.0.100这台宿主机先做好给docker容器本地yum源,其实也可以用阿里等其他的yum源 1 上传6.9和7.6的镜像到10.0.0.100这台服务器 [root@docker ...