rpki/scripts/README.md
2026-07-17 09:51:53 +08:00

219 lines
5.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 脚本说明
`scripts/` 目录用于离线安装、启动、健康检查、关闭和清理。
所有脚本建议在仓库根目录执行:
```bash
bash scripts/00_0_install.sh
```
## 目录
- [推荐流程](#推荐流程)
- [环境变量文件](#环境变量文件)
- [00 安装](#00-安装)
- [00 Pre-Check](#00-pre-check)
- [01 启动 Server 和 Console](#01-启动-server-和-console)
- [02 自检](#02-自检)
- [03 关闭 Server 和 Console](#03-关闭-server-和-console)
- [04 清理](#04-清理)
- [10 生成证书](#10-生成证书)
- [11 启动 Client](#11-启动-client)
- [12 关闭 Client](#12-关闭-client)
- [Windows 路径注意事项](#windows-路径注意事项)
## 推荐流程
```bash
# 1. 加载镜像并执行 pre-check。
bash scripts/00_0_install.sh
# 2. 启动真实 server 和 console。
bash scripts/01_start.sh --mode tcp
# 3. 检查 server 和 console 是否正常。
bash scripts/02_self_check.sh
# 4. 关闭 server 和 console。
bash scripts/03_shutdown.sh --mode tcp
# 5. 清理 server 运行产生的文件。
bash scripts/04_cleanup.sh
```
client 单独启动和关闭:
```bash
bash scripts/11_start_client.sh --mode tcp
bash scripts/12_shutdown_client.sh --mode tcp
```
支持的模式:
- server`tcp``tls``ssh``base`
- client`tcp``tls``ssh`
## 环境变量文件
`01_start.sh` 会读取根目录下的 `environment.server`。如果文件存在,会将其中所有 `KEY=VALUE` 同步到 `deploy/server/.env`
示例:
```env
RPKI_RTR_CCR_HOST_DIR=/opt/rpki-rtr/data
RPKI_RTR_SLURM_HOST_DIR=/opt/rpki-rtr/data
RPKI_RTR_DB_HOST_DIR=/opt/rpki-rtr/rtr-db
RPKI_RTR_LOG_HOST_DIR=/opt/rpki-rtr/logs/server
RPKI_RTR_REPORT_HOST_DIR=/opt/rpki-rtr/report
```
`11_start_client.sh` 会读取根目录下的 `environment.client`。如果文件存在,会将其中所有 `KEY=VALUE` 同步到 `deploy/client/.env`
如果 `environment.server``environment.client` 不存在,对应脚本会跳过更新,直接使用已有的 deploy `.env` 文件。
## 00 安装
`00_0_install.sh` 用于从 `images/` 目录加载离线 Docker 镜像,更新 deploy `.env` 中的镜像名,然后执行 pre-check。
默认镜像包查找规则:
- server`images/rpki-rtr-*.tar`,排除 `rpki-rtr-debug-client-*.tar`
- client`images/rpki-rtr-debug-client-*.tar`
- console`images/rpki-console-ui-*.tar`
也可以显式指定镜像包:
```bash
bash scripts/00_0_install.sh \
--server-tar images/rpki-rtr-amd64-v1.2.tar \
--client-tar images/rpki-rtr-debug-client-amd64-v1.2.tar \
--console-tar images/rpki-console-ui-amd64-v1.0.tar
```
脚本会从 `docker load` 输出中解析真实镜像名,并写入:
- `deploy/server/.env``RPKI_RTR_SERVER_IMAGE`
- `deploy/console/.env``RPKI_CONSOLE_UI_IMAGE`
## 00 Pre-Check
`00_1_pre_check.sh` 会在 `.precheck/` 下准备隔离测试数据,使用仓库里的 Docker Compose 文件启动 server 和 debug client然后检查
- admin health 接口返回正常。
- server 写出了 source report。
- debug client 收到了 EndOfData 和 payload summary。
- pre-check 日志中没有 fatal 错误模式。
相关辅助脚本:
- `00_2_generate_ccr.sh`:生成固定的 CCR 测试文件。
- `00_2_pre_check_prepare.sh`:创建 `.precheck/` 数据、SLURM 文件和 env 文件。
- `00_3_pre_check_cleanup.sh`:停止 pre-check 容器并清理 `.precheck/`
## 01 启动 Server 和 Console
`01_start.sh` 用于启动真实的 RTR server 和 console。
```bash
bash scripts/01_start.sh --mode tcp
```
启动后脚本会检查容器是否进入 `running` 状态。如果容器启动后退出,脚本会打印 compose 状态和最近日志,然后报错退出,不会继续打印 `Start Finished`
常用参数:
```bash
bash scripts/01_start.sh --mode tls
bash scripts/01_start.sh --mode ssh
bash scripts/01_start.sh --wait 60
bash scripts/01_start.sh --env ./environment.server
```
注意console 不读取 `environment.server`,只使用 `deploy/console/.env`
## 02 自检
`02_self_check.sh` 用于检查 `01_start.sh` 启动的 server 和 console 是否正常。
```bash
bash scripts/02_self_check.sh
```
检查内容包括:
- server 容器是否 running。
- console 容器是否 running。
- RTR TCP 端口是否可连接。
- admin health 接口是否健康。
- console 端口和 HTTP 根路径是否可访问。
如果启动较慢,可以增加等待时间:
```bash
bash scripts/02_self_check.sh --wait 120
```
## 03 关闭 Server 和 Console
`03_shutdown.sh` 用于关闭 `01_start.sh` 启动的服务。
```bash
bash scripts/03_shutdown.sh --mode tcp
```
脚本会先关闭 console再关闭 RTR server。
## 04 清理
`04_cleanup.sh` 用于删除 server 运行产生的目录:
- `logs/`
- `report/`
- `rtr-db/`
推荐先关闭服务,再清理:
```bash
bash scripts/03_shutdown.sh
bash scripts/04_cleanup.sh
```
清理前脚本会检查 `rpki-rtr` 是否仍在运行。如果仍在运行,会拒绝清理。只有明确需要强制清理时才使用:
```bash
bash scripts/04_cleanup.sh --force
```
清理脚本会拒绝删除仓库根目录之外的路径。如果某一项清理失败,会继续清理后续项,最后返回失败。
## 10 生成证书
`10_generate_certs.sh` 用于生成 TLS/SSH 模式需要的本地证书材料(测试用)。
```bash
bash scripts/10_generate_certs.sh
```
## 11 启动 Client
`11_start_client.sh` 用于启动 RTR debug client。
```bash
bash scripts/11_start_client.sh --mode tcp
bash scripts/11_start_client.sh --mode tls
bash scripts/11_start_client.sh --mode ssh
```
如果 `environment.client` 存在,脚本会将其中所有 `KEY=VALUE` 同步到 `deploy/client/.env`;如果不存在,则直接使用已有的 `deploy/client/.env`
## 12 关闭 Client
`12_shutdown_client.sh` 用于关闭 `11_start_client.sh` 启动的 client。
```bash
bash scripts/12_shutdown_client.sh --mode tcp
```
关闭时建议使用和启动时相同的 mode。