DevOps - Spug 自动化运维平台

2023-12-13 07:30

本文主要是介绍DevOps - Spug 自动化运维平台,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

关于Spug

官网:https://spug.cc/

Spug:麻雀,麻雀虽小,五脏俱全。

Spug是面向中小型企业设计的轻量级无Agent的自动化运维平台,整合了主机管理、主机批量执行、主机在线终端、文件在线上传下载、应用发布部署、在线任务计划、配置中心、监控、报警等一系列功能。

Spug是上海时巴克科技有限公司旗下的开源运维项目,公司旗下现有产品「Spug开源运维平台」「Spug推送助手」,公司专注为中小企业服务。

产品特性

  • 批量执行

    主机命令在线批量执行

  • 在线终端

    轻量级跳板机,浏览器在线终端管理

  • 文件管理

    主机文件在线上传下载

  • 任务计划

    灵活的在线任务计划

  • 发布部署

    多种发布模式,轻松搞定CICD

  • 配置中心

    抹平不同环境的代码差异

  • 监控中心

    支持网站、端口、进程、自定义监控

  • 报警中心

    支持微信、邮件、钉钉、飞书等报警方式

  • 轻量级

    无 Agent 设计部署方便快捷

    基于SSH协议,无需部署客户端。可直接进行主机管理、应用部署、监控等功能。

  • 美观易用

    使用Ant Design创造高效愉悦的使用体验

    基于 Ant Design 设计,深入每个细节追求用户交互体验,帮助用户决策、减少操作,从而节约用户脑力和体力,让人机交互行为更自然。

  • 完全开源

    前后端完全开源,采用 AGPLv3 许可

    在遵循开源许可的前提下,前后端代码完全开源,方便进行二次开发,打造属于自己的运维自动化平台。

安装

version: "3.3"
services:db:image: mariadb:10.8.2container_name: spug-dbrestart: alwayscommand: --port 3306 --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_civolumes:- ./data/mysql:/var/lib/mysqlports:- "3306:3306"environment:- MYSQL_DATABASE=spug- MYSQL_USER=spug- MYSQL_PASSWORD=spug.cc- MYSQL_ROOT_PASSWORD=spug.ccspug:image: openspug/spug-servicecontainer_name: spugprivileged: truerestart: alwaysvolumes:- ./data/service:/data/spug- ./data/repos:/data/repos- ./data/tools:/data/toolsports:- "80:80"environment:- MYSQL_DATABASE=spug- MYSQL_USER=spug- MYSQL_PASSWORD=spug.cc- MYSQL_HOST=db- MYSQL_PORT=3306depends_on:- db

执行命令

docker-compose up -d

配置管理员账户

以下操作会创建一个用户名为 admin 密码为 spug.dev 的管理员账户,可自行替换管理员账户/密码。

docker exec spug init_spug admin CQNxiv5hCBQy3JzyfodW

飞书机器人

https://open.feishu.cn/open-apis/bot/v2/hook/uuid

java 部署示例

https://spug.cc/blog/example-java/

配置容器打包环境,jdk + maven

# 自行至 https://www.oracle.com/java/technologies/javase/javase-jdk8-downloads.html 下载jdk# 进入容器
docker exec -it spug /bin/bash# 后端部分
# 安装jdk
tar xf /data/tools/jdk-8u371-linux-x64.tar.gz -C /opt
tar xf /data/tools/jdk-11.0.16.1_linux-x64_bin.tar.gz -C /opt# 安装maven
tar xf /data/tools/apache-maven-3.9.3-bin.tar.gz -C /opt# 重启或切换默认环境-配置jdk和maven
# echo -e 'export JAVA_HOME=/opt/jdk1.8.0_371\nexport PATH=$PATH:$JAVA_HOME/bin:/opt/apache-maven-3.9.3/bin' > /etc/profile.d/java.sh
echo 'export JAVA_HOME=/opt/jdk1.8.0_371' > /etc/profile.d/java.sh
echo 'export PATH=$PATH:$JAVA_HOME/bin:/opt/apache-maven-3.9.3/bin' > /etc/profile.d/maven.sh# 临时切换环境
export JAVA_HOME=/opt/jdk1.8.0_371
export JAVA_HOME=/opt/jdk-11.0.16.1# 配置阿里云镜像加速下载和仓库路径
cd /home/devops/spug/data/tools/maven/conf
docker cp settings.xml spug:/opt/apache-maven-3.9.3/conf/settings.xml## [上面步骤已做]
设置 localRepository :
<localRepository>/tools/maven/repo</localRepository>
设置仓库,在160-165行(<mirrors\>标签内)添加以下内容
vi /opt/apache-maven-3.9.3/conf/settings.xml<mirror><id>aliyunmaven</id><mirrorOf>*</mirrorOf><name>阿里云公共仓库</name><url>https://maven.aliyun.com/repository/public</url></mirror>## 安装gradle
参考:https://blog.csdn.net/itScholar001/article/details/130962619
unzip -d /opt /data/tools/gradle-7.2-all.zip# 配置gradle
echo -e 'export GRADLE_HOME=/opt/gradle-7.2 PATH=$PATH:$GRADLE_HOME/bin' > /etc/profile.d/gradle.sh# 前端部分
# 安装 node(npm),需要多版本,低版本与高版本切换使用
下载https://nodejs.org/dist/v12.22.9/node-v12.22.9-linux-x64.tar.xz
下载https://nodejs.org/dist/v14.21.3/node-v14.21.3-linux-x64.tar.xztar xf /data/tools/node-v10.24.1-linux-x64.tar.xz -C /opt
tar xf /data/tools/node-v12.22.9-linux-x64.tar.xz -C /opt
tar xf /data/tools/node-v14.21.3-linux-x64.tar.xz -C /opt# 重启切换默认环境
echo 'export PATH=$PATH:/opt/node-v14.21.3-linux-x64/bin' > /etc/profile.d/node.sh
# 临时切换环境
# export PATH=/opt/node-v10.24.1-linux-x64/bin:$PATH
# export PATH=/opt/node-v12.22.9-linux-x64/bin:$PATH
# export PATH=/opt/node-v14.21.3-linux-x64/bin:$PATH# npm设置淘宝镜像源:
npm config set registry http://registry.npm.taobao.org
npm get registry# 安装yarn,推荐使用yarn来代替npm
source /root/.bashrc
npm install -g yarn# 废弃-未使用-安装git(部分前端项目里引用了git框架导致。。。还得保证拉下来的代码结构需要带上.git文件夹的)
https://www.cnblogs.com/Jim2023/p/17092937.html
tar xf /data/tools/git-2.36.1.tar.gz
cd git-2.36.1
./configure --prefix=/usr/local/git  # 配置git安装路径
make && make install  # 编译安装
环境变量配置
echo -e 'export GIT_PATH=/usr/local/git/bin PATH=$PATH:$GIT_PATH' > /etc/profile.d/git.sh# 废弃-未使用-安装python(部分前端项目里引用了一些框架导致。。。)
https://blog.51cto.com/u_16213461/7183021
tar xf Python-3.11.3.tgz# 退出并重启容器
source /etc/profile
exit
docker restart spug

应用部署

示例:管理工具_后端

代码准备:项目xml增加jar包名与$SPUG_APP_KEY保持一致

<finalName>vuln_manager_api</finalName>示例:<build><finalName>vuln_manager_api</finalName><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build>

1、基本配置

配置Git地址,暂时使用 root 账号,不会出现权限不够的状况,密码出现 @ 需要用 %40 替换
http://root:Luoan%40706@10.92.60.21:1188/luoan-tool/vuln-manager/vuln-manager-api.git飞书通知:https://open.feishu.cn/open-apis/bot/v2/hook/uuid

2、构建配置

文件过滤规则:包含
jar包名字,示例:$SPUG_APP_KEY.jar
代码检出前执行:
代码检出后执行:
mvn clean package -Dmaven.test.skip=true
cp target/$SPUG_APP_KEY.jar .

3、发布配置

部署路径:
/home/vuln-manager/data/app
存储路径:
/home/devops/repos/$SPUG_APP_KEY
版本数量:6
应用发布前执行:应用发布后执行:
cd /home/vuln-manager
docker-compose stop $SPUG_APP_KEY
docker-compose rm -f $SPUG_APP_KEY
docker-compose up -d $SPUG_APP_KEY
sleep 3
docker-compose ps

示例:管理工具_前端

1、基本配置

配置Git地址,暂时使用 root 账号,不会出现权限不够的状况,密码出现 @ 需要用 %40 替换
http://root:Luoan%40706@10.92.60.21:1188/luoan-tool/vuln-manager/vuln-manager-ui.git飞书通知:https://open.feishu.cn/open-apis/bot/v2/hook/uuid

2、构建配置

文件过滤规则:包含
dist代码检出前执行:
# 创建公共node_modules目录
mkdir -p $SPUG_REPOS_DIR/$SPUG_DEPLOY_ID/node_modules代码检出后执行:
$SPUG_REPOS_DIR/$SPUG_DEPLOY_ID实际路径:/home/devops/spug/data/repos/2 转到快捷方式临时目录:/home/devops/spug/data/repos/2_20230802xxxx# 创建软链接,指向公共的node_modules,避免每次发布重复安装依赖包
ln -s $SPUG_REPOS_DIR/$SPUG_DEPLOY_ID/node_modules .# 安装项目依赖
yarn install# 构建(--mode=production 为特定项目用)
yarn run build --mode=production

3、发布配置

部署路径:
/home/vuln-manager/data/html
存储路径:
/home/devops/repos/$SPUG_APP_KEY
版本数量:6
应用发布前执行:应用发布后执行:
cd /home/vuln-manager
docker-compose stop $SPUG_APP_KEY
docker-compose rm -f $SPUG_APP_KEY
docker-compose up -d $SPUG_APP_KEY
sleep 3
docker-compose ps

Spug 页面

http://127.0.0.1
admin
CQNxiv5hCBQy3JzyfodW

遇到的问题

## 登录提示-IP校验问题
在内网部署,暂时关闭了:系统管理 / 系统设置 / 安全设置 / 访问IP校验
https://spug.cc/docs/practice/## 部署阶段-前端
package.json文件
"build": "vue-tsc --noEmit && vite build",
换成了
"build": "vite build",## 查看环境变量
echo "查看环境变量:$SPUG_REPOS_DIR/$SPUG_DEPLOY_ID/$SPUG_APP_KEY"
查看环境变量:/data/repos/1/vuln_manager_api## 部署阶段-后端,打包报错
https://support.qq.com/products/406892/post/168431102010000097/

效果图

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

这篇关于DevOps - Spug 自动化运维平台的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/487598

相关文章

详解如何使用Python构建从数据到文档的自动化工作流

《详解如何使用Python构建从数据到文档的自动化工作流》这篇文章将通过真实工作场景拆解,为大家展示如何用Python构建自动化工作流,让工具代替人力完成这些数字苦力活,感兴趣的小伙伴可以跟随小编一起... 目录一、Excel处理:从数据搬运工到智能分析师二、PDF处理:文档工厂的智能生产线三、邮件自动化:

Python实现自动化Word文档样式复制与内容生成

《Python实现自动化Word文档样式复制与内容生成》在办公自动化领域,高效处理Word文档的样式和内容复制是一个常见需求,本文将展示如何利用Python的python-docx库实现... 目录一、为什么需要自动化 Word 文档处理二、核心功能实现:样式与表格的深度复制1. 表格复制(含样式与内容)2

pytest+allure环境搭建+自动化实践过程

《pytest+allure环境搭建+自动化实践过程》:本文主要介绍pytest+allure环境搭建+自动化实践过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录一、pytest下载安装1.1、安装pytest1.2、检测是否安装成功二、allure下载安装2.

如何基于Python开发一个微信自动化工具

《如何基于Python开发一个微信自动化工具》在当今数字化办公场景中,自动化工具已成为提升工作效率的利器,本文将深入剖析一个基于Python的微信自动化工具开发全过程,有需要的小伙伴可以了解下... 目录概述功能全景1. 核心功能模块2. 特色功能效果展示1. 主界面概览2. 定时任务配置3. 操作日志演示

Python使用python-docx实现自动化处理Word文档

《Python使用python-docx实现自动化处理Word文档》这篇文章主要为大家展示了Python如何通过代码实现段落样式复制,HTML表格转Word表格以及动态生成可定制化模板的功能,感兴趣的... 目录一、引言二、核心功能模块解析1. 段落样式与图片复制2. html表格转Word表格3. 模板生

使用Python自动化生成PPT并结合LLM生成内容的代码解析

《使用Python自动化生成PPT并结合LLM生成内容的代码解析》PowerPoint是常用的文档工具,但手动设计和排版耗时耗力,本文将展示如何通过Python自动化提取PPT样式并生成新PPT,同时... 目录核心代码解析1. 提取 PPT 样式到 jsON关键步骤:代码片段:2. 应用 JSON 样式到

在.NET平台使用C#为PDF添加各种类型的表单域的方法

《在.NET平台使用C#为PDF添加各种类型的表单域的方法》在日常办公系统开发中,涉及PDF处理相关的开发时,生成可填写的PDF表单是一种常见需求,与静态PDF不同,带有**表单域的文档支持用户直接在... 目录引言使用 PdfTextBoxField 添加文本输入域使用 PdfComboBoxField

深入理解Apache Kafka(分布式流处理平台)

《深入理解ApacheKafka(分布式流处理平台)》ApacheKafka作为现代分布式系统中的核心中间件,为构建高吞吐量、低延迟的数据管道提供了强大支持,本文将深入探讨Kafka的核心概念、架构... 目录引言一、Apache Kafka概述1.1 什么是Kafka?1.2 Kafka的核心概念二、Ka

在Android平台上实现消息推送功能

《在Android平台上实现消息推送功能》随着移动互联网应用的飞速发展,消息推送已成为移动应用中不可或缺的功能,在Android平台上,实现消息推送涉及到服务端的消息发送、客户端的消息接收、通知渠道(... 目录一、项目概述二、相关知识介绍2.1 消息推送的基本原理2.2 Firebase Cloud Me

Python实现自动化接收与处理手机验证码

《Python实现自动化接收与处理手机验证码》在移动互联网时代,短信验证码已成为身份验证、账号注册等环节的重要安全手段,本文将介绍如何利用Python实现验证码的自动接收,识别与转发,需要的可以参考下... 目录引言一、准备工作1.1 硬件与软件需求1.2 环境配置二、核心功能实现2.1 短信监听与获取2.