MyTetra Share
Делитесь знаниями!
Начало работы с Vagrant
13.01.2019
16:53
Автор: alensav
Текстовые метки: vagrant, утилита, виртуалка
Раздел: MyTetra - Ubuntu_Command

Начало работы с Vagrant и зачем он вообще нужен

19 января 2015

В первом приближении Vagrant — это такой CLI для VirtualBox. То есть, утилита, которая говорит «создать виртуалку», «запустить виртуалку» и так далее. На самом деле, Vagrant представляет собой нечто куда большее. В частности, помимо VirtualBox есть немало других так называемых провайдеров — VMWare, Amazon EC2, LXC и libvirt.

Для каких задач может пригодиться Vagrant?

  • Вам просто нравится CLI и нужна виртуальная машина чтобы с чем-то там поиграться;
  • Такой жесткий способ изолировать ненадежное, например, в плане безопасности, приложение ото всей остальной системы;
  • Быстрый способ развернуть на сервере какой-нибудь готовый LAMP ценой накладных расходов на виртуализацию;
  • Проверить, как ведет себя распределенное приложение при сетевых проблемах и падении машин;
  • Еще при тестировании удобно иметь какой-то начальный образ системы, к которому можно откатиться перед следующим прогоном тестов;
  • И опять таки, тестирование — вы разрабатываете под x64 c 16 Гб памяти, а хотите проверить, что программа работает на x86 с 512 Мб памяти;
  • Иногда выгоднее купить одну жирную тачку и разместить на ней несколько ВМ, чем покупать несколько физических машин;
  • В ряде случаев с Vagrant’ом намного удобнее мигрировать приложение с хоста на хост (в частности, передать сайт другому владельцу);
  • Как замена deb- и rpm-пакетам, которая умеет разрешать конфликты зависимостей всяких криво написанных приложений, как бы создавая для них «песочницы»;
  • Вы сидите под Ubuntu, а вам для решения каких-то задач иногда нужна другая ОС — CentOS, FreeBSD, OpenBSD или Windows;

Как видите, штука полезная. Давайте же научимся ею пользоваться!

VirtualBox качаем отсюда, а Vagrant — отсюда. Устанавливаем:

sudo dpkg -i virtualbox-4.3_4.3.20-96996~Ubuntu~raring_amd64.deb
sudo dpkg -i vagrant_1.6.5_x86_64.deb

Чтобы не возиться со всякими там ISO-образами в Vagrant есть такое понятие, как боксы. Бокс — это сохраненный образ системы. Чтобы создать новую виртуалку, вам нужен бокс. Когда вы архивируете состояние вашей ВМ, на выходе также получаете бокс. Скачаем бокс с Ubuntu 14.04:

vagrant box add ubuntu/trusty64
vagrant box list

Теперь создадим новую виртуалку:

mkdir -p ~/vagrant/ubuntu-test
cd ~/vagrant/ubuntu-test
vagrant init ubuntu/trusty64

В каталоге появится файл с именем Vagrantfile. Здесь задаются параметры ВМ. Можно изменить ограничения по памяти и CPU, включить или отключить шаринг каталогов с хост-системой, поправить настройки сети, в том числе — настроить проброс портов из гостевой системы в хост-систему, и так далее. Кстати, по умолчанию все виртуалки находятся в одной виртуальной LAN и видят друг друга. Здесь и далее в качестве провайдера мы будем использовать VirtualBox. Он очень гибок в плане настроек. В частности, в Vagrantfile можно передать любые аргументы утилите VBoxMange, что не удивительно, так как под капотом всю виртуализацию Vagrant делает с ее помощью.

Чтобы у ВМ были красивые имена в интерфейсе VirtualBox, а также выводе vagrant global-status, я всегда прописываю в Vagrantfile что-то вроде:

  # имя в `vagrant global-status`
  config.vm.define "ubuntu1" do |t|
  end
  # имя в VirtualBox
  config.vm.provider "virtualbox" do |v|
    v.name = "ubuntu1"
  end

Запустим виртуалку и зайдем в нее по ssh:

vagrant up
vagrant ssh
# что дописать в ~/.ssh/config для входа в виртуалку:
# vagrant ssh-config

Тут следует отметить, что говоря vagrant up вы должны находится в одном каталоге с Vagrantfile. При этом после запуска ВМ вы сможете обращаться к ней по id уже из любого каталога. А физически все виртуалки лежат вовсе не рядом с Vagrantfile, а в каталоге ~/VirtualBox VMs/. Есть подозрения, что интерфейс у Vagrant мог бы быть более однотипным, и от этого более простым и понятным, но уж как сделали.

Попав внутрь ВМ вы обнаружите, что работаете под пользователем vagrant, который может делать sudo без пароля. При этом есть возможность обмениваться файлами с хост-системой:

echo "hello from vagrant" > /vagrant/hello

Файл hello появится в каталоге ~/vagrant/ubuntu-test хост-системы. В гостевой системе доступ к каталогу /vagrant/ имеет только пользователь vagrant. Если вдруг такой способ взаимодействия с гостевой системой кажется вам неудобным, ничто не мешает завести обычного пользователя, сказать ssh-copy-id и обмениваться файлами с помощью scp.

Если в хост-системе сказать:

vagrant global-status

… то можно увидеть все ВМ и их состояние.

Если ВМ удалялась не через Vagrant, она может остаться в global-status. Лечится это так:

vagrant global-status --prune

Виртуалки можно ставить на паузу:

vagrant suspend 1f2a1a5
vagrant resume ubuntu1

Заметьте, что можно использовать не полный id вируталки (1f2a1a5), а только его начало (например, 1f). Кроме того, если вы присвоили ВМ имена, как было описано выше, то можно использовать их.

Полная останова и запуск:

vagrant halt 1f
vagrant up 1f

Удаление ВМ:

vagrant destroy 1f

Можно создать из виртуалки бокс, сказав в каталоге с Vagrantfile:

vagrant package

Появится файл package.box (у меня он получился около 350 Мб). Упаковывать его не нужно, это уже сжатый файл.

Импорт бокса:

vagrant box add myubuntu package.box
vagrant box list
vagrant box remove myubuntu

Часто требуется присвоить виртуалке фиксированный IP в LAN. Для этого находим в Vagrantfile строку, похожую на следующую, раскомментируем и правим:

config.vm.network "private_network", ip: "10.110.0.10"

Проверяем:

vagrant reload 1f
ping 10.110.0.10

В качестве примера альтернативного провайдера рассмотрим vagrant-lxc. Как вы догадались, он позволяет делать все, что было описано выше, используя LXC вместо VirtualBox. Если в двух словах:

# ставим плагин
vagrant plugin install vagrant-lxc
# создаем и запускаем виртуалку
vagrant init fgrehm/precise64-lxc
vagrant up --provider=lxc

Подробности можно найти на GitHub’е плагина.

Как видите, все довольно просто. Дополнительную информацию вы можете найти по следующим ссылкам:

А пользуетесь ли вы Vagrant и если да, то для каких задач?

Дополнение: Также вас могут заинтересовать заметки Контейнерная виртуализация при помощи OpenVZ, Зачем нужен Docker и практика работы с ним и Туториал по контейнеризации при помощи LXC.

Метки: Linux, Виртуализация.

====================================

https://www.shellhacks.com/ru/vagrant-tutorial-for-beginners/

Что такое Vagrant? Vagrant — это простой и удобный в использовании инструмент, позволяющий легко управлять виртуальными машинами из командной строки.

Vagrant из коробки поддерживает VirtualBox, Hyper-V, Docker, а также имеет возможность управлять другими типами машин, как например VMWare или Amazon EC2, с помощью других так называемых провайдеров.

В данной статье я покажу, как создать новое Vagrant-окружение, скачать, сконфигурировать и запустить виртуальную машину, как подключиться к ней по SSH и как затем остановить или полностью уничтожить ее.

Это руководство предполагает, что вы уже установили один из поддерживаемых виртуальных провайдеров, как например VirtualBox или Docker.

Дельный Совет: Установите Docker в Ubuntu-16.04 или Ubuntu-18.04 и используйте его вместе с Vagrant!

Установка Vagrant

Скачайте и установить последнюю версию Vagrant из официального источника.

Чтобы убедиться в том, что Vagrant был успешно установлен — проверьте его версию:

$ vagrant -v
Vagrant 2.0.0

Vagrant Boxes

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

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

VirtualBox ≠ VMWare: Все Vagrant-боксы провайдеро-зависимые. Не все боксы доступны для всех провайдеров. Возможно, чтобы сузить область поиска, вам следует отсортировать результаты по тому провайдеру, который необходим именно вам.

Как только вы нашли образ который хотите использовать — создайте директорию в которой будет храниться ваш новый проект:

$ mkdir -p vagrant-projects/tutorial
$ cd vagrant-projects/tutorial

Чтобы создать новое Vagrant-окружение внутри папки проекта — выполните vagrant init <boxpath>, где <boxpath> — название Vagrant-бокса.

Например, чтобы установить базовый образ Ubuntu-16.04, выполните:

$ vagrant init ubuntu/xenial64

Команда vagrant init в текущей директории создает файл Vagrantfile, в котором описывается тип необходимой для проекта машины, каким образом ее сконфигурировать и какие ресурсы выделить.

Vagrant Up

Запустите Vagrant-окружение:

$ vagrant up

Команда vagrant up создает, настраивает и запускает виртуальную машину исходя из параметров заданных в Vagrantfile.

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

Дельный Совет: Каждый DevOps должен знать основы работы с Git. И вы можете освоить их прямо сейчас! Читать далее →

Vagrant SSH

Чтобы подключиться по SSH к запущенной Vagrant-машине и попасть в консоль, выполните:

$ vagrant ssh

Очистка Vagrant

Если необходимо приостановить процесс разработки — вы можете полностью остановить Vagrant-машину либо просто приостановить ее.

Остановить Vagrant-машину:

$ vagrant halt

Приостановить машину (запомнить состояние):

$ vagrant suspend

Чтобы полностью очистить окружение — вы можете уничтожить машину.

Остановить и удалить все следы Vagrant-машины:

$ vagrant destroy

Когда вам снова понадобиться чистое Vagrant-окружение на основе стандартного темплейта — просто выполнитье vagrant up.

Так же в этом разделе:
 
MyTetra Share v.0.52
Яндекс индекс цитирования