GitHub - oldmuster/opscloud: 运维管理平台(阿里云),自动同步阿里云配置信息,给研发使用的跳板机,批量运维,Zabbix管理等功能 · GitHub
Skip to content

oldmuster/opscloud

 
 

Folders and files

Repository files navigation

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接口文档

  • 平台特性

    • 基于角色的访问控制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

# 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项目代码

$ 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

修改配置文件

# 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

源码编译

# 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

项目启动

# 首次安装生成数据目录(集群部署可用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

欢迎提供更为详细的安装文档

About

运维管理平台(阿里云),自动同步阿里云配置信息,给研发使用的跳板机,批量运维,Zabbix管理等功能

Resources

Stars

Watchers

Forks

Packages

Contributors

Languages

  • Java 91.9%
  • TSQL 8.1%