admin管理员组

文章数量:1034399

飞书打通私有服务器实现站点服务自动化启停操作

背景

公司事业部经常有站点服务开启停用的需求,每次都需要人工去登服务器执行服务的启停操作,为了更加自动化地处理这个任务,所以利用飞书的webhook以及开源工具来实现这个工作流的无人值守处理,这里给大家提供一个思路参考一下。

解决方案

任务环境:

  • 公司的网络使用爱快来管理
  • 站点部署在客户的自有机房
  • 内网存在一台跳板机可以连接客户的入口机
  • 客户站点NGINX使用容器方式运行

基于以上条件,我们就可以将ssh登录入口机,操作服务器NGINX容器内站点配置、重启容器等操作封装为可调用的api,再通过爱快的端口映射将api暴露出去,最后再把站点的域名、系统、接口地址对应关系录入飞书多维表格,最后使用飞书的自动化流程添加一条规则来监测表格中站点的操作(开启/关闭)来触发自动化调用接口从而实现客户站点的启停。

工具准备

shell脚本封装为接口这里采用 Easy-Manager-Tool 工具,可以将我们登录服务器修改nginx容器配置的操作保存为一个支持外部调用的webhook。

首先在一台开发机上部署:

代码语言:shell复制
# 拉取镜像
docker pull 875730567/easy-manager-tool:latest

# 运行容器,注意库名改变
docker run -d -p 8081:8081 \
--name easy-manager-tool \
-e JAVA_ARGS="--config.database.url=127.0.0.1:3306/easy_manager_tool
--config.database.name=root
--config.database.password=Dev@root2021
--config.intranet-ip=192.168.41.23" \
875730567/easy-manager-tool

部署完之后访问 http://[宿主机IP]:8081/easy即可。

操作脚本封装

首先登录账号,在服务器管理中添加需要使用的服务器。

然后在脚本管理中添加站点操作命令

可以选择将操作预先写入shell文件放在服务器内,这样只需要添加执行该shell脚本的命令。

这里主要是操作容器内的站点配置达到开启的效果,脚本部分参考:

代码语言:shell复制
# 容器名称,请根据实际情况替换
CONTAINER_NAME=dockerfile_nginx

# 在容器内执行命令的函数
execute_in_container() {
    docker exec "$CONTAINER_NAME" bash -c "$1"
}

# 容器内启用单个站点
enable_single_site_container() {
    local site="$1"
    local site_config="/etc/nginx/conf.d/$site"
    local site_disabled="/etc/nginx/conf.d/${site}_disabled"

    execute_in_container "if [ -f '$site_disabled' ]; then mv '$site_disabled' '$site_config' && echo '站点 $site 已启用。'; fi"
}

脚本添加完之后就可以在脚本列表中看到供外部调用的webhook了。

对外开放端口

服务器操作命令封装为接口之后就需要对外开放端口以供飞书去调用。公司网络是使用的爱快,这里我们就要登录爱快后台去网络设置里添加一个对外的端口xx,映射到刚才工具所在宿主机的8081端口,出网地址根据实际情况填写。

打通飞书

最后就是将接口接入到飞书的自动化流程了。在飞书内我们新建一个多维表格,列名为系统名、系统访问地址、操作,主要这三列。在自动化中心添加一个流程,修改操作列为开启时执行发送http请求的操作,内容参考下方:

  • 请求方法:POST
  • 请求URL:http://出网IP:18081/script/hook/[钩子id]
  • 请求体:{}

然后保存并启用这个流程就可以了,同样也可以添加关闭站点的流程。

总结

这里只是提供了一个开启站点的简单示例仅供参考,免去繁琐的手动操作及前端页面的编写,当然可以支持一切你能想到的能使用脚本实现的操作,从而解放双手。

参考资料

  • Easy-Manager-Tool
  • 飞书多维表格自动化流程

飞书打通私有服务器实现站点服务自动化启停操作

背景

公司事业部经常有站点服务开启停用的需求,每次都需要人工去登服务器执行服务的启停操作,为了更加自动化地处理这个任务,所以利用飞书的webhook以及开源工具来实现这个工作流的无人值守处理,这里给大家提供一个思路参考一下。

解决方案

任务环境:

  • 公司的网络使用爱快来管理
  • 站点部署在客户的自有机房
  • 内网存在一台跳板机可以连接客户的入口机
  • 客户站点NGINX使用容器方式运行

基于以上条件,我们就可以将ssh登录入口机,操作服务器NGINX容器内站点配置、重启容器等操作封装为可调用的api,再通过爱快的端口映射将api暴露出去,最后再把站点的域名、系统、接口地址对应关系录入飞书多维表格,最后使用飞书的自动化流程添加一条规则来监测表格中站点的操作(开启/关闭)来触发自动化调用接口从而实现客户站点的启停。

工具准备

shell脚本封装为接口这里采用 Easy-Manager-Tool 工具,可以将我们登录服务器修改nginx容器配置的操作保存为一个支持外部调用的webhook。

首先在一台开发机上部署:

代码语言:shell复制
# 拉取镜像
docker pull 875730567/easy-manager-tool:latest

# 运行容器,注意库名改变
docker run -d -p 8081:8081 \
--name easy-manager-tool \
-e JAVA_ARGS="--config.database.url=127.0.0.1:3306/easy_manager_tool
--config.database.name=root
--config.database.password=Dev@root2021
--config.intranet-ip=192.168.41.23" \
875730567/easy-manager-tool

部署完之后访问 http://[宿主机IP]:8081/easy即可。

操作脚本封装

首先登录账号,在服务器管理中添加需要使用的服务器。

然后在脚本管理中添加站点操作命令

可以选择将操作预先写入shell文件放在服务器内,这样只需要添加执行该shell脚本的命令。

这里主要是操作容器内的站点配置达到开启的效果,脚本部分参考:

代码语言:shell复制
# 容器名称,请根据实际情况替换
CONTAINER_NAME=dockerfile_nginx

# 在容器内执行命令的函数
execute_in_container() {
    docker exec "$CONTAINER_NAME" bash -c "$1"
}

# 容器内启用单个站点
enable_single_site_container() {
    local site="$1"
    local site_config="/etc/nginx/conf.d/$site"
    local site_disabled="/etc/nginx/conf.d/${site}_disabled"

    execute_in_container "if [ -f '$site_disabled' ]; then mv '$site_disabled' '$site_config' && echo '站点 $site 已启用。'; fi"
}

脚本添加完之后就可以在脚本列表中看到供外部调用的webhook了。

对外开放端口

服务器操作命令封装为接口之后就需要对外开放端口以供飞书去调用。公司网络是使用的爱快,这里我们就要登录爱快后台去网络设置里添加一个对外的端口xx,映射到刚才工具所在宿主机的8081端口,出网地址根据实际情况填写。

打通飞书

最后就是将接口接入到飞书的自动化流程了。在飞书内我们新建一个多维表格,列名为系统名、系统访问地址、操作,主要这三列。在自动化中心添加一个流程,修改操作列为开启时执行发送http请求的操作,内容参考下方:

  • 请求方法:POST
  • 请求URL:http://出网IP:18081/script/hook/[钩子id]
  • 请求体:{}

然后保存并启用这个流程就可以了,同样也可以添加关闭站点的流程。

总结

这里只是提供了一个开启站点的简单示例仅供参考,免去繁琐的手动操作及前端页面的编写,当然可以支持一切你能想到的能使用脚本实现的操作,从而解放双手。

参考资料

  • Easy-Manager-Tool
  • 飞书多维表格自动化流程

本文标签: 飞书打通私有服务器实现站点服务自动化启停操作