За останній час велика кількість інструментів для розробників неухильно зростає: Ansible, Otto, Vagrant, Nomad, Consul, Puppet, Chef ... Що це все? Щоб трохи прояснити ситуацію, сьогодні я б хотів розповісти про таку чудову інструменті як Vagrant, який сам використовую практично кожен день.
Що таке Vagrant?
Vagrant це інструмент, що дозволяє уніфікувати середовище розробки і середу в якій цей код буде розгортатися, використовуючи технологію віртуалізації. Простіше кажучи, якщо ви як і я любитель робити проекти в середовищі Windows, але в майбутньому розгортати їх на * nix машинах, то Vagrant вам на допомогу :-) Дуже часто виникають проблеми на тлі того, що середовище розробки значно відрізняється від середовища, де буде крутитися кінцеве додаток. Наприклад, в Windows назву папки з Заголовною букви і з малої це одне і те ж, хоча в unix системах це дві різні папки.
З висоти пташиного польоту, Vagrant ніщо інше як CLI (інтерфейс командного рядка) для VirtualBox з блекджек і Vagrantfile.
В якості демонстраційного прикладу ми створимо ізольовану операційну систему на базі Ubuntu 14.04.3 LTS з віртуальним оточенням Python + працюючим Django додатком всередині.
Термінологія
- Віртуальна ОС - ізольована операційна система, що працює всередині програми-емулятора
- Програма-емулятор - програма, яка використовує апаратні засоби віртуалізації комп'ютерного процесора (прим. VirtualBox, VMWare, Parallels Desktop і т.д.) для створення ізольованих віртуальних операційних систем всередині 1 фізичної машини
- Vagrant - програма-обгортка навколо програми-емулятора "з пляшками"
- Vagrantfile - файл, що описує характеристики і поведінку майбутньої віртуальної операційної системи на мові програмування Ruby
установка
Весь процес установки і настройки буде відбуватися в Windows середовищі. Для того щоб встановити Vagrant, необхідно виконати наступні кроки:
При установці Vagrant і VirtualBox не повинно виникнути ніяких проблем, тому відразу можна переходити до наступного пункту - налаштування.
Налаштування
Після установки Vagrant і VirtualBox бажано перезавантажити комп'ютер. Якщо все пройшло без косяків, то можна приступити до запуску першої віртуальної машини.
Для цього необхідно ввести наступні команди:
mkdir vagrant_demo && cd vagrant_demo vagrant init ubuntu / trusty64
Тим самим ми створили Vagrantfile, в якому задані настройки за замовчуванням, а саме:
- Як дистрибутива використовується Ubuntu 14.04
- Порт 22 гостьовий (віртуальної) машини прокидати на 2 222 порт хост машини
- Поточна директорія ./vagrant_demo прокидати на директорію / vagrant віртуальної машини
- Гостьовий системі виділяється 512 МБ ОЗУ і 40 ГБ жорсткого диска
Вміст Vagrantfile ніщо інше як код на мові Ruby, що задає певні характеристики і поведінку.
ubuntu / trusty64 - це кодова назва vagrant box, тобто готового образу системи. Всі образи так званих vagrant boxes можна знайти тут .
Для того щоб запустити віртуальну машину необхідно виконати:
vagrant up
Нижче представлений скріншот процесу завантаження боксу і його подальшої установки
Після успішного завантаження та налаштування досить виконати команду
vagrant ssh
Але, в стандартній Windows відсутня утиліта ssh, тому можна отримати ось таке повідомлення про помилку:
`Ssh` executable not found in any directories in the% PATH% variable. Is an
SSH client installed? Try installing Cygwin, MinGW or Git, all of which
contain an SSH client. Or use your favorite SSH client with the following
authentication information shown below:
...
Але не варто засмучуватися, досить встановити пакет утиліт Cygwin і прописати в змінну PATH шлях до бінарників.
Після успішного виконання команди з'явиться вікно з шеллом:
Вітаю! Перший етап виконаний. Для відключення виртуалки необхідно виконати команду з хост-машини:
vagrant halt
Список основних команд:
- vagrant halt - зупиняє віртуальну машину
- vagrant destroy - видаляє віртуальну машину
- vagrant suspend - "заморожує" віртуальну машину
- vagrant global-status - виводить список всіх раніше створених віртуальних машин в хост-системі
- vagrant ssh - підключається до віртуальної машини по SSH
Демо приклад з Vagrant, що піднімає окрему віртуальну машину з віртуальним оточенням Python на борту, а також Django додатком, можна знайти на моєму гітхаб репозиторії . Досить склоніровать реп, перейти в папку і викликати команду vagrant up. Vagrant встановить Ubuntu 14.04.3 LTS і всі необхідні пакети, по завершенню установки досить буде зайти на віртуальну машину і викликати runserver.
Django додаток можна побачити на 18000 порту хост-машини.
Корисні посилання:
Що таке Vagrant?Що це все?
Що таке Vagrant?