#!/usr/bin/env bash # ════════════════════════════════════════════════════════════════ # rollout.sh — массовая раскатка uploader'а на N нод # Запускается с твоего ноута или с collector'а. # # Требования на хосте откуда запускаешь: # apt install sshpass # # Заполни массив NODES (пароль, IP, имя ноды). # Запусти: bash rollout.sh # ════════════════════════════════════════════════════════════════ set -u # ── вписать свои значения ──────────────────────────────────── BUCKET="your-bucket-id" ENDPOINT="https://s3.twcstorage.ru" ACCESS_KEY="YOUR_ACCESS_KEY" SECRET_KEY="YOUR_SECRET_KEY" # ── формат: "PASSWORD IP NODE_NAME" (имена должны совпадать с inventory.yaml) ── NODES=( "SUPER_SECRET_PASS_1 91.92.34.5 de-1" "SUPER_SECRET_PASS_2 94.26.90.182 de-2" "SUPER_SECRET_PASS_3 151.240.151.122 nl-1" # ...добавь все ноды ) # ── ssh-keys (для нод без пароля): @-префикс ── # "@/root/.ssh/some_key 5.188.143.201 mcqueen-1" # ════════════════════════════════════════════════════════════════ RESULTS=/tmp/rollout-results.txt > "$RESULTS" for line in "${NODES[@]}"; do read -r AUTH IP NAME <<< "$line" if [[ "$AUTH" == @* ]]; then KEY="${AUTH#@}" SSH="ssh -i $KEY -o StrictHostKeyChecking=no -o ConnectTimeout=10 -o BatchMode=yes" USER=root # для ssh-key обычно root, замени если иначе else SSH="sshpass -p $AUTH ssh -o StrictHostKeyChecking=no -o ConnectTimeout=10" USER=root fi ( OUT=$($SSH "${USER}@${IP}" " curl -fsSL https://logs.killu.net/install-uploader.sh | bash -s -- \ --bucket=$BUCKET \ --endpoint=$ENDPOINT \ --access=$ACCESS_KEY \ --secret=$SECRET_KEY \ --node-name=$NAME " 2>&1 | tail -3 | tr '\n' '|') if echo "$OUT" | grep -q "готов"; then echo "OK $NAME ($IP)" >> "$RESULTS" else echo "FAIL $NAME ($IP) → $OUT" >> "$RESULTS" fi ) & # параллельно 5 одновременно while (( $(jobs -r | wc -l) >= 5 )); do sleep 0.3; done done wait echo "" echo "═══ ИТОГ ═══" sort "$RESULTS" echo "" echo "OK: $(grep -c '^OK ' "$RESULTS")" echo "FAIL: $(grep -c '^FAIL' "$RESULTS")"