Spug - 轻量级自动化运维平台
对于中小型企业而言,进行主机和应用的管理是比较麻烦的,应用部署往往需要直接连接服务器,再进行手动的环境配置、代码拉取、应用构建和部署发布等工作,容易出错,且耗时费力。一个好的自动化运维平台,往往能大大节省人力物力,提高开发部署效率。Spug,正是一个面向中小型企业设计的轻量级自动化运维平台。
Spug自动化运维平台
简介
Spug,是 openspug 在 Github 上开源的自动化运维平台,项目位于 https://github.com/openspug/spug,同时在 Gitee 上维护,项目位于 https://gitee.com/openspug/spug,目前版本为 v2.3.9。
Spug 面向中小型企业,无 Agent,十分轻量,整合了主机管理、主机批量执行、主机在线终端、应用发布部署、在线任务计划、配置中心、监控、报警等一系列功能,使用方便,功能灵活,能够满足一般的应用自动化部署需求。
Spug项目
安装
Spug 部署简单,在生产环境中推荐使用 Docker 镜像安装。Spug 提供了在 Docker hub 和阿里云上的镜像,可以直接拉取:
$ docker pull registry.aliyuncs.com/openspug/spug
镜像下载完成后,直接运行,构建容器并启动:
$ docker run -d --restart=always --name=spug -p 80:80 registry.aliyuncs.com/openspug/spug
默认使用镜像内部的 MySQL 数据库,如果有数据持久化的需求,可以进行数据映射:
$ docker run -d --restart=always --name=spug -p 80:80 -v /mydata/:/data registry.aliyuncs.com/openspug/spug
然后,创建管理员帐号:
$ docker exec spug init_spug <username> <password>
$ docker restart spug
此时,服务已经部署完成,访问 http://localhost:80 即可访问。
Spug 依赖于 Python 3.6+, Node.js 12.14+, Redis 3+,可以进行二次开发和部署。首先下载项目代码:
$ git clone https://github.com/openspug/spug /data/spug
然后,创建 Python 运行环境:
$ cd /data/spug/spug_api
$ python3 -m venv venv$ source venv/bin/activate$ pip install -r requirements.txt -i https://pypi.doubanio.com/simple/
初始化数据库,默认使用 SQLite,并创建管理员帐号:
$ python manage.py initdb
$ python manage.py useradd -u admin -p spug.dev -s -n 管理员
启动后端 API 服务:
$ python manage.py runserver
前端使用 React 的 Antd 开发,安装依赖后启动:
$ cd /data/spug/spug_web
$ npm install --registry=https://registry.npm.taobao.org
$ npm start
此时,就完成了开发环境的手动部署。
示例
部署完成后,Spug 主要在 Web 后台进行使用。Spug 后台主要包括:工作台、主机管理、批量执行、应用发布、任务计划、配置中心、监控中心、报警中心和系统管理模块。
主机,代表着应用最终部署的服务器,通过 SSH 公钥的方式,与 Spug 服务进行交互。Spug 后台可以进行主机的添加和配置,并可以批量执行命令,方便进行环境配置等:
主机批量执行
后台提供了在线终端,可以交互式地在主机上执行命令,同时支持文件上传下载,通过图形化的界面进行文件管理。
Spug 通过应用来进行部署的基本管理。一个应用,是一个需要部署的应用或服务的不同版本的集合:
应用管理
当我们需要部署一个应用时,需要进行发布申请,对于目标应用,选择发布环境,以及 Git 仓库的版本(分支,或标签),和需要发布的目标主机等,提交一个新的发布。
Spug 提供了不同阶段的自定义脚本,来实现自动化部署:
自动化部署脚本
- 代码检出前执行,是在 Spug 服务器上,在拉取代码前,进行环境配置等工作;
- 代码检出后执行,是在拉取代码后,进行依赖安装、编译和构建等工作;
- 应用发布前执行,是在目标主机上,进行旧应用的停止、运行环境配置等工作;
- 应用发布后执行,是在把项目发布到目标主机后,进行应用的启动等。
Spug 还支持计划任务,可以配置定时的脚本任务,实现服务状态检查等工作:
计划任务
Spug 提供了监控中心,可以创建监控任务,对应用状态进行定时检测,如对端口进行定时的开放检测,对站点进行定时的连通检测等:
监控中心
当检测到异常时,系统会自动发出警报,并通过邮件、微信、钉钉等发送。
Spug 后台还可以进行功能权限设置,可以进行团队内部不同职责人员的权限管理:
角色权限
总结
Spug 作为一个自动化运维平台,相对而言比较轻量,无需复杂的配置,就可以完成服务的部署,并通过简单的应用管理和发布申请,完成不同部署项目的版本管理,实现自动化的发布流程,以及版本回滚等,并提供了批量化的脚本支持多主机配置,提供定时任务实现状态检测,提供自动的警报系统实现异常管理等,基本满足了自动化部署的需求,值得尝试使用。目前,Spug 项目仍处于积极开发阶段,项目作者正征集想要支持的新特性,有兴趣的开发者不妨参与开源贡献。
来源:
https://www.toutiao.com/i6864577635469656583/
“IT大咖说”欢迎广大技术人员投稿,投稿邮箱:aliang@itdks.com
- 分分钟搭建MySQL Group Replication测试环境(二)(r12笔记第41天)
- php5编译安装常见错误和解决办法集锦
- MySQL自增列主从不一致的测试(r12笔记第37天)
- 分享Mac/Linux系统Shell终端利器SecureCRT以及注册破解方法
- MySQL中GTID和自增列的数据测试(r12笔记第38天)
- 分享一个入门级可控多线程shell脚本方案
- PhalGo-介绍
- 实测Nginx服务器开启pagespeed加速效果
- MySQL频繁停库的问题分析(r12笔记第33天)
- 解决Nginx Helper插件一键清理缓存功能导致网站打不开问题
- Oracle 12c DBCA浅析(r12笔记第48天)
- MySQL中的derived table(r12笔记第47天)
- Oracle数据库端口突然无法访问的分析(r12笔记第46天)
- MySQL中的反连接(r12笔记第45天)
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- openGaussDB 初体验(下)
- openGaussDB 初体验(上)
- 用python画出你的童年回忆
- [项目总结] 为某银行开发一个开业线上活动的H5网站
- 一文讲透 “进程、线程、协程”
- Qt音视频开发4-vlc读取和控制
- Glide 缓存总结(一)
- 2020 年 7 月编程语言排行榜
- 深度学习-Faster RCNN论文笔记
- python数据库编程。
- ggplot2饼图和图注顺序不一致如何解决
- 基因集富集分析(Gene Set Enrichment Analysis, GSEA)
- R绘制甲基化和表达谱联合分析热图
- Python字符串操作--寻找所有匹配的位置
- java设计模式-工厂模式