Vagrant используется для создания и управления виртуальными средами разработки. Основные цели применения Vagrant:
- Стандартизация и автоматизация настройки окружения разработки. Vagrant позволяет описывать конфигурацию виртуальной машины в файле Vagrantfile и развертывать её одной командой.
- Обеспечение портативности рабочего окружения. Разработчики могут воспроизводить одинаковое окружение на своих локальных машинах, на серверах CI/CD, в облаке и т.д.
- Изоляция и безопасность. Vagrant позволяет изолировать проект от системного окружения, избегая конфликтов между зависимостями различных проектов.
Процесс установки Vagrant:
- Скачать и установить VirtualBox с официального сайта: https://www.virtualbox.org/wiki/Downloads
- Скачать Vagrant с официального сайта: https://www.vagrantup.com/downloads
- Установить Vagrant, следуя инструкциям для вашей операционной системы.
- Создать новый Vagrantfile в директории проекта командой:
vagrant init
- Отредактировать Vagrantfile, указав необходимые параметры виртуальной машины, такие как операционная система, количество CPU, RAM, синхронизацию папок и т.д.
- Запустить виртуальную машину командой:
vagrant up
- Подключиться к виртуальной машине командой:
vagrant ssh
- Управлять виртуальной машиной другими командами 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
, чтобы создать одну виртуальную машину.
Основные моменты:
config.vm.synced_folder ".", "/vagrant", disabled: true
– отключает синхронизацию папок между хостовой системой и виртуальной машиной.config.ssh.insert_key = false
– отключает автоматическую вставку SSH-ключа при подключении к виртуальной машине.config.vm.define boxname do |box|
– определяет конфигурацию для конкретной виртуальной машины.box.vm.box = boxconfig[:box_name]
– устанавливает базовый бокс для виртуальной машины.box.vm.box_version = boxconfig[:box_version]
– устанавливает версию базового бокса (в данном случае “latest”).box.vm.host_name = boxname.to_s
– устанавливает имя хоста для виртуальной машины.box.vm.provider "virtualbox" do |v|
– настраивает параметры виртуальной машины для провайдера Virtualbox.v.memory = boxconfig[:memory]
иv.cpus = boxconfig[:cpus]
– устанавливают размер RAM и количество ядер CPU для виртуальной машины.
Этот конфиг Vagrant создаст одну виртуальную машину с именем “my-ubuntu-vm” на основе образа Ubuntu 20.04 (focal64) с 2 ядрами CPU и 2 Гб оперативной памяти.
$ 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