# opscloud
**Repository Path**: opscloud/opscloud
## Basic Information
- **Project Name**: opscloud
- **Description**: OpsCloud是云时代的全工具链集成运维平台(DevOps)
- **Primary Language**: Java
- **License**: Not specified
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 16
- **Forks**: 13
- **Created**: 2020-03-17
- **Last Updated**: 2025-05-07
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
Welcome to the opscloud wiki!
# OpsCloud简介
Opscloud面向云的DevOps平台,为企业内的研发提供运维服务
开源协议:GNU General Public License v2
### 最佳用户体验
+ 显示器分辨率大于或等于1080P
+ 浏览器Chrome/Safari
XTerm演示视频
### web终端
+ 支持批量登录
+ 支持命令同步
+ 支持会话复制(单机多终端)
+ 支持会话心跳,即使过SLB也可以保持会话
+ 审计日志限流(过滤top,tail等命令输出日志)
+ 支持全平台web终端(playbook,服务器管理都可以打开终端)
+ 支持高/低权限登录
Playbook演示视频
### ansible-playbook
+ 多线程执行
+ 批量执行结果精确展示(成功数量/失败数量)
+ 支持自定义变量
+ 支持tags
### aliyun-ecs
+ 非阿里云ecs模版实现开机(全部oc实现)
+ 开通服务器后自动录入jumpserver/zabbix
+ API接口文档
+ knife4j接口文档( https://doc.xiaominfo.com/knife4j )
+ example.org/oc3/doc.html
+ example.org/oc3/swagger-ui.html
+ 平台特性
+ 基于角色的访问控制RBAC(Role-Based Access Control),LDAP完整支持
+ 配置文件加密(密码, AK),数据库敏感字段加密
+ 代码即文档,全接口API
+ 前后端分离,支持跨域部署
+ Java Springboot 开源的DevOps
+ 这是个人项目,基本也是个人完成,前端用了vue2(d2admin框架非常炫酷)
+ 自动化运维特性
+ 外部平台或工具原生API调用
+ 多版本API支持(逐步升级)
+ 以用户纬度数据映射全自动配置管理
+ 核心功能
+ 堡垒机
+ 终端版Jumpserver全自动配置
+ Web终端
+ 支持多窗口批量操作(看日志利器)
+ 支持低权限/高权限登录(工单中申请权限)
+ Zabbix(API4.0)全自动运维
+ 多云支持
+ 阿里云
+ AWS
+ 腾讯云(未开发)
+ 私有云VMware-vSphere
+ 账户对多平台自动映射(免去日常权限申请和配置)
# 安装文档
#### 环境安装Oracle-JDK 1.8 & Maven 3
* JDK 1.8下载地址 [http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html](http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html)
* 下载并安装 jdk-8u251-linux-i586.rpm
* Maven 3下载地址[http://maven.apache.org](http://maven.apache.org)
* 在/etc/profile中添加环境变量
```bash
# Export environment variables
export JAVA_HOME=/path/to/jdk
export M2_HOME=/path/to/maven
export PATH=$JAVA_HOME/bin:$M2_HOME/bin:$PATH
```
#### 环境安装Mysql 8.0
* 推荐使用阿里云RDS\(MySQL 8.0\)
* 创建opscloud数据库\(字符集utf8mb4\)
* opscloud不支持Mysql5.x版本
#### 环境安装Redis 3
* 推荐使用阿里云Redis
#### Clone项目代码
```bash
$ git clone https://github.com/ixrjog/opscloud
```
#### 导入SQL
```
# sql文件位置 other/database/3.0.0/opscloud.sql
# 自行修改127.0.0.1为你的mysql服务器ip或域名
$ mysql -uopscloud -p -h127.0.0.1 opscloud < ./opscloud.sql
```
#### 修改配置文件
```bash
# clone项目代码
$ git clone https://github.com/ixrjog/opscloud
# 查看所有配置文件,各模块配置文件独立,需要分别配置
$ find . -name "application-*-open.yml" | grep src
./opscloud-common/src/main/resources/application-common-open.yml
./opscloud-vmware-vcsa/src/main/resources/application-vcsa-open.yml
./opscloud-cloud/src/main/resources/application-cloud-open.yml
./opscloud-zabbix/src/main/resources/application-zabbix-open.yml
./opscloud-jumpserver/src/main/resources/application-jumpserver-open.yml
./opscloud-aws-core/src/main/resources/application-aws-open.yml
./opscloud-ldap/src/main/resources/application-ldap-open.yml
./opscloud-gitlab/src/main/resources/application-gitlab-open.yml
./opscloud-aliyun-core/src/main/resources/application-aliyun-open.yml
./opscloud-ansible/src/main/resources/application-ansible-open.yml
```
#### 源码编译
```bash
# opscloud采用多环境配置文件开发,open对应的是开源版本配置
# 对应的配置文件eg: application-*-open.yml
#
$ mvn -Dmaven.test.skip=true clean package -P open -U -am -pl opscloud-manage
# jar包路径
# opscloud-manage/target/opscloud-manage-open.jar
```
#### 项目启动
```bash
# 首次安装生成数据目录(集群部署可用NAS共享)
# 若使用低权限启动确保opscloud可以读写以下目录
$ mkdir -p /data/opscloud-data/ansible
$ mkdir -p /data/opscloud-data/log
$ mkdir -p /data/opscloud-data/xterm
# 部署 /opt/opscloud3/opscloud-manage-open.jar
$ mkdir -p /opt/opscloud3/
$ \cp opscloud-manage/target/opscloud-manage-open.jar /opt/opscloud3/
# JVM内存值请自行调优(下列命令适用于4G内存服务器启动)
# ${JASYPT_PASSWORD} 变量为opscloud加密密钥,用于数据加解密
# 可将变量写入/etc/profile
# export JASYPT_PASSWORD = '请使用高强度字符串'
$java -Xms2048m -Xmx2048m -Xmn1024m -Xss256k -XX:MaxMetaspaceSize=128M \
-XX:MetaspaceSize=128M -XX:+DisableExplicitGC -XX:+UseConcMarkSweepGC \
-Djasypt.encryptor.password=${JASYPT_PASSWORD} -jar /opt/opscloud3/opscloud-manage-open.jar
```
#### Ansible安装
+ 可安装最新版本2.9+
```
# CentOS7 eg:
yum install epel-release -y
yum install ansible -y
```
#### 主配置文件修改
+ 文件路径./opscloud-manage/src/main/resources/application-open.yml
+ 修改host中的redis服务器域名或ip
+ 修改password中的密码,若没有密码则留空
```
spring:
profiles:
include: common,account-open,zabbix-open,ldap-open,jumpserver-open,aliyun-open,aws-open,gitlab-open,vcsa-open,cloud,ansible-open,xterm-open
redis:
host: redis.opscloud.top
port: 6379
password: 123456
```
+ 修改opscloud.url中的mysql.opscloud.top为你的mysql域名或ip
+ 修改opscloud.username为你的mysql用户名
+ 修改opscloud.password为你的mysql密码
+ 修改jumpserver.url中的jumpserver.mysql.opscloud.top为你的jumpserver-mysql域名或ip,没有jumpserver则不要修改
+ 修改jumpserver.username为你的jumpserver-mysql用户名
+ 修改jumpserver.password为你的jumpserver-mysql密码
```
app:
datasource:
opscloud:
url: jdbc:mysql://mysql.opscloud.top:3306/opscloud?useUnicode=true&characterEncoding=utf8&autoReconnect=true&failOverReadOnly=false&useInformationSchema=true&tinyInt1isBit=true&nullCatalogMeansCurrent=true&serverTimezone=UTC&allowMultiQueries=true
username: opscloud
password: 123456
driver-class-name: com.mysql.jdbc.Driver
minimum-idle: 3
maximum-pool-size: 10
max-lifetime: 30000
connection-test-query: SELECT 1
jumpserver:
url: jdbc:mysql://jumpserver.mysql.opscloud.top:3306/jumpserver?useUnicode=true&characterEncoding=utf8&autoReconnect=true
username: jumpserver
password: 123456
driver-class-name: com.mysql.cj.jdbc.Driver
minimum-idle: 3
maximum-pool-size: 10
max-lifetime: 30000
connection-test-query: SELECT 1
```
#### 阿里云配置
+ 文件路径./opscloud-aliyun-core/src/main/resources/application-aliyun-open.yml
+ 修改accessKeyId/secret为你的阿里云主账户AK
+ regionIds可填写需要扫描的region, opscloud只会扫描填写的region
+ ECS管理只支持 mstart:true的账户(此值唯一)
+ RAM管理支持多个阿里云主账户
```
# 阿里云AK配置
# uid 企业别名(主账户id)
# regionIds 数组可以写多个
aliyun:
accounts:
-
uid: 1000000000000001
master: true
name: '主账户'
accessKeyId: YOUR_ACCESS_KEY_ID
secret: YOUR_SECRET_KEY
regionId: cn-hangzhou
regionIds:
- cn-hangzhou
- cn-hongkong
- us-west-1
- cn-shanghai
-
uid: 1000000000000002
master: false
name: '第2账户'
accessKeyId: YOUR_ACCESS_KEY_ID
secret: YOUR_SECRET_KEY
regionId: cn-hangzhou
regionIds:
- cn-hangzhou
```
#### Ansible配置
+ 文件路径./opscloud-ansible/src/main/resources/application-ansible-open.yml
+ 修改Ansible命令配置
+ dataPath/logPath可自定义修改
+ 将连接主机的私钥保存到${dataPath}/private_key/id_rsa
+ opscloud支持低权限启动调用ansible
```
# 生产环境 CentOS 7
# yum install ansible
# https://docs.ansible.com/ansible/latest/reference_appendices/config.html
# ansible.cfg
# 忽略主机文件中的特殊字符比如`-`
# force_valid_group_names = ignore
# 禁用警告信息
# deprecation_warnings = False
# inventoryPath: ${dataPath}/inventory
# scriptPath: ${dataPath}/script
# playbookPath: ${dataPath}/playbook
# privateKey: ${dataPath}/private_key/id_rsa
# 开发者建议: 虽然可以自定义路径,但建议使用oc数据目录下的相对路径
# oc数据目录 /data/opscloud-data oc集群服务器可用NAS存储
# 例如 /data/opscloud-data/ansible
ansible:
version: 2.9.6
bin: /bin/ansible
dataPath: /data/opscloud-data/ansible
playbookBin: /bin/ansible-playbook
logPath: /data/opscloud-data/log/ansible
```
#### 前端部署
```
# 创建前端目录
$ mkdir -p /opt/opscloud3-static
$ cd /opt/opscloud3-static
# Clone项目代码
$ git clone https://github.com/ixrjog/opscloud-web-dist
```
#### 安装Nginx
```
# CentOS7 eg:
$ yum install epel-release
$ yum install nginx
```
#### 配置Nginx
```
$ mkdir -p /data/logs/oc3
$ cd /etc/nginx/conf.d
$ vim vhost_oc3.conf
# 配置文件内容
upstream upstream.opscloud3 {
server 127.0.0.1:8080 weight=2;
}
server {
listen 80;
server_name oc3.opscloud.top;
client_max_body_size 100m;
# 首页重定向
rewrite ^/+$ https://oc3.opscloud.top/index.html permanent;
location /oc3/ {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://upstream.opscloud3;
proxy_http_version 1.1;
proxy_buffering off;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
location / {
root /opt/opscloud3-static/;
}
location /status {
return 200;
}
access_log /data/logs/oc3/access.log main;
}
# 启动nginx
$ nginx start
```
#### 前端Aliyun-SLB配置
+ 如果在阿里云部署前端可以使用SLB代理Nginx实现集群高可用&https
+ opscloud使用了WebSocket协议,Web终端支持心跳保持会话
+ SLB配置监听
+ 负载均衡协议HTTPS
+ 后端协议HTTP
+ 启用HTTP2.0
+ 连接空闲超时时间(秒) 15
+ 连接请求超时时间(秒) 60
#### 欢迎提供更为详细的安装文档
+ ixrjog@qq.com