Skip to main content

Незменяемая Инфраструктура и 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. Практические инженерные сценарии в продакшене

01. Эталонный скрипт Cloud-Init для заказа защищенного VPS

02. Автоматизация развертывания с помощью Terraform

03. Обновление приложения без простоя с использованием Blue-Green Deployment

5. Подводные камни, типовые ошибки и безопасность

  • Попытка сохранения локального состояния на незменяемом сервере: Если приложение сохраняет загруженные пользователями файлы прямо на локальный диск сервера, при замене инстанса файлы будут потеряны. Весь пользовательский статус должен храниться в выделенных хранилищах (S3, Cloudflare R2) или базах данных.
  • Ошибки в скрипте инициализации: Если в файле cloud-init.yaml допущена синтаксическая ошибка в SSH-ключе, сервер поднимется без доступа. Всегда тестируйте конфигурации инициализации на дешевых тестовых машинах.
/ Частые вопросыSchema.org FAQPage

FAQ: Незменяемая Инфраструктура и Cloud-Init

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

VPS Hardening (Укрепление и безопасность Linux VPS)

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

Читать термин
VPS и DevOps

Coolify (Самостоятельная 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.

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