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.2
    container_name: spug-db
    restart: always
    command: --port 3306 --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci
    volumes:
      - ./data/mysql:/var/lib/mysql
    ports:
      - "3306:3306"
    environment:
      - MYSQL_DATABASE=spug
      - MYSQL_USER=spug
      - MYSQL_PASSWORD=spug.cc
      - MYSQL_ROOT_PASSWORD=spug.cc
  spug:
    image: openspug/spug-service
    container_name: spug
    privileged: true
    restart: always
    volumes:
      - ./data/service:/data/spug
      - ./data/repos:/data/repos
      - ./data/tools:/data/tools
    ports:
      - "80:80"
    environment:
      - MYSQL_DATABASE=spug
      - MYSQL_USER=spug
      - MYSQL_PASSWORD=spug.cc
      - MYSQL_HOST=db
      - MYSQL_PORT=3306
    depends_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.xz

tar 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/

效果图

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/240073.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

[Angular] 笔记1:开发设置 , 双向绑定

1 设置开发环境 1.1 安装 node 下载 node&#xff0c;因为要使用 npm 工具&#xff0c;教程中使用 Angualr 14, 最新版 node 20 用不了&#xff0c;安装 node 16 就可以。 1.2 安装 Angular CLI Angular CLI 是用于创建 Angular 工程的工具集&#xff0c;使用如下命令&…

redis的深度理解

上篇博客我们说到了redis的基本概念和基本操作&#xff0c;本篇我们就更深入去了解一些redis的操作和概念&#xff0c;我们就从red的主从同步、redis哨兵模式和redis集群三个方面来了解redis数据库 一、主从同步 像MySQL一样&#xff0c;redis是支持主从同步的&#xff0c;而…

面试 JVM 八股文五问五答第二期

面试 JVM 八股文五问五答第二期 作者&#xff1a;程序员小白条&#xff0c;个人博客 相信看了本文后&#xff0c;对你的面试是有一定帮助的&#xff01; ⭐点赞⭐收藏⭐不迷路&#xff01;⭐ 1.JVM运行时数据区有几部分?&#xff08;JVM内存布局&#xff09;虚拟机栈和本地方…

nodejs微信小程序+python+PHP社区居民信息管理及数据分析系统-计算机毕业设计推荐django

目 录 摘 要 I ABSTRACT II 目 录 II 第1章 绪论 1 1.1背景及意义 1 1.2 国内外研究概况 1 1.3 研究的内容 1 第2章 相关技术 3 2.1 nodejs简介 4 2.2 express框架介绍 6 2.4 MySQL数据库 4 第3章 系统分析 5 3.1 需求分析 5 3.2 系统可行性分析 5 3.2.1技术可行性&#xff1a;…

SQL数列

SQL数列 1、数列概述2、SQL数列2.1、简单递增序列2.2、等差数列2.3、等比数列3、SQL数列的应用3.1、连续问题3.2、多维分析1、数列概述 数列是最常见的数据形式之一,实际数据开发场景中遇到的基本都是有限数列。常见的数列例如:简单递增序列、等差数列、等比数列等 如何充分…

汽车IVI中控开发入门及进阶(十一):ALSA音频

前言 汽车中控也被称为车机、车载多媒体、车载娱乐等,其中音频视频是非常重要的部分,音频比如播放各种格式的音乐文件、播放蓝牙接口的音乐、播放U盘或TF卡中的音频文件,如果有视频文件也可以放出音频,看起来很简单,在windows下音乐播放器很多,直接打开文件就能播放各…

记录 | linux安装Manim

linux 安装 Manim sudo apt update sudo apt install build-essential python3-dev libcairo2-dev libpango1.0-dev ffmpeg sudo apt install xdg-utilsconda create manim_py39 python3.9 conda activate manim_py39pip install manim安装好环境后来测试一个例程&#xff0c;…

多维时序 | MATLAB实现BWO-CNN-BiGRU-Multihead-Attention多头注意力机制多变量时间序列预测

多维时序 | MATLAB实现BWO-CNN-BiGRU-Multihead-Attention多头注意力机制多变量时间序列预测 目录 多维时序 | MATLAB实现BWO-CNN-BiGRU-Multihead-Attention多头注意力机制多变量时间序列预测预测效果基本介绍模型描述程序设计参考资料 预测效果 基本介绍 MATLAB实现BWO-CNN-B…

向ChatGPT提特殊问题,可提取原始训练数据!

随着ChatGPT等模型的参数越来越大&#xff0c;预训练数据也呈指数级增长。谷歌DeepMind、华盛顿大学、康奈尔大学等研究人员发现,无论是开源还是闭源模型&#xff0c;在训练过程中皆能记住一定数量的原始训练数据样本。 如果使用特定的恶意攻击&#xff0c;便能轻松地从模型中…

Pytorch中Group Normalization的具体实现

Group Normalization (GN) 是一种用于深度神经网络中的归一化方法&#xff0c;它将每个样本划分为小组&#xff0c;并在每个小组内进行标准化。与批归一化&#xff08;Batch Normalization&#xff09;不同&#xff0c;Group Normalization 不依赖于小批量数据&#xff0c;因此…

论文阅读——ScanQA

ScanQA: 3D Question Answering for Spatial Scene Understanding 输入&#xff1a;点云P和问题Q&#xff0c;输出&#xff1a;答案A 点云p由三维坐标点组成。本文模型使用额外的点云特征&#xff1a;点云高度、颜色、法线和多视图图像特征&#xff0c;这些特征将 2D 外观特征投…

SD-WAN架构:优化连接以提升性能

SD-WAN架构主要分为三种类型&#xff0c;分别为本地架构、支持云的架构、支持云的骨干架构。每一种架构都基于它们利用广域网&#xff08;WAN&#xff09;的方式而有其独特的优势。本文将对三种SD-WAN架构进行简要介绍。 SD-WAN本地架构 SD-WAN本地架构是在现场使用SD-WAN盒或…

MATLAB代码:分布式电源接入对配电网影响分析

微♥关注“电击小子程高兴的MATLAB小屋”获取专属优惠 关键词&#xff1a;分布式电源 配电网 评估 仿真平台&#xff1a;MATLAB 主要内容&#xff1a;代码主要做的是分布式电源接入场景下对配电网运行影响的分析&#xff0c;其中&#xff0c;可以自己设置分布式电源接入…

归并排序的实现

一.思想 归并排序是一种基于分治思想的经典排序算法。其主要思想可以总结为以下几个步骤&#xff1a; 分解&#xff08;Divide&#xff09;&#xff1a; 将原始序列划分为若干子序列&#xff0c;直到每个子序列包含一个或零个元素&#xff0c;即认为这些子序列是有序的。 解决…

Xcode编译速度慢是什么原因?如何提高编译速度?

Hello各位伙伴们好&#xff0c;我是咕噜铁蛋&#xff01;作为一个开发者&#xff0c;我们都希望能够高效地开发应用程序&#xff0c;而编译速度是影响开发效率的重要因素之一。然而&#xff0c;有时候我们会发现在使用 Xcode 进行开发时&#xff0c;编译速度非常慢&#xff0c;…

beebox靶场A3 中等级别 xss通关教程

特别注意&#xff0c;低级和中级的差别在于中级使用了一些函数进行了过滤或转义字符 例如 addslashes() 函数返回在预定义字符之前添加反斜杠的字符串。 预定义字符是&#xff1a; 单引号&#xff08;&#xff09;双引号&#xff08;"&#xff09;反斜杠&#xff08;\&…

国内安卓、iOS在选择广告变现平台上有哪些不同?

流量作为广告变现的基础&#xff0c;如何合理利用流量&#xff0c;发挥其最大价值&#xff0c;是每个媒体都会面临的问题。售卖流量&#xff0c;可以通过聚合SDK进行分发售卖&#xff0c;广告分层需要根据产品本身的表现效果进行调整&#xff0c;不同广告平台在不同的应用里面表…

怎么让gpt帮忙改文章 (1) 快码论文

大家好&#xff0c;今天来聊聊怎么让gpt帮忙改文章 (1)&#xff0c;希望能给大家提供一点参考。 以下是针对论文重复率高的情况&#xff0c;提供一些修改建议和技巧&#xff1a; 怎么让GPT帮忙改文章 一、背景介绍 随着人工智能的发展&#xff0c;自然语言处理技术已经成为了许…

BeautifulSoup学习

前期准备&#xff1a; pip install bs4 pip install lxml bs解析器 从上面的表格可以看出&#xff0c;lxml解析器可以解析HTML和XML文档&#xff0c;并且速度快&#xff0c;容错能力强&#xff0c;所有推荐使用它。 节点选择器 获取名称 soup BeautifulSoup(<b class&…

【Spark精讲】Spark作业执行原理

基本流程 用户编写的Spark应用程序最开始都要初始化SparkContext。 用户编写的应用程序中&#xff0c;每执行一个action操作&#xff0c;就会触发一个job的执行&#xff0c;一个应用程序中可能会生成多个job执行。一个job如果存在宽依赖&#xff0c;会将shuffle前后划分成两个…
最新文章