Migration: bootstrap new vds
This commit is contained in:
@@ -8,6 +8,69 @@
|
|||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
## Шаг 8 — VPS заказан, пользователь `major` создан (2026-05-23, выполнено)
|
||||||
|
|
||||||
|
Заказан Cloud VPS в Timeweb по тарифу из плана (4 × 3.3 ГГц, 8 ГБ RAM,
|
||||||
|
80 ГБ NVMe, Ubuntu 24.04 LTS), ДЦ Санкт-Петербург.
|
||||||
|
|
||||||
|
Первая выданная VPS попала на гипервизор с битой сетью: TCP-handshake
|
||||||
|
проходил нормально, но первый data-сегмент в любой TCP-сессии не
|
||||||
|
доставлялся ни в одну сторону. Подтверждено:
|
||||||
|
|
||||||
|
- `nc -l 12345` на сервере не получал данные от клиента, при этом
|
||||||
|
клиент видел `Connection succeeded`;
|
||||||
|
- strace зависшего `sshd: [accepted]`-child показывал
|
||||||
|
`read(socket, ..., 1) = ERESTARTSYS`, далее `SIGALRM` через 120 сек
|
||||||
|
по `LoginGraceTime` → exit (т.е. sshd ушёл в `read()` за клиентским
|
||||||
|
баннером и не дождался);
|
||||||
|
- `iptables -S` / `nft list ruleset` / `ufw status` — пусто, локального
|
||||||
|
firewall нет;
|
||||||
|
- исходящие соединения с VM (`curl http://example.com`) работали
|
||||||
|
штатно — ломались только входящие data-сегменты после handshake.
|
||||||
|
|
||||||
|
Ребут и переустановка ОС из панели не помогли. Пересоздал VPS в ДЦ СПб
|
||||||
|
с новым IP — заработало с первой попытки. Потеря времени ~1 час; на
|
||||||
|
будущее: при таком паттерне сразу пересоздаём в другом ДЦ, глубже
|
||||||
|
диагностику не ведём (это однозначно проблема сети провайдера).
|
||||||
|
|
||||||
|
### Bootstrap пользователя `major`
|
||||||
|
|
||||||
|
На свежей VPS только root по SSH-ключу. Поднял пользователя
|
||||||
|
аналогично YC-серверу — sudo через NOPASSWD, вход только по ключу.
|
||||||
|
Дальше `geerlingguy.security` + `roles/owner` пересоздадут пользователя
|
||||||
|
идемпотентно с теми же uid/gid и приклеят политику sshd при первом
|
||||||
|
прогоне ансибла.
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# 1. Создать пользователя с home и bash, добавить в sudo
|
||||||
|
useradd -m -s /bin/bash major
|
||||||
|
usermod -aG sudo major
|
||||||
|
|
||||||
|
# 2. NOPASSWD-политика sudo
|
||||||
|
echo 'major ALL=(ALL) NOPASSWD: ALL' > /etc/sudoers.d/major
|
||||||
|
chmod 0440 /etc/sudoers.d/major
|
||||||
|
visudo -cf /etc/sudoers.d/major # должно сказать "parsed OK"
|
||||||
|
|
||||||
|
# 3. SSH-ключ (тот же, что залит для root при создании VPS)
|
||||||
|
install -d -m 700 -o major -g major /home/major/.ssh
|
||||||
|
install -m 600 -o major -g major \
|
||||||
|
/root/.ssh/authorized_keys \
|
||||||
|
/home/major/.ssh/authorized_keys
|
||||||
|
```
|
||||||
|
|
||||||
|
Проверка с локальной машины:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
ssh major@<новый-ip>
|
||||||
|
sudo whoami # root, без пароля
|
||||||
|
```
|
||||||
|
|
||||||
|
Прошло. Root-доступ по SSH пока оставлен как резервный канал — первый
|
||||||
|
прогон ансибла отключит его через `geerlingguy.security`
|
||||||
|
(`PermitRootLogin no`, `PasswordAuthentication no`).
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
## Шаг 7 — `run-app` тег + унификация registry (2026-05-22, выполнено)
|
## Шаг 7 — `run-app` тег + унификация registry (2026-05-22, выполнено)
|
||||||
|
|
||||||
По итогам аудита подготовительных задач выявлены и закрыты две
|
По итогам аудита подготовительных задач выявлены и закрыты две
|
||||||
|
|||||||
Reference in New Issue
Block a user