examples/VM: sless_job provisioning (packages, nginx, docker)
- Add sless.tf: three sless_job resources with depends_on chain
- vm-install-packages: jq, python3-pip, htop, unzip
- vm-install-nginx: nginx 1.18 (HTTP 200 verified)
- vm-install-docker: Docker CE 29.3.1 + Compose v5.1.1
- Add functions/install-{packages,nginx,docker}/handler.py
- _wait_apt_lock: cloud-init status --wait + systemctl mask
fixes Ubuntu 22.04 first-boot apt lock (unattended-upgrades)
- DPkg::Lock::Timeout=600 on all apt-get calls
- Add variables.tf (install_run_id, vm_public_key, vm_private_key)
- Add outputs.tf (install_*_result)
- Bump nubes provider 5.0.49 -> 5.0.51
- doc/progress.md: document step 6 with bug analysis
This commit is contained in:
@@ -1417,3 +1417,60 @@ G15 перезапущен → **21/21 PASS ✅**
|
||||
### Версия оператора
|
||||
`v0.1.51` — задеплоен, работает
|
||||
|
||||
|
||||
---
|
||||
|
||||
## Шаг 6: VM provisioning через sless_job (2026-03-29)
|
||||
|
||||
### Цель
|
||||
Установить пакеты, nginx и docker на свежую Nubes VM через sless_job.
|
||||
|
||||
### Что реализовано
|
||||
- `examples/VM/sless.tf` — три `sless_job` ресурса с `depends_on` цепочкой:
|
||||
- `vm-install-packages` → jq, python3-pip, htop, unzip
|
||||
- `vm-install-nginx` → nginx (depends_on install-packages)
|
||||
- `vm-install-docker` → Docker CE 29.3.1 + Compose v5.1.1 (depends_on install-nginx)
|
||||
- `examples/VM/variables.tf` — переменная `install_run_id` для управления rebuildом
|
||||
|
||||
---
|
||||
|
||||
## Шаг 6: VM provisioning через sless_job (2026-03-29)
|
||||
|
||||
### Цель
|
||||
Установить пакеты, nginx и docker на свежую Nubes VM через sless_job.
|
||||
|
||||
### Что реализовано
|
||||
- `examples/VM/sless.tf` — три `sless_job` ресурса с `depends_on` цепочкой:
|
||||
- `vm-install-packages` → jq, python3-pip, htop, unzip
|
||||
- `vm-install-nginx` → nginx (depends_on install-packages)
|
||||
- `vm-install-docker` → Docker CE 29.3.1 + Compose v5.1.1 (depends_on install-nginx)
|
||||
- `examples/VM/variables.tf` — переменная `install_run_id` для управления rebuild'ом
|
||||
- `examples/VM/outputs.tf` — вывод результатов job'ов
|
||||
- `examples/VM/functions/install-packages/handler.py` — SSH установка пакетов
|
||||
- `examples/VM/functions/install-nginx/handler.py` — SSH установка nginx
|
||||
- `examples/VM/functions/install-docker/handler.py` — SSH установка Docker CE
|
||||
|
||||
### Баги найдены и исправлены
|
||||
|
||||
#### Баг 1: Ubuntu 22.04 — cloud-init держит apt lock при старте VM
|
||||
- **Симптом**: `E: Could not get lock /var/lib/dpkg/lock-frontend (held by process 2191)`
|
||||
- **Причина**: `unattended-upgrades` держит lock через cloud-init 15-20 мин после старта VM
|
||||
- **Фикс**: `_wait_apt_lock()` начинает с `cloud-init status --wait` (timeout 300s), затем `systemctl mask` сервисов авто-обновления
|
||||
|
||||
#### Баг 2: Оператор запускает СТАРЫЙ образ после upload
|
||||
- **Симптом**: `image already exists in registry, skipping build` — новый код не применялся
|
||||
- **Причина**: Go DEFLATE создавал идентичные байты zip для разных версий handler.py, sha256(zip) не менялся
|
||||
- **Фикс**: изменение requirements.txt гарантирует уникальный zip hash
|
||||
|
||||
#### Баг 3: WaitJobDone мгновенно возвращал ошибку на старый Failed статус
|
||||
- **Симптом**: terraform apply падает мгновенно без ожидания нового build
|
||||
- **Причина**: FunctionJob CRD хранил phase=Failed от предыдущего запуска
|
||||
- **Воркараунд**: удалить FunctionJob CRD перед apply
|
||||
|
||||
### Результат
|
||||
- vm-install-packages: status=ok, installed=[jq, python3-pip, htop, unzip]
|
||||
- vm-install-nginx: status=already_installed, version=1.18.0, http_check=200
|
||||
- vm-install-docker: status=ok, docker=29.3.1, compose=v5.1.1
|
||||
|
||||
### nubes провайдер
|
||||
Обновлён с 5.0.49 до 5.0.51 (fix: findInstanceUidByDisplayNameRefSvc возвращал deleted instance UUID)
|
||||
|
||||
Reference in New Issue
Block a user