https://github.com/ssbeatty/oms
go 运维平台,实现了隧道,命令分发,文件上传,webSSH
https://github.com/ssbeatty/oms
devops devops-tools go novnc novnc-websockify sftp shell ssh tunnel vnc
Last synced: 7 days ago
JSON representation
go 运维平台,实现了隧道,命令分发,文件上传,webSSH
- Host: GitHub
- URL: https://github.com/ssbeatty/oms
- Owner: ssbeatty
- License: agpl-3.0
- Created: 2020-08-20T06:18:50.000Z (over 5 years ago)
- Default Branch: dev
- Last Pushed: 2024-02-21T12:55:26.000Z (almost 2 years ago)
- Last Synced: 2025-04-01T08:36:40.675Z (10 months ago)
- Topics: devops, devops-tools, go, novnc, novnc-websockify, sftp, shell, ssh, tunnel, vnc
- Language: Go
- Homepage:
- Size: 49.8 MB
- Stars: 191
- Watchers: 4
- Forks: 57
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
- awesome-ops - ssbeatty/oms - 3.0|201|2020-08-20|2024-02-21 | 一个 Golang 开发的简单易用的运维管理平台,实现了资产管理、文件浏览器、批量命令、批量上传文件、VNC 连接和基于自建脚本并行执行的能力 | (运维管理平台)
README
项目简介
本项目使用gin、gorm和ssh、sftp开发。旨在编写一个轻量,易用,多平台的运维项目。
现阶段目的是做一个阉割版的xshell并简单的实现ansible或者saltstack的部分功能。
### API文档
运行后访问 http://127.0.0.1:9090/swagger/index.html
[swagger](./docs/swagger.json)
### 使用说明
1. 安装编译
```shell script
# clone
git clone --recurse-submodules https://github.com/ssbeatty/oms.git
# build frontend
cd web/omsUI
yarn && yarn build
# 打包 oms
# linux
go build -o oms cmd/omsd/main.go
# win
go build -o oms.exe cmd/omsd/main.go
```
2. 启动 创建config.yaml在可执行文件同级 运行即可
```shell script
# configs/config.yaml.example
# 支持mysql postgres sqlite(默认, 仅调试)
app:
name: oms
addr: 127.0.0.1
port: 9090
mode: dev
run_start: false # 是否在运行时打开浏览器 windows
temp_date: 336h # 执行日志的保存时间 默认14天
db:
driver: postgres
user: root
password: 123456
dsn: 127.0.0.1:3306
db_name: oms
```
3. 注册为服务
```shell script
# 支持windows/linux/macos
oms --action install --config config.yaml
# 取消注册
oms --action uninstall
```
> 注意注册为服务程序的运行目录会改变比如windows为C:/System32, 因此要修改配置中data_path为绝对路径。
> logger为相对路径时放在data_path下, 为绝对路径时在指定的路径。
### 目前已经实现的功能
1. web界面[omsUI](https://github.com/lixin59/omsUI/blob/master/README.md)
2. 隧道, 类似`ssh`的`-L`和`-R`
3. cron任务和exec任务的管理
4. ssh命令批量执行
5. 文件批量的上传 流式传输支持大文件
6. 基于`sftp`文件浏览器
7. 基于novnc的vnc viewer
8. 类似playbook的编排任务
### 环境变量
```shell
ENV_SSH_DIAL_TIMEOUT = 30 # ssh连接超时时间 单位秒
ENV_SSH_RW_TIMEOUT = 20 # ssh读写超时时间 单位秒
ENV_SSH_CMD_TIMEOUT = 120 # 执行命令时命令最长的超时时间 单位秒
```
### deploy
> docker-compose.yaml
```yaml
version: '2.3'
services:
oms:
image: ghcr.io/ssbeatty/oms/oms:v0.6.8
restart: always
extra_hosts:
- "host.docker.internal:host-gateway"
ports:
- "9090:9090"
volumes:
- ./data:/opt/oms/data
- ./config:/etc/oms
```
### 如何开发
1. 修改依赖之后执行
```shell
go mod vendor
```
2. 修改了swagger文档后执行
```shell
# docs/gen.go
cd docs
swag init -d ../internal/web/controllers --parseDependency -g api_v1.go -o ./
swag init -d ../internal/web/controllers --parseDependency -g api_tool.go -o ./
```