Vagrant. Установка и первый запуск

VagrantВ большинстве предыдущих статье писалось о установке и настройке различных сервисов под Linux дистрибутивами. Шла речь о выделенных серверах и физических площадках, но когда нужно проводить тестирование того или иного сервиса, кластера, технологии и т.п. – нужно использовать виртуализацию. Зачастую, пользователи Windows используют VirtualBox, VMware и чтобы развернуть новую Linux площадку нужно:

  1. Скачать нужный дистрибутив
  2. Создать виртуальную машину на его основе со всеми обновлениями(темплейт)
  3. Сделать один или пару клонов темплейта
  4. Запустить каждый из клонов и настроить сеть, hosts-файл, hostname, т.п.
  5. Установить и настроить нужный софт
  6. Провести испытания
  7. Удалить площадку по завершению тестов, и т.п.

Все эти действия поначалу и я делал руками. И это занимало очень много времени. К примеру, для настройки mysql кластера из 6-ти машин нужно было создать 6 клонов (пункт 3), зайти в каждый из них и настроить статический IP (все писать вручную, так как буфер не работает), поменять хостнейм, обновить hosts-файл и т.п.
В данной статье я хочу написать о такой полезной штуке, как Vagrant и о том, как она мне помогла автоматизировать процесс создания тестовой площадки любых масштабов.

Пролог

В роли хостовой машины у нас выступает Windows 8.1.
В роли эмулятора виртуальных машин – VirtualBox.
В роли гостевой ОС – Ubuntu 12.04.

Vagrant – это утилита, которая позволяет создать, поднять и настроить виртуальную площадку любых размеров в течении нескольких минут. Она работает с такими известными провайдерами (эмуляторами) как VirtualBox, VMware, AWC и имеет поддержку custom-ных провайдеров.
Для работы с VirtualBox виртуальными машинами vagrant использует VBoxManage. Это интерфейс командной строки, который позволяет полностью контролировать Vbox из консоли (детали и список всех опций и действий можно почитать здесь ).

1. Установка

Для начала установим vagrant под Windows 8.1. Все что нужно сделать, это перейти на сайт, скачать последний бинарник под Windows и установить.
vagrant1
Установка стандартная, только нужно жать Далее.
vagrant2
vagrant_install2

vagrant_install3

vagrant_install4

vagrant_install5

vagrant_install6

После установки, нужно проверить или vagrant попал в переменную пути (Path), чтобы нам не пришлось полностью прописывать путь. Для этого, правой кнопкой мишки на Мой компьютер —> Свойства и выбираем Дополнительные параметры системы. Там есть пункт Дополнительно, где нужно выбрать Переменные среды. И находим переменную Path, где должна быть строка с путем к Vagrant bin. Смотрите картинку ниже (у меня интерфейс на английском, так что смотрите по расположению вкладок и кнопок).
vagrant3

Переменная есть, теперь можно проверить работоспособность.

2. Первый запуск

Для vagrant удобно использовать powershell – запускаем. Теперь создаем папку в которой будем инициализировать окружение и побырику поднимем дефолтный образ Ubuntu 12.04 (система сама скачает нужный образ из готового репозитория).

PS D:\> mkdir vagrant_test

    Directory: D:\

Mode                LastWriteTime     Length Name
----                -------------     ------ ----
d----        10/14/2015   2:18 PM            vagrant_test

PS D:\> cd .\vagrant_test

PS D:\vagrant_test> vagrant init hashicorp/precise32
A `Vagrantfile` has been placed in this directory. You are now
ready to `vagrant up` your first virtual environment! Please read
the comments in the Vagrantfile as well as documentation on
`vagrantup.com` for more information on using Vagrant.

PS D:\vagrant_test> vagrant up
Bringing machine 'default' up with 'virtualbox' provider...
==> default: Box 'hashicorp/precise32' could not be found. Attempting to find and install...
    default: Box Provider: virtualbox
    default: Box Version: >= 0
==> default: Loading metadata for box 'hashicorp/precise32'
    default: URL: https://atlas.hashicorp.com/hashicorp/precise32
==> default: Adding box 'hashicorp/precise32' (v1.0.0) for provider: virtualbox
    default: Downloading: https://atlas.hashicorp.com/hashicorp/boxes/precise32/versions/1.0.0/providers/virtualbox.box
    default: Progress: 100% (Rate: 5381k/s, Estimated time remaining: --:--:--)
==> default: Successfully added box 'hashicorp/precise32' (v1.0.0) for 'virtualbox'!
==> default: Importing base box 'hashicorp/precise32'...
==> default: Matching MAC address for NAT networking...
==> default: Checking if box 'hashicorp/precise32' is up to date...
==> default: Setting the name of the VM: vagrant_test_default_1444823143658_13960
==> default: Clearing any previously set network interfaces...
==> default: Preparing network interfaces based on configuration...
    default: Adapter 1: nat
==> default: Forwarding ports...
    default: 22 => 2222 (adapter 1)
==> default: Booting VM...
==> default: Waiting for machine to boot. This may take a few minutes...
    default: SSH address: 127.0.0.1:2222
    default: SSH username: vagrant
    default: SSH auth method: private key
    default: Warning: Connection timeout. Retrying...
    default: Warning: Connection timeout. Retrying...
    default: Warning: Connection timeout. Retrying...
    default: Warning: Connection timeout. Retrying...
    default: Warning: Remote connection disconnect. Retrying...
    default: Warning: Remote connection disconnect. Retrying...
    default:
    default: Vagrant insecure key detected. Vagrant will automatically replace
    default: this with a newly generated keypair for better security.
    default:
    default: Inserting generated public key within guest...
    default: Removing insecure key from the guest if its present...
    default: Key inserted! Disconnecting and reconnecting using new SSH key...
==> default: Machine booted and ready!
==> default: Checking for guest additions in VM...
    default: The guest additions on this VM do not match the installed version of
    default: VirtualBox! In most cases this is fine, but in rare cases it can
    default: prevent things such as shared folders from working properly. If you see
    default: shared folder errors, please make sure the guest additions within the
    default: virtual machine match the version of VirtualBox you have installed on
    default: your host and reload your VM.
    default:
    default: Guest Additions Version: 4.2.0
    default: VirtualBox Version: 4.3
==> default: Mounting shared folders...
    default: /vagrant => D:/vagrant_test

Вот и все. У нас поднялась новая виртуальная машина к которой мы можем подключиться по SSH используя адрес 127.0.0.1 и порт 2222. Для подключения можно использовать Putty, SecureCRT или любой другой клиент. Я пользуюсь SecureCRT, в связи с чем подключение выглядит следующим образом.
vagrant-ssh

После подключения мы попадем в консоль к тестовой Убунте. Идем далее.
В поточной директории у нас создался файл с настройками виртуальной среды – Vagrantfile.

PS D:\vagrant_test> ls

    Directory: D:\vagrant_test

Mode                LastWriteTime     Length Name
----                -------------     ------ ----
d----        10/14/2015   2:19 PM            .vagrant
-a---        10/14/2015   2:19 PM       3102 Vagrantfile

Используя этот файл vagrant настраивает и создает виртуальные машины различных провайдеров (эмуляторов виртуальной среды). Изначально, файл имеет только три полезные строки

Vagrant.configure(2) do |config|
  config.vm.box = "hashicorp/precise32"
end

То есть, для создания виртуальных машин будет использоваться «hashicorp/precise32» box, который мы скачали. Детально этот файл будет рассмотрен в следующей статье.
Пока остановим и удалим новосозданную виртуальную машину.

PS D:\vagrant_test> vagrant halt
==> default: Attempting graceful shutdown of VM...

PS D:\vagrant_test> vagrant destroy
    default: Are you sure you want to destroy the 'default' VM? [y/N] y
==> default: Destroying VM and associated drives...

Это только начало. На данном этапе, каждый раз, когда мы хотим создать новую виртуальную машину – мы будем создавать ее из скаченного из vagrant сайта образа. Нам же нужно создать свой собственный образ, настроить его под себя как темплейт и на основе его создавать тестовое окружение. О чем и пойдет речь в следующей статье.

Автор: admin, 14 октября 2015
Рубрики: Системы виртуализации
Метки:
6 комментариев к сообщению: “Vagrant. Установка и первый запуск”
  1. Andrey:

    А почему не Ansible? Так понял, что с вагрантом, из-за его привязке к «дисктопной виртуализации», не получится развернуть точно такое же окружение уже в продакшене, где приходится уже иметь дело с гипервизорами. Поэтому среда разработки и конечная среда будут различаться. Ansible же без разницы, главное ssh доступ.

    • При чем здесь Ansible? Ansible идет в сочитании с vagrant, а не заменяет его — это разные вещи. Используя Vagrant мы поднимаем виртуальные машины(создаем площадку), а используя Ansible — мы устанавливаем нужный софт (приводим к нужному состоянию). Можно, конечно, используя Ansible развернуть Vagrant и поднять этим же Vagrant-ом виртуальную площадку, но статья о работе под Windows — где так просто все не сделать.
      В сети я также находил OpenVZ и KVM провайдеры под vagrant, но испытаний не проводил.
      И здесь больше идет изучение работы/деплой сервисов, приложений и кластеров. Операционная система остается той же, так что с переносом на прод вообще проблем нет — пишем Ansible playbook, ставим все на виртуальной среде. Заработало — ставим на прод серверах на реальное железо на ту же ОС.

      • Andrey:

        В том что в связке Vagrant + Ansible, Vagrant легко заменяется шаблоном ВМ, а потом Ansible уже все необходимое накатывает и не надо никаких мучений с дополнительными провайдерами.
        На мой взгляд, это просто лишняя сущность, хотя я не настолько хорошо разбираюсь в вопросе, поэтому и спросил.
        В любом случае, спасибо, за материал.

        • А кто создаст и запустит 10 виртуальных машин с 5-тью сетевыми интерфейсами (к примеру) ?
          Т.е. как Вы ansebl-ом сможете создать 10 машин на основе темплейта, включить их и добавить им по 5-ть интерфейсов?

          • Andrey:

            Ну зачем же создавать ВМ Ansibl’ом? Это вполне рутинная задача, руками развернуть из шаблона и занимает совсем мало времени, и в автоматизации не нуждается.
            Хотя, если есть требования к скорости развертывания и количеству машин, которые надо поднять за раз, то тут уже можно подумать о автоматизации.
            В этом сценарии действительно, можно увидеть необходимость в Vagrant.
            Именно этот момент в самом начале я и упустил, еще раз спасибо, помогли разобраться.

          • Рад был помочь

Написать комментарий

Последние статьи

Яндекс.Метрика
?>