- VERSIONS.md: три строки обновлены, добавлены первые 16 символов sha256 каждой сборки; - HISTORY: что заливалось, как проверялось (схема 60/62 ресурсов, исключения — action-шаблон mongodb_rollback и рукописный service_operation), грабли checksum mismatch при той же версии + лечение, и найденный факт: state TEST_STAND/CRUD пуст (serial 38), инстансы в облаке помечены deleted.
5.9 KiB
2026-10-01 — Заливка провайдера во все три стенда с фичей keep_on_destroy для подресурсов
Команда владельца: «делай» (в ответ на «Запускать релизный цикл (01/02/03)?»). Версии не бампались — перезалиты те же
1.0.0/2.0.0/3.0.0(как в релизе от 01.10,HISTORY/2026-10-01_release_x_0_0_all_stands.md).
Что заливалось
Фича keep_on_destroy для подресурсов (коммиты fefc200 — шаблон, 81b85a4 — доки, 8f6e096 — тест):
при destroy подресурс (пользователь БД, база, топик и т.п.) не удаляется и не меняется в облаке,
а только убирается из terraform state. Нужно там, где родительский инстанс при destroy не удаляется
(suspend_on_destroy = true), иначе объект уйдёт из живого инстанса.
Как выполнено
export MC_CONFIG_DIR=/tmp/mc-cfg
./TOOLS/scripts/03_build_and_upload_provider.sh --profile TOOLS/config/test 3.0.0
./TOOLS/scripts/03_build_and_upload_provider.sh --profile TOOLS/config/dev 2.0.0
./TOOLS/scripts/03_build_and_upload_provider.sh --profile TOOLS/config/prod 1.0.0
03 сам выполняет 01 (YAML из API) → 02 (ресурсы+доки) → check_schema_names.sh → сборку 3 платформ → GPG-подпись → заливку.
Результат
| Стенд | Namespace | Версия | YAML | sha256 залитого == локальному | mtime 5 объектов |
|---|---|---|---|---|---|
| TEST | nubes-test |
3.0.0 |
36 | ✅ 0e859ffd58fd5e7d… |
15:51 |
| DEV | nubes-dev |
2.0.0 |
40 | ✅ 0d9897c2fdddff2b… |
15:55 |
| PROD | nubes |
1.0.0 |
36 | ✅ e509ced2b11440fc… |
15:58 |
Проверка API /versions: nubes → ['1.0.0'], nubes-test → ['3.0.0'],
nubes-dev → ['2.0.0','2.0.1','2.0.21','2.0.22','2.0.23','2.0.24'].
Генерация по стендам: prod 36 yaml / 60 go / 297 docs, test 36/60/297, dev 40/65/327. Stale нет.
Проверка фичи в залитой сборке
Схема, полученная от реестра (terraform providers schema -json, test 3.0.0):
из 62 ресурсов атрибут keep_on_destroy есть у 60.
Исключения (оба — не подресурсы и не инстансы):
nubes_mongodb_rollback— action-ресурс (generated/test/go/92_mongodb_rollback_action.go, другой шаблон);nubes_service_operation— рукописный ресурсprovider/internal/resources_core/service_operation_resource.go.
Грабли: checksum mismatch при обновлении провайдера в стенде
После перезаливки версии с тем же номером terraform init -upgrade в TEST_STAND/CRUD
не перекачал бинарник (осталась старая сборка b2ad147d40a4be96…), а после удаления
.terraform/providers появилась Error: ... checksums previously recorded in the dependency lock file.
Причина: .terraform.lock.hcl фиксирует хэши; при той же версии Terraform не меняет выбор
и не перечитывает пакет. Лечение:
cd TEST_STAND/CRUD
rm -f .terraform.lock.hcl # файл не под git (проверено: git ls-files TEST_STAND/CRUD/)
rm -rf .terraform/providers
terraform init # скачивает новую сборку, создаёт lock заново
Результат: установлен бинарник c6cd7feb7ee5c868… (совпадает с залитым), terraform validate → Success.
⚠️ Найденное расхождение: state стенда TEST пуст, инстансы в облаке помечены deleted
Обнаружено при проверке применения keep_on_destroy.
| Файл | serial | Ресурсов | mtime |
|---|---|---|---|
terraform.tfstate (текущий) |
38 | 0 (resources: []) |
15:43 |
terraform.tfstate.backup |
31 | 6 (nubes_postgres.main_pg, nubes_postgres_user.crud_user_0, nubes_postgres_database.pg_db, nubes_flask.appflask, nubes_lucee.applucee, nubes_nodejs.appnodejs) |
15:39 |
terraform plan после этого: 6 to add, 0 to change, 0 to destroy.
Состояние инстансов по API (/instances/<uid>) на момент проверки:
| Инстанс | serviceId | explainedStatus | dtState |
|---|---|---|---|
pg4crud2 |
90 | deleted (isDeleted: true, isSuspended: true) |
16:05:51 |
crud-nodejs |
95 | deleted (isDeleted: true, isSuspended: true) |
16:03:46 |
crud-lucee |
94 | deleted (isDeleted: true, isSuspended: true) |
16:04:23 |
crud-flask |
89 | deleted (isDeleted: true, isSuspended: true) |
15:40:30 |
Исполнитель (агент) terraform apply и terraform destroy не запускал — только
init / validate / plan / state-чтение. Кто инициировал удаление инстансов — не установлено;
решение о дальнейших шагах принимает владелец.
Связанные документы
HISTORY/2026-10-01_release_x_0_0_all_stands.md— предыдущая перезаливка тех же версий;HISTORY/2026-10-01_test_crud_pg_create_failure.md— разбор сбоев создания PostgreSQL и пароля Vault;VERSIONS.md— таблица версий (обновлена);TEST_STAND/CRUD/postgres_user_db.tf— манифест сkeep_on_destroy = true(коммитe8c03d8).