Перейти к содержимому

Infrastructure as Code для WordPress

Подход, при котором серверы, базы данных, сети и балансировщики описываются в конфигурационных файлах и разворачиваются автоматически. Для WordPress: инфраструктура под сайт создаётся одной командой.

Ключевые свойства: декларативность, идемпотентность, воспроизводимость (dev = staging = prod), весь код в Git.

ТипСутьИнструменты
ДекларативныйОписывается желаемое состояниеTerraform, OpenTofu, CloudFormation, Crossplane
ИмперативныйПошаговые инструкцииAnsible, Chef, SaltStack
ПрограммируемыйНа Python, TS, GoPulumi, AWS CDK, CDK for Terraform
ИнструментЯзыкДля WordPress
Terraform / OpenTofuHCLAWS (EC2+RDS+EFS+Redis+CloudFront), Yandex Cloud, VK Cloud
PulumiPython/TS/Go/C#Команды разработчиков, мульти-стек
AnsibleYAMLУстановка WP, PHP, Nginx на готовых VM
Docker ComposeYAMLЛокальная разработка и простой продакшен
Helm / kubectlCharts / YAMLWordPress в Kubernetes

Production-grade схема для тысяч одновременных пользователей:

CloudFront → ALB → ECS Fargate (WordPress, Auto Scaling 2–10)
├── EFS (общее wp-content)
├── RDS Aurora MySQL Serverless v2
└── ElastiCache Redis

Ключевые компоненты:

  • VPC — 3 AZ, public (ALB) + private (приложение, БД, кеш) подсети
  • RDS Aurora Serverless v2 — 0.5–16 ACU, writer + reader, 7 дней бэкапов, encrypted
  • EFS — общее хранилище wp-content/uploads для всех контейнеров (иначе загрузка на одном не видна на других)
  • ElastiCache Redis — 2 ноды multi-AZ, объектное кеширование (ускорение ×10–100)
  • ECS Fargate — WordPress 6.4 + PHP 8.2 FPM, Secrets Manager для паролей
  • Auto Scaling — по CPU (60%), 2–10 контейнеров
  • CloudFront — перед ALB, не кеширует /wp-admin/*

Стоимость (ориентир): ~$300–400/мес. Упрощённый вариант — один EC2 + RDS MySQL (не Aurora) — ~$55/мес.

Локальная разработка: MySQL + WordPress (официальные образы), /wp-content в локальный volume, WP_DEBUG=true.

Production-архитектура: Nginx reverse proxy (единственная точка входа) → PHP-FPM WordPress + MySQL + Redis. Приватная сеть — только proxy наружу.

Обязательно: HTTPS (Let’s Encrypt + Certbot), .env в .gitignore, named volumes для БД и wp-content, health checks, resource limits, конкретные теги образов (не latest).

Pre-production чек-лист:

  • HTTPS активен, только 80/443 публично
  • Persistent volumes, автоматические бэкапы (внешнее S3)
  • Staging = production, план отката задокументирован

Когда оправдан: десятки тысяч посетителей/день, горизонтальное масштабирование, zero-downtime деплой. Для типовых сайтов — избыточен.

Архитектура: Ingress (Nginx) → Service → Deployment (WordPress pods, 2–10) + PVC (RWX через OpenEBS NFS) ← MySQL StatefulSet + Redis StatefulSet.

Ключевые объекты: Namespace, Secret, ConfigMap, PVC, StatefulSet (MySQL), Deployment (WP), Service, Ingress + Cert-Manager.

Проблема RWX: несколько реплик WordPress должны видеть одни wp-content/uploads. Стандартное блочное хранилище (RWO) монтируется только к одному поду. Решение: OpenEBS NFS Provisioner или AWS EFS CSI driver.

Helm (Bitnami): helm install my-wp bitnami/wordpress --set externalDatabase.host=... --set persistence.storageClass=rwx-storage

Стоимость (DigitalOcean): ~$220–315/мес (DOKS 3×4cpu/8gb + Managed MySQL + Redis + LB).

Pulumi создаёт облачную инфраструктуру (VPC, RDS, EC2), Ansible настраивает серверы (установка WP, PHP, Nginx). Всё одной командой pulumi up.

ПлатформаTerraformPulumiAnsibleОсобенности
Yandex Cloud✓✓✓Crossplane
VK Cloud✓✓✓Packer, зрелая документация
Selectel✓—✓Выделенные серверы
Cloud.ru (Сбер)✓——ФСТЭК
Timeweb Cloud✓——Простой вход
Deckhouse (Флант)K8s-native——Российская K8s, GitOps, ФСТЭК
  • Весь код в Git, изменения через PR
  • Модульность, переиспользуемые компоненты
  • GitOps, тестирование (Checkov, Terratest)
  • Drift detection, минимальные IAM-привилегии
IaCPaaS (Managed WP)
Полный контрольУправление приложением
Нужны DevOps-компетенцииМинимальный порог входа
High-load, complianceТиповые сайты

Для большинства проектов на старте PaaS практичнее. IaC оправдан при: 5+ серверов, high-load, мульти-региональный деплой, compliance.