feat: 按 doc_id 重组 ansible/files 与验证框架

- ansible/files 改为与文档 XX-YY 对齐的目录结构,更新相关 playbook 路径
- 新增 scripts/verify.sh 与 ansible/playbooks/verify/*.yml,移除单体 verify-matrix.yml
- 补充 docs/00-02 矩阵状态、00-05 验证框架与流程、00-04 环境与 ylc65 工作机说明
- 增加 k3s 存储准备、Longhorn、local-path 等 playbook 与辅助脚本

Made-with: Cursor
This commit is contained in:
2026-03-26 07:01:14 +08:00
parent a67788de56
commit 8c43761962
192 changed files with 4006 additions and 320 deletions

103
scripts/.env.verify.example Normal file
View File

@@ -0,0 +1,103 @@
# 验证矩阵 / 编排脚本用环境变量模板
# ---------------------------------------------------------------------------
# 使用:复制为本目录下的 .env.verify勿提交 Git在仓库根执行
# set -a && source scripts/.env.verify && set +a
# 或在 bash 中source scripts/.env.verify
# 仅示例占位,请把 YOUR_* 换成真实值;密钥只留在本机 .env.verify。
# ---------------------------------------------------------------------------
# --- 集群与 kubectl ---
# 在控制节点本机跑 kubectl 时常用:
# export KUBECONFIG="${KUBECONFIG:-/etc/rancher/k3s/k3s.yaml}"
# 若在办公机通过 SSH 在远端执行 kubectl可设为
# export K3S_CONTROL_SSH="ssh -o BatchMode=yes ylc61"
# export REMOTE_KUBECONFIG="/etc/rancher/k3s/k3s.yaml"
# 在控制节点本机执行 kubectl 时,避免再次经 SSH 自环(可按需保留):
# export VERIFY_FORCE_LOCAL_KUBECTL=1
# 经 SSH 在控制节点执行 kubectl 时:若 PATH 中无 kubectl可设 REMOTE_KUBECTL="k3s kubectl"
# export REMOTE_KUBECTL="k3s kubectl"
# 控制节点短主机名(与 inventory 一致;编排里拼 URL/SSH 用)
export K3S_SERVER_HOSTNAME="${K3S_SERVER_HOSTNAME:-ylc61}"
# 与 ansible group_vars 一致,验证磁盘/文档 00-04 时引用
export K3S_DATA_DIR="${K3S_DATA_DIR:-/storage}"
# --- Ansible安装/复验 k3s---
export ANSIBLE_INVENTORY="${ANSIBLE_INVENTORY:-$(pwd)/ansible/inventory.ini}"
# phase2run-phase2-k3s-on-ylc61-as-jack.sh 或手工):
# 为 true 时先跑 k3s-prepare-storage.yml须与 group_vars 一致)
export K3S_PREPARE_STORAGE="${K3S_PREPARE_STORAGE:-false}"
# phase2 建议在控制节点 ylc61 上执行(本机有 ansible-playbook办公机无 ansible 时用 phase2-print 复制命令到 ylc61
# --- SSH 密钥命名(与 scripts/ssh/test-ssh.sh 默认一致;脚本内尚为硬编码路径)---
# test-ssh 使用:$K3S_SSH_KEY_DIR/${K3S_SSH_KEY_PREFIX}<inventory主机名>
# 若你改用其他前缀,需同步改 test-ssh.sh 或仅用手工 ssh -i。
export K3S_SSH_KEY_DIR="${K3S_SSH_KEY_DIR:-$HOME/.ssh}"
export K3S_SSH_KEY_PREFIX="${K3S_SSH_KEY_PREFIX:-id_ed25519_k3s_}"
# setup-k3s-workers-ssh.sh 首次登录的非 root 用户名(交互默认 jack
export SSH_USER="${SSH_USER:-jack}"
# test-ssh.sh连接超时秒数脚本已支持环境变量 TIMEOUT_SEC
export TIMEOUT_SEC="${TIMEOUT_SEC:-5}"
# ---(旧自动验证已下线)---
# 如果你要重新落地自动化验证,请参考 docs/00-05 的测试框架设计说明。
# --- SSH第三方验证机 onecloud不忽略矩阵里多处依赖「集群外」curl/探测)---
# 用途示例02-xx nginx 矩阵从第三方访问 Ingress01-07 经 onecloud 对 OpenWrt:18080/18443 发 curl
# 与 K3s 节点 SSH 无关,但必须能免交互登录(建议 BatchMode + 已知的 IdentityFile
# 编排脚本应始终引用 ONECLOUD_SSH不要用「本机直接 curl」代替除非你明确改成本机。
export ONECLOUD_SSH="${ONECLOUD_SSH:-ssh -o BatchMode=yes onecloud}"
# 若需显式密钥,可写完整一行,例如:
# export ONECLOUD_SSH="ssh -o BatchMode=yes -i ~/.ssh/id_ed25519_onecloud onecloud"
# --- NFS03-06服务端与导出路径若需在服务端执行清理命令可填 SSH ---
export NFS_SERVER_HOST="${NFS_SERVER_HOST:-YOUR_NFS_IP_OR_HOSTNAME}"
export NFS_EXPORT_PATH="${NFS_EXPORT_PATH:-/export/k3s}"
# export NFS_SSH="ssh -o BatchMode=yes root@${NFS_SERVER_HOST}"
# --- CloudflareAPI / Tunnel与 scripts/cloudflare-delete-acme-challenge-dns.sh 等一致)---
# DNS 脚本使用CF_API_TOKEN、ZONE_NAME 或 ZONE_ID
export CF_API_TOKEN="${CF_API_TOKEN:-}"
export ZONE_NAME="${ZONE_NAME:-jackadam.top}"
export ZONE_ID="${ZONE_ID:-}"
# Tunnel / Dashboard 等若需单独 token按需增加勿提交真实值
# export CF_TUNNEL_TOKEN=""
# export CF_ACCOUNT_ID=""
# --- ACME / Traefik03-02、03-03Let's Encrypt 注册邮箱 ---
# 与 HelmChartConfig / traefik-acme.yaml 中 <YOUR_REAL_EMAIL> 一致;编排或 sed 替换时引用 ACME_EMAIL。
export ACME_EMAIL="${ACME_EMAIL:-}"
# 文档中 traefik-acme 曾用 staging CA 调试1=使用测试 CA与 yaml 中 caserver 是否一致自行核对)
export ACME_CA_STAGING="${ACME_CA_STAGING:-0}"
export TRAEFIK_NAMESPACE="${TRAEFIK_NAMESPACE:-kube-system}"
# --- TLS 验证域名02-05 / 03-02 矩阵 curl、openssl s_client---
# 逗号分隔,与 ZONE_NAME 下实际 DNS 记录一致;勿提交敏感子域若需可只写本机
export VERIFY_TLS_HOSTS="${VERIFY_TLS_HOSTS:-test01.jackadam.top,test02.jackadam.top,test03.jackadam.top,test04.jackadam.top}"
# --- Longhorn03-07 / ansible longhorn-install---
export LONGHORN_NAMESPACE="${LONGHORN_NAMESPACE:-longhorn-system}"
# --- 可选跳过仅下列项ONECLOUD 与 ARMV7 实机路径不在此列——见下方)---
export SKIP_HA="${SKIP_HA:-1}"
# 跑 01-03 / 01-05 时设为 0并填写 ARMV7_*;编排脚本不得在无设备时假装通过
export SKIP_ARMV7="${SKIP_ARMV7:-1}"
export SKIP_GITOPS="${SKIP_GITOPS:-1}"
# --- armv701-03 Docker、01-05 NFS不忽略与 ONECLOUD 一样,编排须显式走 ARMV7_*,不得跳过 ---
# 跑 01-03 / 01-05 时SKIP_ARMV7=0并填写 ARMV7_SSH可与 onecloud 同主机、或直连 arm按你环境二选一
# ARMV7_NFS_SSH 默认同 ARMV7_SSH若 NFS 在另一台 arm 上再单独覆盖。
export ARMV7_SSH="${ARMV7_SSH:-}"
export ARMV7_NFS_SSH="${ARMV7_NFS_SSH:-$ARMV7_SSH}"
# --- OpenWrt / 01-07与 K3s 四节点无关时单独用)---
# export OPENWRT_SSH="ssh -o BatchMode=yes root@192.168.x.x"
# export OPENWRT_HAPROXY_HTTP_PORT="18080"
# export OPENWRT_HAPROXY_HTTPS_PORT="18443"
# 01-07 文档中第三方 curl 用 --https-hosts 时的主机列表(逗号分隔,与 VERIFY_TLS_HOSTS 可相同)
# export OPENWRT_VERIFY_HTTPS_HOSTS="test01.jackadam.top,..."
# --- 与现有 scripts/*.sh 对照(未列出的脚本不在仓库内)---
# cloudflare-delete-acme-challenge-dns.sh → CF_API_TOKEN, ZONE_NAME, ZONE_ID
# k3s-delete-lab-stacks.sh → KUBECONFIG
# ssh/test-ssh.sh → TIMEOUT_SEC密钥路径当前固定为 $HOME/.ssh/id_ed25519_k3s_<host>
# ssh/setup-k3s-workers-ssh.sh → 交互 inventory + SSH_USER可选一次性密码勿写入本文件