Что такое Vagrant и как его установить?

Что такое Vagrant и как его установить?

Vagrant используется для создания и управления виртуальными средами разработки. Основные цели применения Vagrant:

  1. Стандартизация и автоматизация настройки окружения разработки. Vagrant позволяет описывать конфигурацию виртуальной машины в файле Vagrantfile и развертывать её одной командой.
  2. Обеспечение портативности рабочего окружения. Разработчики могут воспроизводить одинаковое окружение на своих локальных машинах, на серверах CI/CD, в облаке и т.д.
  3. Изоляция и безопасность. Vagrant позволяет изолировать проект от системного окружения, избегая конфликтов между зависимостями различных проектов.

Процесс установки Vagrant:

  1. Скачать и установить VirtualBox с официального сайта: https://www.virtualbox.org/wiki/Downloads
  2. Скачать Vagrant с официального сайта: https://www.vagrantup.com/downloads
  3. Установить Vagrant, следуя инструкциям для вашей операционной системы.
  4. Создать новый Vagrantfile в директории проекта командой: vagrant init
  5. Отредактировать Vagrantfile, указав необходимые параметры виртуальной машины, такие как операционная система, количество CPU, RAM, синхронизацию папок и т.д.
  6. Запустить виртуальную машину командой: vagrant up
  7. Подключиться к виртуальной машине командой: vagrant ssh
  8. Управлять виртуальной машиной другими командами Vagrant, такими как vagrant halt, vagrant destroy, vagrant provision и др.

Vagrant значительно упрощает процесс настройки и управления изолированными средами разработки, повышая производительность и воспроизводимость рабочих процессов.

Пример конфигурации

Давайте рассмотрим пример Vagrantfile для запуска первого виртуального сервера

MACHINES = {
  :"my-ubuntu-vm" => {
              # VM box
              :box_name => "ubuntu/focal64",
              # VM CPU count
              :cpus => 2,
              # VM RAM size (Mb)
              :memory => 2024,
            }
}

Vagrant.configure("2") do |config|
  MACHINES.each do |boxname, boxconfig|
    config.vm.synced_folder ".", "/vagrant", disabled: true
    config.ssh.insert_key = false
    config.vm.define boxname do |box|
      box.vm.box = boxconfig[:box_name]
      box.vm.box_version = boxconfig[:box_version]
      box.vm.host_name = boxname.to_s
      box.vm.provider "virtualbox" do |v|
        v.memory = boxconfig[:memory]
        v.cpus = boxconfig[:cpus]
      end
    end
  end
end

Этот файл конфигурации Vagrant определяет одну виртуальную машину с именем “my-ubuntu-vm” на основе образа Ubuntu 20.04 (focal64). Давайте разберем его более подробно:

MACHINES = {
  :"my-ubuntu-vm" => {
    # VM box
    :box_name => "ubuntu/focal64",
    # VM CPU count
    :cpus => 2,
    # VM RAM size (Mb)
    :memory => 2024,
  }
}

В этом блоке мы определяем конфигурацию для одной виртуальной машины с именем “my-ubuntu-vm”. Она будет использовать образ “ubuntu/focal64” в качестве базового бокса, будет иметь 2 ядра CPU и 2 Гб оперативной памяти.

Vagrant.configure("2") do |config|
  MACHINES.each do |boxname, boxconfig|
    config.vm.synced_folder ".", "/vagrant", disabled: true
    config.ssh.insert_key = false
    config.vm.define boxname do |box|
      box.vm.box = boxconfig[:box_name]
      box.vm.box_version = boxconfig[:box_version]
      box.vm.host_name = boxname.to_s
      box.vm.provider "virtualbox" do |v|
        v.memory = boxconfig[:memory]
        v.cpus = boxconfig[:cpus]
      end
    end
  end
end

В этом блоке мы настраиваем Vagrant для создания виртуальной машины. Он итерируется по хэшу MACHINES, чтобы создать одну виртуальную машину.

Основные моменты:

  1. config.vm.synced_folder ".", "/vagrant", disabled: true – отключает синхронизацию папок между хостовой системой и виртуальной машиной.
  2. config.ssh.insert_key = false – отключает автоматическую вставку SSH-ключа при подключении к виртуальной машине.
  3. config.vm.define boxname do |box| – определяет конфигурацию для конкретной виртуальной машины.
  4. box.vm.box = boxconfig[:box_name] – устанавливает базовый бокс для виртуальной машины.
  5. box.vm.box_version = boxconfig[:box_version] – устанавливает версию базового бокса (в данном случае “latest”).
  6. box.vm.host_name = boxname.to_s – устанавливает имя хоста для виртуальной машины.
  7. box.vm.provider "virtualbox" do |v| – настраивает параметры виртуальной машины для провайдера Virtualbox.
  8. v.memory = boxconfig[:memory] и v.cpus = boxconfig[:cpus] – устанавливают размер RAM и количество ядер CPU для виртуальной машины.

Этот конфиг Vagrant создаст одну виртуальную машину с именем “my-ubuntu-vm” на основе образа Ubuntu 20.04 (focal64) с 2 ядрами CPU и 2 Гб оперативной памяти.

Что такое Vagrant и как его установить?
$ vagrant.exe ssh
Welcome to Ubuntu 20.04.6 LTS (GNU/Linux 5.4.0-193-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Tue Sep 24 10:39:37 UTC 2024

  System load:  0.03              Processes:               122
  Usage of /:   4.7% of 38.70GB   Users logged in:         0
  Memory usage: 12%               IPv4 address for enp0s3: 10.0.2.15
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

46 updates can be applied immediately.
28 of these updates are standard security updates.
To see these additional updates run: apt list --upgradable

Enable ESM Apps to receive additional future security updates.
See https://ubuntu.com/esm or run: sudo pro status

Поделись, по братски)