Что такое Vagrant

TL;DR: Vagrant = IaC для виртуальных машин. Описываете VM в Vagrantfilevagrant up → готовый сервер. Не гипервизор, а оркестратор (управляет VirtualBox/VMware). Для инфраструктуры, не для приложений (= Docker).

Концепция

Vagrant решает проблему «на моём компьютере работает», заменяя ручную настройку VM на конфигурационный файл.

  • Декларативность: описываете что хотите (ОС, RAM, IP), Vagrant делает как
  • Воспроизводимость: один Vagrantfile → идентичные среды на Windows, macOS, Linux
  • Одноразовость: vagrant destroy + vagrant up = чистая среда за минуты

Архитектура

User → CLI (vagrant up) → Vagrant Core → Provider (VirtualBox) → VM
                                ↑
                          Vagrantfile
КомпонентОписаниеПримеры
ProviderГипервизор, запускающий VMVirtualBox, VMware, Hyper-V, Libvirt
BoxПредсобранный образ ОС (аналог Docker image)ubuntu/noble64, generic/arch
ProvisionerНастройка VM после запускаShell, Ansible, Puppet

Vagrant vs Docker

VagrantDocker
ВиртуализируетАппаратное обеспечение (полная VM)Ядро ОС (контейнер)
ИзоляцияПолная (своё ядро)Частичная (общее ядро с хостом)
ЗапускМинутыСекунды
РесурсыТяжёлый (выделенная RAM)Лёгкий
ЦельЭмуляция серверовУпаковка приложений

Vagrant — когда нужна полноценная ОС: тестирование Ansible ролей, сетевых конфигураций, ядра. Docker — когда нужен сервис: веб-приложение, БД, очередь.

Vagrant vs Terraform

Оба от HashiCorp, оба IaC, но разные среды:

  • Vagrant → локальные среды разработки (VirtualBox на ноутбуке)
  • Terraform → облачная инфраструктура (AWS, GCP, Azure)

Зачем использовать

  • Тестирование Ansible-плейбуков на «живых» VM
  • Моделирование кластера (web + db + cache)
  • Разработка с доступом к ядру (недоступно в контейнерах)
  • Изоляция legacy-проектов (старые стеки)
  • Обучение системному администрированию