4.1 KiB
4.1 KiB
VM Stress Test — Инструкция по запуску
2026-03-30
⛔⛔⛔ КРИТИЧЕСКИЕ ПРАВИЛА ⛔⛔⛔
ЗАПРЕЩЕНО (без исключений):
- НЕ РЕДАКТИРОВАТЬ
terraform.tfvars— там JWT-токен, потеря = катастрофа - НЕ РЕДАКТИРОВАТЬ
*.tfфайлы - НЕ РЕДАКТИРОВАТЬ
vm_stress_test.sh - НЕ ЗАПУСКАТЬ
terraformнапрямую — только через скрипт - НЕ СОЗДАВАТЬ новые файлы в этой директории
- НЕ ДЕЛАТЬ
sed,awk,cat >,teeв terraform.tfvars
ПОЧЕМУ:
Предыдущая версия скрипта содержала функцию write_tfvars() которая
перезаписывала terraform.tfvars. В процессе перезаписи был потерян
JWT-токен api_token (1200+ символов). Это привело к полному отказу
terraform и потере рабочего состояния. Восстановление заняло час.
КАК РАБОТАЕТ НОВЫЙ СКРИПТ:
Переменные переопределяются через -var в terraform CLI.
Файл terraform.tfvars читается terraform автоматически,
но НИКОГДА не перезаписывается скриптом.
После каждой фазы проверяется md5sum terraform.tfvars. Если файл изменился — АВАРИЙНАЯ ОСТАНОВКА (exit code 99).
Запуск
На VM (naeel@5.172.178.213):
cd ~/terra/sless/examples/VM
bash vm_stress_test.sh 2>&1 | tee /tmp/vm_stress_$(date +%Y%m%d_%H%M).log
Быстрый прогон (без destroy/resurrect — фазы 7-9 пропускаются):
SKIP_DESTROY=1 bash vm_stress_test.sh 2>&1 | tee /tmp/vm_stress.log
Количество stress-циклов (default: 2):
STRESS_CYCLES=3 bash vm_stress_test.sh 2>&1 | tee /tmp/vm_stress.log
Анализ результатов
Быстрый обзор:
grep -E '\[(PASS|FAIL|SKIP)\]' /tmp/vm_stress.log
Только ошибки:
grep '\[FAIL\]' /tmp/vm_stress.log
Итоговая сводка — последние 20 строк лога:
tail -20 /tmp/vm_stress.log
Фазы теста
| # | Имя | Что делает |
|---|---|---|
| 1 | BASELINE | apply с полным набором (packages+nginx+docker) |
| 2 | IDEMPOTENT | plan → "No changes" (проверка идемпотентности) |
| 3 | PARTIAL_DISABLE | отключить nginx + docker через -var |
| 4 | PARTIAL_ENABLE | включить обратно nginx + docker |
| 5 | REORDER_PACKAGES | изменить набор base_packages через -var |
| 6 | MANUAL_PURGE | удалить пакеты с VM по SSH → переустановить |
| 7 | DESTROY | terraform destroy → VM в suspend |
| 8 | RESURRECT | apply после destroy → VM просыпается |
| 9 | STRESS_CYCLES | N циклов destroy/apply подряд |
| 10 | FINAL_SANITY | финальная проверка VM + пакеты + plan |
Текущее состояние (baseline)
5 ресурсов в state:
nubes_vapp.vappnubes_vc_vm_v3.vmsless_job.install_packages[0]sless_job.install_nginx[0]sless_job.install_docker[0]
Exit codes
| Code | Значение |
|---|---|
| 0 | Все тесты PASS |
| 1 | Есть FAIL (см. лог) |
| 99 | terraform.tfvars был изменён — АВАРИЙНЫЙ СТОП |