4237
4.4444444444444 1 1 1 1 1 1 1 1 1 1 Rating 4.44 (9 Votes)
vagrant logoДля начала скажу какие среды поддерживает Vagrant и позволяет ими управлять:
Легко управлять и хранить конфигурации в Git... Уже интересно, не так ли?

Кратко о Vagrant и Hashicorp

Vagrant - это Open Source продукт от компании, которая предлагает мощные и открытые проекты, такие как - Terraform, Vault, Consul... Если ты еще не знаешь, что это и кто это все производит, то не отставай от жизни и прямиком пиз#уй иди на офф сайт Hashicrop и начинай познавать облачный дзен при помощи программной продукции и документации к ней найденной по представленной ссылке выше :)

Для чего Vagrant?

Итак, что же такое Vagrant и что можно при его помощи сделать? Я как иногда разработчик, но больше тестировщик различных систем использую распространенные системы виртуализации или попросту гипервизоры, очень часто это - KVM и VirtualBox, реже VMWare и Hyper-V, далее все повествование пойдет про связку Vagrant + VirtualBox, которые крутятся на моей Fedora. Скажу сразу, что для Vagrant нет разницы где работать (равно как и для VB), это может быть Linux, Windows, MacOS...

Кратко, что может Vagrant

По сути это своего рода оркестратор... Это система, которая идеально подходит для локальных сред, где производится разработка, тестирование, где нужно что-то быстро "поднять", "убить", подготовить, изменить и т.п. и самое главное - управлять всеми этим процессами, хранить и быстро адаптировать конфигурации для мульти-проектов. Собственно в качестве источников по документальной матчасти и самого ПО можно использовать офф сайты:
Все остальные ссылки будут даны далее по тексту или полагаю, в случае необходимости ты их сам(а) сможешь найти самостоятельно в нете.

Установка Vagrant и необходимого софта

В Fedora, Vagrant ставится из "коробки":
dnf install vagrant
Как установить VirtualBox я когда-то писал в статье - Установка VirtualBox в Fedora + понадобится еще VB Extension Pack, об этом я тоже писал в статье.  Как вариант, можно использовать самый простой способ - загрузить VB с офф сайта (ссылка выше), так же понадобится установка git:
dnf install git
Ну и для написания скриптов / правки конфигураций я использую Sublime, кому как удобней. 

Настройка Vagrant окружения

Создадим папку проекта в любом удобном для себя месте и перейдем в нее:
mkdir vagrant-lesson && cd vagrant-lesson
Инициируем первую ВМ, в нотации Vagrant это называется Box. Любителям Ubuntu можно использовать образ Ubuntu, любителям CentOS - использовать CentOS и т.п., на странице приложений Vagrant Boxes каких только нет образов, в крайнем случае образ можно будет создать самому, короче, для примера инициализируем Ubuntu (чуть позже, далее везде буду использовать CentOS):
vagrant init ubuntu/trusty64
В папке проекта создастся файл Vagrantfile, в него необходимо добавить используемого нами виртуального провайдера, в данном случае, это VirtualBox:
ENV['VAGRANT_DEFAULT_PROVIDER'] = 'virtualbox'
 
vagrant vagrantfile
 
Стартуем машину:
vagrant up
 
vagrant up
 
Совершаем вход по ssh на новую машину используя команду:
vagrant ssh
Смотрим данные по дистру используя lsb_release -a:
 
vagrant up2
 
Из гостя пробуем открыть наш Vagrantfile:
nano /vagrant/Vagrantfile
Видим нашу строку с провайдером, добавляем в конфиг новую строку:
 
 vagrant up3
 
Сохраняем, выходим из ssh сессии при помощи команды exit, открываем Vagrantfile, убеждаемся, что новая строка в конфиг добавлена.

Пауза, выключение, просмотр статуса, удаление Vagrant Box'a

Просмотр статуса:
vagrant status
Постановка на паузу:
vagrant suspend
Старт машины:
vagrant up
Выключение:
vagrant halt
Удаление бокса:
vagrant destroy

Управление Vagrant боксами

Расскажу кратко. Смотрим какие боксы у нас добавлены:
vagrant-lesson $ vagrant box list
hashicorp/precise64 (virtualbox, 1.1.0)
ubuntu/trusty64     (virtualbox, 20180604.0.0)
Добавляем бокс с CentOS 7:
vagrant box add generic/centos7

Итог

Мне по функциональности и по гибкости Vagrant "зашел" на "ура", действия по автоматической установке софта в машины, их обновлению и автоматически-разворачиваемом LAMP сервере, работе с различными боксами, хранение конфигов, скриптов и конфигураций в Git, а так же управлению всем этим добром при помощи Ansible или Chef планирую рассказать позже, если хочется продолжения ставь звезды или пиши в личку, я подумаю, что можно будет с этим сделать в дальнейшем :)

Доп. ссылки