Skip to main content

Immutable Infrastructure & Cloud-Init(Незмінна інфраструктура та автоматизація Cloud-Init)

Парадигма управління серверами, де сервери ніколи не модифікуються вручну після розгортання: будь-яке оновлення чи зміна конфігурації відбувається через створення свіжого стандартизованого інстансу.

1. Огляд концепції та системна проблема

Традиційне ручне адміністрування через підключення по SSH неминуче призводить до хаосу:

  • Інженер заходить на сервер у п'ятницю о 22:00, терміново править один рядок у конфігурації Nginx, забуває записати це в документацію і йде додому.
  • Через півроку сервер потрібно перенести на інший хостинг або масштабувати.
  • Новий сервер розгортають за старим гайдом — і нічого не працює! Ніхто не пам'ятає, які саме пакети були встановлені вручну та які права роздані в /etc.

Immutable Infrastructure (Незмінна інфраструктура) назавжди забороняє мутацію живих серверів: якщо потрібно змінити хоча б одне налаштування, ви не змінюєте старий сервер — ви розгортаєте новий готовий екземпляр, перемикаєте трафік і знищуєте старий.

2. Архітектурна таксономія та ментальна модель

┌─────────────────────────────────────────────────────────────┐
│                 IMMUTABLE PROVISIONING CYCLE                │
├─────────────────────────────────────────────────────────────┤
│ 1. INFRASTRUCTURE AS CODE (Git Repository):                 │
│    • `cloud-init.yaml`: Security hardening, UFW, Docker      │
│    • `docker-compose.prod.yml`: Application stack           │
├─────────────────────────────────────────────────────────────┤
│                          │                                  │
│                          ▼ Trigger: Provision New VPS (API) │
├─────────────────────────────────────────────────────────────┤
│ 2. CLOUD-INIT BOOTSTRAP (< 90 seconds on Hetzner):          │
│    • Disable root login & password authentication           │
│    • Provision non-root user `deployer` with SSH keys       │
│    • Lock down UFW (allow ONLY ports 80, 443, WireGuard)    │
│    • Install Docker Engine & Tailscale daemon               │
├─────────────────────────────────────────────────────────────┤
│ 3. TRAFFIC SWAP & ZERO DOWNTIME CUTOVER:                    │
│    • Healthcheck PASS ➔ Point DNS / Floating IP to NEW VPS  │
│    • Terminate OLD VPS ➔ Zero leftovers, zero drift!        │
└─────────────────────────────────────────────────────────────┘

3. Практичні інженерні сценарії в продакшені

01. Еталонний скрипт Cloud-Init для замовлення захищеного VPS

Передається в полі User Data при створенні сервера:

#cloud-config
users:
  - name: orlov
    groups: sudo
    shell: /bin/bash
    sudo: ['ALL=(ALL) NOPASSWD:ALL']
    ssh_authorized_keys:
      - ssh-ed25519 AAAAC3NzaC1lZDI1NTE5...
package_update: true
packages:
  - ufw
  - fail2ban
  - docker.io
runcmd:
  - ufw default deny incoming
  - ufw default allow outgoing
  - ufw allow 22/tcp
  - ufw allow 80/tcp
  - ufw allow 443/tcp
  - ufw --force enable
  - systemctl enable --now docker

4. Підводні камені, типові помилки та безпека

  • Спроба збереження локального стану на незмінному сервері: Якщо додаток зберігає завантажені користувачами файли прямо на локальний диск сервера, під час заміни інстансу файли будуть втрачені. Весь користувацький стан повинен зберігатися у виділених сховищах (S3, Cloudflare R2) або базах даних.
  • Помилки у скрипті ініціалізації: Якщо у файлі cloud-init.yaml допущено синтаксичну помилку в SSH-ключі, сервер підніметься без доступу. Завжди тестуйте конфігурації ініціалізації на дешевих тестових машинах.

5. Стратегічний висновок для інженера 2026 року

Незмінна інфраструктура звільняє інженерів від страху перед аваріями серверів. Коли будь-який вузол вашої системи можна знести і підняти заново за півтори хвилини одним натисканням клавіші, інфраструктура стає передбачуваною, легко масштабованою та невразливою до людського фактора.

/ Часті запитанняSchema.org FAQPage

FAQ: Immutable Infrastructure & Cloud-Init

Старий підхід (Pets): кожен сервер має власне унікальне ім'я, адмін роками вручну латає його, боїться перезавантажити і плаче, якщо він ламається. Незмінна інфраструктура (Cattle): усі сервери є пронумерованими ідентичними копіями. Якщо сервер починає давати збої, його просто знищують і за 60 секунд створюють новий за допомогою автоматичного скрипта.
/ Внутрішня перелінковка
Всі терміни
VPS & DevOps

VPS Hardening (Харденінг та безпека Linux VPS)

Системний процес конфігурації та зменшення поверхні атаки (Attack Surface Reduction) операційної системи Linux на віртуальному сервері через обмеження привілеїв, криптографічну ізоляцію та мережевий аудит.

Читати термін
VPS & DevOps

Coolify (Self-hosted PaaS)

Відкрита платформа керування інфраструктурою (Self-Hosted PaaS, відкрита альтернатива Vercel, Heroku та Render), що автоматизує деплой додатків із Git, генерацію SSL-сертифікатів, бази даних та резервне копіювання на власному VPS.

Читати термін
VPS & DevOps

VPS Hosting (Віртуальний виділений сервер)

Модель надання ізольованих обчислювальних ресурсів за допомогою апаратного гіпервізора (KVM), що надає повний доступ рівня root до операційної системи Linux для розгортання автономних систем.

Читати термін
VPS & DevOps

Zero-Downtime Deployment (Безперервне розгортання)

Методологія та інженерні механізми оновлення продакшен-сервісів без зупинки обслуговування користувачів, обриву існуючих TCP-з'єднань та генерації HTTP помилок 502/503.

Читати термін