生产验收标准
本页面是为安装人员和运维团队提供的一套检查清单,旨在确保双方以统一的标准判断“是否可投入运维”。 安装完成并不意味着服务仅仅启动了一次,而是指重启/备份/健康状态/安全/验收凭证均已完整记录。
1. Go / No-Go 标准
| 区分 | Go 标准 | No-Go |
|---|---|---|
| 部署模式 | plantpulse-edge.service 管理容器 | 服务未注册 |
| systemd | plantpulse-edge.service active + enabled | 仅 active 但未 enabled,或处于重启循环 |
| 健康状态 | /api/v1/system/health HTTP 200 + components UP | HTTP 503, component DOWN, 响应持续延迟 |
| 版本 | /api/v1/system/version 的 image_tag / build_date 记录 | tag 未确认,使用旧 image 启动 |
| 网络 | 确认 WAN, PLC NIC, DNS/NTP, Platform API 的可达性 | PLC 网络持有默认路由, NTP 未同步 |
| 安全 | /etc/kopens/credentials.txt root 0600, 初始 admin 密码已更改 | 维持默认/共享密码, 无凭证传递记录 |
| 备份 | backup.sh 1次成功 + .sha256 存在 | 未执行备份, 备份仅存在于同一磁盘 |
| 可恢复性 | doctor.sh 或生成 acceptance log | 故障时无凭证可传 |
若有任何一项为 No-Go,请勿投入运维,应遵循 安装问题解决 或 容器模式运维 的升级 (escalation) 流程。
2. 安装前批准项
安装前运维团队需确认的数值:
| 项目 | 示例 |
|---|---|
EDGE_ID | EDGE_00303 |
SITE_ID | SITE_00001 |
| Platform host / API key | SERVER_HOST, SERVER_API_KEY |
| PLC NIC / WAN NIC | NET1_IFACE, NET2_IFACE |
| static IP / gateway / DNS | NET1_IP, NET2_IP, NET2_GATEWAY, NET2_DNS |
| image tag 策略 | latest 或固定 IMAGE_TAG=2026-YYYYMMDD |
| 初始凭证策略 | 随机生成或运维团队指定 |
| 外部备份位置 | NAS / S3 / 运维备份服务器 |
凭证请勿留在聊天或邮件正文中,而应通过 root 专用文件或运维秘密存储库传递。
3. Secret-safe 安装 env
为了防止密码和 API key 留在 shell history 中,请使用 root 专用 env 文件。
sudo -i
umask 077
install -m 600 /dev/null /root/pp-edge-install.env
${EDITOR:-vi} /root/pp-edge-install.env
文件内容示例:
export EDGE_ID=EDGE_00303
export SITE_ID=SITE_00001
export SERVER_HOST=192.168.0.41
export SERVER_API_KEY='<platform-api-key>'
export NET1_IFACE=enp1s0
export NET1_IP=192.168.100.10/24
export NET2_IFACE=enp2s0
export NET2_IP=192.168.0.10/24
export NET2_GATEWAY=192.168.0.1
export NET2_DNS=192.168.0.1
# export IMAGE_TAG=2026.11-20261103-1006
执行:
sudo -i
set -a
. /root/pp-edge-install.env
set +a
cd /opt/kopens/install
bash install.sh
即使运维团队直接指定初始密码,也请在同一文件中放入 ADMIN_PASS, API_KEY, MQTT_PASS,
OPCUA_PASS, CERT_PASS 并维持 chmod 600。官方 cert password key 仅使用 CERT_PASS 一个。
4. 验收凭证采集
安装完成后,请使用以下命令记录不含机密值的凭证文件。
sudo -i
OUT=/root/pp-edge-acceptance-$(date +%Y%m%d-%H%M%S).txt
{
echo "# PlantPulse Edge acceptance"
date -Is
echo
echo "## host"
hostnamectl
uname -a
timedatectl
echo
echo "## service"
systemctl is-enabled plantpulse-edge.service || true
systemctl is-active plantpulse-edge.service || true
systemctl status plantpulse-edge.service --no-pager | sed -n '1,40p'
echo
echo "## version"
curl -ks https://127.0.0.1/api/v1/system/version | python3 -m json.tool
echo
echo "## health"
curl -ks https://127.0.0.1/api/v1/system/health | python3 -m json.tool
echo
echo "## ports"
ss -lntp | grep -E ':(80|443|1883|1884|6379|9042|1880|12000|12443)([[:space:]]|$)' || true
echo
echo "## storage"
df -h /opt /data1 2>/dev/null || df -h
echo
echo "## docker"
docker ps --filter name=plantpulse-edge --format 'table {{.Names}}\t{{.Image}}\t{{.Status}}'
} > "$OUT"
chmod 600 "$OUT"
sha256sum "$OUT" > "$OUT.sha256"
echo "$OUT"
验收时提交给运维团队的项目:
- acceptance text 文件路径及其 sha256
/data1/pp-backups/pe-backup-*.tar.zst和.sha256/tmp/pe-doctor-*.tar.zst和.sha256(发生问题时)- 网关 IP,
EDGE_ID,SITE_ID, image tag, 安装时间 - 凭证传递完成确认 (密码原文通过单独的安全流程处理)
5. 重启验证
在投入运维前,必须在 service restart 后确认其能够自动恢复。
sudo systemctl restart plantpulse-edge.service
sleep 30
sudo bash /opt/kopens/install/bin/health.sh
curl -ks https://127.0.0.1/api/v1/system/health | python3 -m json.tool
对于已注册 PLC 连接的现场,重启后需确认采集状态及最后数值的更新情况。
6. 备份与恢复准备
sudo bash /opt/kopens/install/bin/backup.sh
ls -lh /data1/pp-backups/
sha256sum /data1/pp-backups/pe-backup-*.tar.zst | tail -1
首次备份应复制到外部 NAS/S3/运维备份服务器。仅在同一磁盘上的备份无法在发生故障时进行恢复。
7. 运维团队验收后锁定
- 确认
/etc/kopens/credentials.txt权限为0600 root - 完成初始 admin 密码更改
- 决定
/root/pp-edge-install.env保留策略:移交给运维秘密存储库后从机器中删除,或维持 root 0600 - 在防火墙中仅允许需要暴露至 WAN 的端口
- 注册运维团队联系方式及升级 (escalation) 路径
- 预约下次巡检日及备份验证日