自动化运维平台Spug

关于Spug

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

特性

  • 批量执行: 主机命令在线批量执行
  • 在线终端: 主机支持浏览器在线终端登录
  • 任务计划: 灵活的在线任务计划
  • 发布部署: 支持自定义发布部署流程
  • 配置中心: 支持KV、文本、json等格式的配置
  • 监控中心: 支持站点、端口、进程、自定义等监控
  • 报警中心: 支持短信、邮件、钉钉、微信等报警方式
  • 优雅美观: 基于 Ant Design 的UI界面
  • 开源免费: 前后端代码完全开源

about

———————————————————————————–

docker部署

操作系统

一键安装脚本在Centos7/8和Ubuntu 18.04验证通过,其他版本暂未验证。

安装命令

$ curl https://spug.dev/installer/spug-installer | bash

默认设置

# 默认代码安装路径:
/data/spug

# 默认创建的数据库账号
用户:spug   
密码:spug.dev


# 默认创建的系统管理员
账户:admin  
密码:spug.dev

安全建议

  • 默认安装的 Redis 服务监听在 127.0.0.1 但未设置密码,如需启用密码认证,配置使用带密码的 Redis 服务?假设 Redis 密码为 foo123,则需要更改以配置文件 spug_api/spug/settings.py 或者 overrides.py 如下内容

    自定义的配置可以在 spug_api/spug/ 目录下创建 overrides.py 文件来覆盖默认的配置。

    $ vi spug_api/spug/settings.py
    
    CACHES = {
        "default": {
            "BACKEND": "django_redis.cache.RedisCache",
            "LOCATION": "redis://:foo123@127.0.0.1:6379/1",
            "OPTIONS": {
                "CLIENT_CLASS": "django_redis.client.DefaultClient",
            }
        }
    }
    
    CHANNEL_LAYERS = {
        "default": {
            "BACKEND": "channels_redis.core.RedisChannelLayer",
            "CONFIG": {
                "hosts": ["redis://:foo123@127.0.0.1:6379/0"],
            },
        },
    }
  • 默认安装了 Mariadb 作为数据存储服务,监听在 127.0.0.1 创建了用户名为 spug 密码为 spug.dev 的用户,安全起见请自行更改该密码,并修改 /data/spug/spug_api/spug/overrides.py 使用新密码。
  • 确保服务端接收到请求 HTTP Header 的 X-Real-IP 为真实的客户端地址,Spug 会使用该IP提高安全性(当登用户的IP发生变化时Token自动失效)。

———————————————————————————–

手动安装

准备环境

  • Python 3.6及以上
  • Mysql 5.5及以上

安装步骤

以下安装步骤假设项目部署在一台 Centos7 系统的 /data/spug 目录下。

1. Clone项目代码

$ git clone https://github.com/openspug/spug /data/spug
$ cd /data/spug
$ git checkout x.x.x   # x.x.x 为指定的发行版本,例如 git checkout v2.2.2 

2. 下载 已编译打包后的前端项目

将下载好的前端压缩包解压到指定目录,x.x.x 是的你下载好的压缩包版本

访问 Github 比较慢的情况下,可以在尝试在 Gitee 下载。

$ tar xf spug_web_x.x.x.tar.gz -C /data/spug/spug_web/;

3. 创建运行环境

# 安装依赖
$ yum install mariadb-devel python3-devel gcc openldap-devel redis nginx supervisor

# 创建虚拟环境
$ cd /data/spug/spug_api
$ python3 -m venv venv
$ source venv/bin/activate

# 安装python包
$ pip install -r requirements.txt -i https://pypi.doubanio.com/simple/
$ pip install gunicorn mysqlclient -i https://pypi.doubanio.com/simple/

4. 修改后端配置

后端默认使用的 Sqlite 数据库,通过修改配置使用 MYSQL 作为后端数据库,如何使用SqlServer数据库?

在 spug_api/spug/ 目录下创建 overrides.py 文件,启动后端服务后会自动覆盖默认的配置,避免直接修改 settings.py 以便于后期获取新版本。

$ vi spug_api/spug/overrides.py

DEBUG = False
ALLOWED_HOSTS = ['127.0.0.1']

DATABASES = {
    'default': {
        'ATOMIC_REQUESTS': True,
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'spug',             # 替换为自己的数据库名,请预先创建好编码为utf8mb4的数据库
        'USER': 'spug_user',        # 数据库用户名
        'PASSWORD': 'spug_passwd',  # 数据库密码
        'HOST': '127.0.0.1',        # 数据库地址
        'OPTIONS': {
            'charset': 'utf8mb4',
            'sql_mode': 'STRICT_TRANS_TABLES',
            #'unix_socket': '/opt/mysql/mysql.sock' # 如果是本机数据库,且不是默认安装的Mysql,需要指定Mysql的socket文件路径
        }
    }
}

5. 初始化数据库

$ cd /data/spug/spug_api
$ python manage.py initdb

6. 创建默认管理员账户

$ python manage.py useradd -u admin -p spug.dev -s -n 管理员

# -u 用户名
# -p 密码
# -s 超级管理员
# -n 用户昵称

7. 创建启动服务脚本

$ vi /etc/supervisord.d/spug.ini

[program:spug-api]
command = bash /data/spug/spug_api/tools/start-api.sh
autostart = true
stdout_logfile = /data/spug/spug_api/logs/api.log
redirect_stderr = true

[program:spug-ws]
command = bash /data/spug/spug_api/tools/start-ws.sh
autostart = true
stdout_logfile = /data/spug/spug_api/logs/ws.log
redirect_stderr = true

[program:spug-worker]
command = bash /data/spug/spug_api/tools/start-worker.sh
autostart = true
stdout_logfile = /data/spug/spug_api/logs/worker.log
redirect_stderr = true

[program:spug-monitor]
command = bash /data/spug/spug_api/tools/start-monitor.sh
autostart = true
stdout_logfile = /data/spug/spug_api/logs/monitor.log
redirect_stderr = true

[program:spug-scheduler]
command = bash /data/spug/spug_api/tools/start-scheduler.sh
autostart = true
stdout_logfile = /data/spug/spug_api/logs/scheduler.log
redirect_stderr = true

8. 创建前端nginx配置文件

$ vi /etc/nginx/conf.d/spug.conf

server {
        listen 80;
        server_name _;     # 修改为自定义的访问域名
        root /data/spug/spug_web/build/;

        location ^~ /api/ {
                rewrite ^/api(.*) $1 break;
                proxy_pass http://127.0.0.1:9001;
                proxy_redirect off;proxy_set_header X-Real-IP $remote_addr;
        }

        location ^~ /api/ws/ {
                rewrite ^/api(.*) $1 break;
                proxy_pass http://127.0.0.1:9002;
                proxy_http_version 1.1;
                proxy_set_header Upgrade $http_upgrade;
                proxy_set_header Connection "Upgrade";
                proxy_set_header X-Real-IP $remote_addr;
        }

        error_page 404 /index.html;
}

注意:如果你没有在 spug.conf 中指定 server_name 则需要把 /etc/nginx/nginx.conf 中默认的 server 块注释或删除后才能正常访问, 否则会打开 Nginx 默认页面。

9. 启动服务

# 设置开机启动
$ systemctl enable nginx
$ systemctl enable redis
$ systemctl enable supervisord

# 启动服务
$ systemctl restart nginx
$ systemctl restart redis
$ systemctl restart supervisord

10. 访问测试

通过浏览器访问测试。

发表评论