• Главная
  • Карта сайта
Не найдено

Початок роботи з Vagrant

зміст

початок

  • Де взяти VirtualBox
  • установка Vagrant

Ваше перше віртуальне оточення Vagrant

  • Переваги від використання Vagrant
  • Переваги для одного розробника
  • Переваги для команди розробників
  • Переваги для компанії

Налаштування проекту

  • Vagrantfile
  • Налаштування Vagrant проекту
  • Налаштування Web-проекту

Образи віртуальних машин (Віртуальні бокси)

  • Отримання базового образу віртуальної машини
  • Видалення віртуальних боксів
  • Налаштування Проет для використання потрібного віртуального боксу
  • Перевірка настройки

Налаштування SSH

Забезпечення для віртуальних боксів (Provisioning)

Кидок портів (Port Forwarding)

Пакетування (Packaging)

Зупинка віртуальних боксів (Teardown)

  • Suspend - догляд в сплячий режим зі збереженням поточного стану системи
  • Halting - звичайне завершення роботи
  • Destroing - завершення роботи з очищенням всіх файлів боксу

Швидка Перезбірка

Початок

Vagrant це менеджер ваших віртуальних оточень для розробки. Фактично він є надбудовою над програмою VirtualBox від Oracle, і забезпечує швидке створення і налаштування віртуальних машин. Створені таким чином віртуальні машини - бокси (boxes) використовуються розробниками web-додатків для побудови необхідного середовища розробки. Потім вони можуть бути упаквани в спеціальні контейнери (бокси), для установки і використання іншими розробниками в команді.

Г де взяти VirtualBox

Vagrant повністю залежить від програми VirtualBox і використовує її для створення віртуальних образів. Основним призначенням VirtualBox є повна віртуалізація x86 обладнання. Це проект з відкритим вихідним кодом, який забезпечує віртуалізацію на професійному рівні і може бути використана як на серверах так і на десктопних комп'ютерах для побудови віртуальних середовищ. VirtualBox доступний для Windows, Mac OS X, Linux і Solaris.

Ось посилання на сторінку завантаження VirtaulBox .

На поточний момент Vagrant підтримує VirtualBox 4.0.x, 4.1.x і 4.2.x.

У становленнЯ Vagrant

Щоб встановити Vagrant, необхідно завантажити відповідний пакет або установник з Сторінка завантаження і встановити його, використовуючи стандартну процедуру встановлення програми на вашій системі. В операційних систма Windows і Mac OS X після установки програми буде доступна команда Vagrant з командного рядка. На інших систма вам необхідно буде самим додати цей шлях / opt / vagrant / bin в змінну оточення PATH.

Якщо ви не знайшли для вашої системи установник Vagrant, то ви можете встановити його використовуючи RubyGems за допомогою команди gem install vagrant. Але пам'ятайте, що установка з пакетів або через установник є найкращим способом установки програми.

В аше перший віртуальний оточення Vagrant

У командному рядку набираючи:

$ Vagrant box add precise32-box http://files.vagrantup.com/precise32.box

$ Vagrant init precise32-box

$ Vagrant up

Ці команди необхідні для запуску віртуальної машини за допомогою Vagrant. Врахуйте, що команди вище запускають повнофункціональну віртуальну машину на операційній системі Ubuntu 12.04LTS precise з об'ємом пам'яті за замовчуванням в 512Мб.

П реімущества від використання Vagrant

Багато Web-розробником використовують віртуальне оточення для розробки своїх Web-додатків. Все більшу популярність зараз набирають хмарні сервіси для побудови і розгортання віртуальних оточень для продакшена і розробки, починаючи від EC2 , Rackspace Cloud і закінчуючи більш спеціалізованими як EngineYard і Heroku . Vagrant реалізує схожі принципи при створення віртуальних машин для локальної розробки та тестування ваших програм на робочому комп'ютері. Така організація роботи підвищує гнучкість і продуктивність як вас так і вашої команди при розробці web-додатків.

Для розгортання і налаштування віртуальних оточень Vagrant використовує досить зарекомендували себе технології віртуалізації в особі VirtualBox від Oracle і технології автоматіцірованного розгортання додатків від Chef і Puppet .

П реімущества для одного розробника

Використання однотипного оточення розробки для різних проектів розрахованих для різних версій мов програмування і фреймворків часто дуже важке завдання. Як бути, якщо один проект працює на PHP4, другий на PHP 5.2.x, а третій на PHP 5.3.x або 5.4.x і його необхідно тестувати в тій версії мови на яку він розрахований?

Ставити купу різних версій мов і сервісів і завантажувати робочу машину, не варіант, тому що рано чи пізно ваша система почне довго завантажуватися, гальмувати і глючить. Ще один момент, полягає в тому, що Йю з робочих проектів працює в продакшені на сервері, де стоїть певне оточення, тому при розробці такого проекту треба, щоб оточення на комп'ютері розробника точно відповідати оточенню на робочому сервері, щоб розробник міг бути повністю впевнений в тому, що у нього не буде неприємних сюрпризів при розгортанні свого web-додатки на робочому сервері.

Vagrant вирішує ці проблеми. За допомогою нього ви можете створювати віртуальні машини з оточенням необхідним для кожного конкретного проекту. При перемиканні з одного проекту на інший, ви просто парою команд зупиняєте одну віртуальну машину і піднімаєте іншу потрібну для іншого проекту. Все геніально і прсто!

П реімущества для команди розробників

Всі учасники команди в ідеалі повинні мати однакове оточення розробки: однакові версії, залежно, настройки і т.д. адже по ідеї команда працює над спільними проектами. Але що якщо частина команди працює над проектом з одного версій бази даних, наприклад, MySQL , А інша частина - над проектом де використовується PostgreSQL або MSSQL . Що якщо одному учаснику команди потрібно приступити до розробки іншого проекту, у якого інша версія мови або бази даних і т.д. Вобщем, суцільний головний біль, яка веде до уповільнення розробки та зменшення ефективності команди.

В цьому випадку Vagrant дозволяє команді створювати і використовувати готові образи віртуальних оточень для соотвествующих проектів. Коли інший учасник команди приєднується до розробки іншого проекту, він просто бере у своїх колег образ віртуальної машини для цього проекту і розгортає цей образ у себе. Все, за лічені хвилини розробник отримує готове оточення і може спокійно приступати безпосередньо до своєї частини роботи.

П реімущества для компанії

Якщо у вас велика компанія і ви працюєте на великим країнам, що розвиваються проектом, то вам пстоянно доводиться додавати якісь нові компоненти в інфраструктуру додатки, наприклад, різні системи кешування, обробники подій, сервера баз даних і т.д. В цьому випадку Vagrant надає вам засіб для створення і поширення готових оточень розробки. Тепер якщо до вас в компанію приходить новий співробітник то йому немає необхідності витрачати масу часу на початкову настройку всієї своєї системи, щоб приєднатися до розробки програми.

Н астройка проекту

Після того як ви встановили Vagrant на свою систему, все його управління здійснюється через команду vagrant. У цієї команди є безліч необхідних подкомманд, наприклад, vagrant up - для запуску віртуальної машини, vagrant ssh - для підключення по ssh , Vagrant package - для створення пакета поточного віртуального оточення готового до развертианію на іншому комп'ютері і т.д. Щоб переглянути всі доступні команди, просто наберіть в командному рядку команду vagrant.

Щоб переглянути всі доступні команди, просто наберіть в командному рядку команду vagrant

V agrantfile

Vagrantfile для Vagrant як Makefile для Make . Vagrantfile розташовується в корені кожного Vagrant проекту і використовується для настройки поведінки самого Vagrant і віртуальних машин створених за допомогою нього. Приклад вмісту цього файлу наведено нижче:

Vagrant :: Config.run do | config |

# Setup the box

config.vm.box = "my_box"

end

Як ви бачите, вміст файлу це код на мові Ruby .

Н астройка Vagrant проекту

Першим кроком для будь-якого проекту Vagrant є створення кореневої директорії проекту і ініціалізація проекту:

$ Mkdir my_vagrant_project

$ Cd my_vagrant_project

$ Vagrant init

команда vagrant init створить файл Vagrantfile. Поки ми залишимо цей файл як є, але далі ми будемо його редагувати для настройки віртуальної машини нашого проекту.

Н астройка Web-проекту

Тепер коли Vagrant налаштований, давайте створимо невеликий web-проект, який будемо потім використовувати для демонстрації роботи Vagrant. Створіть в корені Vagrant проекту (де розташований файл Vagrantfile ) Індексний html файл:

$ Echo "<h1> Hello from a Vagrant VM </ h1>"> index.html

В принципі на цьому настройка web-Проет закінчена.

Про Бразил віртуальних машин (Віртуальні бокси)

Наступним кроком після ініціалізації Проет, є створення базового боксу. Vagrant не створює віртуальну машину з нуля. Він імпортує базовий образ віртуальної машини і запускає його, застосовуючи потім всі необхідні настройки задані в файлі конфігурації Vagrantfile. Це спрощує життя користувачам Vagrant, тому що їм не треба витрачати час на налаштування параметрів віртуальної машини, таких як виділена віртуальна пам'ять, обсяг диска, мережеві інтерфейси і ін.

П олучение базового образу віртуальної машини

На самому початку статті ми вже завантажили базовий образ 32-бітної системи Ubuntu 12.04LTS precise і додали його в Vagrant. Зверніть увагу, що якщо ви вже скачали образ, то вам не потрібно повторно кожен раз його завантажувати при наступному запуску. Vagrant підтримує завантаження образів як з Інтернету, так і з вашого жорсткого диска. На самому початку статті ми запустили таку команду:

$ Vagrant box add precise32-box http://files.vagrantup.com/precise32.box

Після її виконання Vagrant скачав образ і зберіг його в системній папці користувача на диску. При цьому цей образ був автоматичних доданий в глобальний простір поточної установки Vagrant на вашому комп'ютері, тобто тепер для всіх проет, які ви будете створювати цей образ буде доступний для вибору при розгортання віртуального оточення. Також, кожен доданий таким способом образ має унікальне ім'я, в даному прикладі, це precise32-box.

Адреса http://files.vagrantup.com/precise32.box ми використовували тільки один раз на самому початку, тепер підключати базовий образ ми будемо з локального сховища на жорсткому диску.

У даленіє віртуальних боксів

Таже просто як додати, віртуальні бокси можна і видалити. Для цього використовуйте команду:

$ Vagrant box remove my_box

При цьому бокс видаляється фізично з диска. Після цього жодна віртуальна машина створена раніше на основі цього боксу не зможе бути запущена.

Н астройка Проет для використання потрібного віртуального боксу

Тепер, коли віртуальний бокс з ім'ям precise32-box був доданий в Vagrant ми можемо додавати його в наші проет. Це робиться шляхом запису в конфігураційний файл Vagrantfile наступного рядка:

Vagrant :: Config.run do | config |

config.vm.box = "precise32-box"

end

П роверка настройки

На даний момент ми зробили саму базову настройку нашого віртуального оточення. Ми не задали перекидання портів (port forwarding), своє обспеченіе для оточення (provisioning) і т.д. Але навіть з такою базовою налаштуванням у нас вийшла повнофункціональна віртуальна машина. Ви можете в цьому переконається набравши наступну команду vagrant up з кореневої директорії проекту Ця команда запустить віртуальну машину. Щоб зупинити запущену віртуальну машину і очистити місце на диску, яке вона займала, потрібно виконати команду vagrant destroy:

$ Vagrant up

...

$ Vagrant destroy

...

Н астройка SSH

Vagrant надає повний доступ до віртуальної машини через SSH протокол за допомогою команди vagrant ssh. Після запуску цієї команди відкриється термінал і ви побачите приблизно наступне пріглошеніе командного рядка:

$ Vagrant ssh

...

vagrant @ vagrantup: ~ $

УВАГА: для користувачів Windows

Оскільки ssh-клієнт за замовчуванням не поширюється на Windows платформі, то при запуску команди vagrant shh на Windows машині Vagrant виведе замість вікна терміналу - вікно з необхідною інформацією для підключення до віртуальної машини по shh протоколу через ssh-клієнт PuTTY :

PuTTY не розпізнає стандартні openssh ключі, тому вам доведеться перетворити даний приватний ключ в формат .ppk за допомогою утиліти puttygen , Яка йде в комплекті з PuTTY.

Д Доступ до файлів проекту з віртуальної машини

У занедбаній через Vagrant віртуальній машині ви знайдете розшарений директорію, в якій знаходяться файли вашого проекту. Ця директорія розташовується на віртуальній машині цим шляхом: / vagrant. З віртуальної машини вміст даної директорії є як для читання так і для запису.

Про беспеченіе для віртуальних боксів (Provisioning)

Ми запустили за допомогою Vagrant віртуальну машину, налаштували підключення через ssh, і що далі? Для нас як для розробників ця машина не представляє ніякого інетерса, тому що на ній, поки, нічого не встановлено крім оперціонной системи Ubuntu. Для розробки нашого web-проекту нам необхідно з отриманої заготовки віртуальної машини зробити повноцінне віртуальне оточення - максимально точну копію того, що у нас знаходиться на робочому сервері. Для цього нам треба встановити потрібне програмне забезпечення, наприклад, nginx або Apache, php, ruby, MySQL і т.д., тобто забезпечити наш віртуальний бокс необхідної провізією (Provisioning)

Для цих цілей Vagrant дозволяє використовувати на вибір одне з двох рішень - це Chef (Chef-Solo) або Puppet . Також, при необхідності, ви можете розширювати Vagrant і використовувати інші засоби автоматизованого розгортання додатків (але це вже не відноситься до теми даної статті).

Н астройка Chef і Vagrant

У даній статті ми скористаємося заздалегідь приготованими рецептами для Chef , Щоб продемонструвати розгортання віртуальної машини. Для цього відредагуємо конфігураційний файл Vgarantfile:

Vagrant :: Config.run do | config |

config.vm.box = "precise32-box"

# Enable and configure the chef solo provisioner

config.vm.provision: chef_solo do | chef |

# We're going to download our cookbooks from the web

chef.recipe_url = "http://files.vagrantup.com/getting_started/cookbooks.tar.gz"

# Tell chef what recipe to run. In this case, the `vagrant_main` recipe

# Does all the magic.

chef.add_recipe ( "vagrant_main")

end

end

Зверніть увагу, що ми використовуємо URL http://files.vagrantup.com/getting_started/cookbooks.tar.gz для завантаження набору рецептів (cookbooks) для Chef. Замість цього ви також можете просто скопіювати набір рецептів в кореневу директорію нашого Vagrant-проекту і підключити їх через конфіг в Vagrantfile'е. Більш докладно про це можна знайти в розділі ChefSolo .

З апуск!

Після настройки провизий для віртуальної машини, просто запускаємо команду vagrant up. Vagarnt запустить віртуальну машину з образу і встановити необхідні софт прописаний в рецептах. Якщо ваша віртуальна машина вже була запущена до цього моменту і ви її не вимикали, то просто перезавантажте її командою vagrant reload, щоб зміни вступили в силу.

Після того як Vagrant завершить всі необхідні дії і налаштування системи, у вас буде повноцінний налаштований web-сервер на віртуальній машині. Однак, поки ви ще не зможете побачити свій web-проект на ній через браузер на вашому робочому комп'ютері, тому що ми ще не налаштували кидок портів (port forwarding).

Щоб переконається все ж що наш простий сайт вже працює, ви можете підключиться по ssh до віртуальної машини і в командному рядку ssh-терміналу набрати наступне:

$ Vagrant ssh

...

vagrant @ vagrantup: ~ $ wget -qO- 127.0.0.1

<H1> Hello from a Vagrant VM </ h1>

vagrant @ vagrantup: ~ $

Далі ми налаштуємо кидок портів, щоб ви могли побачити свій сайт через браузер на своєму комп'ютері.

П роброс портів (Port Forwarding)

Кидок портів дозволяє задати номер порту на гостейвой машині (в даному випадку на нашій віртуальній машині), який буде доступний ззовні на хост машині (тобто на нашому робочому комп'ютері). Це дозволить нам звертатися до web-серверу встановленому на віртуальній машині з браузера на нашому робочому комп'ютері.

З Адан номера порту для проброса

В даному випадку ми хочемо прокинути порт на якому працює сервер Apache. Проброс порту налаштовується у файлі Vagrantfile наступним чином:

Vagrant :: Config.run do | config |

# Forward guest port 80 to host port 4567

config.vm.forward_port 80, 4567

end

Як ви бачите ми задали кидок портів з 80 порту (guest posrt) на віртуальній машині на 4567 порт (host port) на нашому робочому комп'ютері. Тепер треба запустити віртуальну машину командою vagrant up або якщо вона вже запущена, то перезавантажити командою vagrant reload. Після цього можна в адресному рядку браузера набрати адресу http://127.0.0.1:4567/ і він відкриє нашу сторінку з Приветсвую:

Hello from a Vagrant VM

П акетірованіе (Packaging)

Отже, ми отримали готове для використання віртуальне оточення для нашого web-проекту. Але уявіть ситуацію, що ви не один, а перебуваєте в команді і вам треба забезпечити своїх колег такімже віртуальним оточенням як і у вас. Що робити? Vagrant надає для цього випадку можливість створювати пакети (packages) віртуального оточення. Ці готові пакети ви віддаєте своїм колегам і вони встановлюють їх у себе на комп'ютері.

Пакети (Packages) це готові до установки образи вашого віртуального оточення, яке можуть бути швидко розгорнуті на інших комп'ютерах. Зазвичай вони мають розширення .box і називаються боксами. Опціонально в цей бокс ви можете включити сам конфігураційний файл Vagrantfile.

Перед тим як створити бокс переконайтеся що ваше віртуальне оточення проініціалізувати і запущено командою vagrant up.

З оздание VagrantFile'а

Спочатку ми повинні створити конфігураційний файл Vagrantfile, який потім буде поміщений в створений віртуальний бокс. На цей етапі важливо убетіться, що ваше віртуальне оточення запущено командою vagrant up і працює HTTP доступ до нього. Тепер створюємо файл Vagrantfile.pkg, який буде використовуватися як Vagrantfile тільки для створеного боксу. Файл повинен містити наступну конфігурацію:

Vagrant :: Config.run do | config |

# Forward apache

config.vm.forward_port 80, 8080

end

Далі виконайте команду:

$ Vagrant package --vagrantfile Vagrantfile.pkg

vagrant package візьме поточний запущених віртуальне оточення и упакує его в бокс package.box в потокових діректорію звідки булу запущена команда (тобто в корені нашого Vagrant проет). Опція --vagrantfile вказує, що бокс повинен включати в себе файл Vagrantfile.pkg, щоб при розгортанні на іншому комп'ютері була активовано проброска портів (більш попдробно см. тут ).

Створений бокс можна тепер віддати іншому учаснику команди, щоб він скопіював його до себе на робочий комьютер і встановив або викласти його в інтернет, тоді його можна буде потім просто завантажити на потрібний комп'ютер і запустити. Бокс запускається на іншому комп'ютері в такий спосіб:

$ Vagrant box add my_box /путь/к/боксу/package.box

$ Vagrant init my_box

$ Vagrant up

Після виконання цих команд інший учасник вашої команди отримає готове до роботи віртуальне оточення (точну копію вашого віртуального оточення).

Про становленнЯ віртуальних боксів (Teardown)

Щоб завершити запущене віртуальне оточення в Vagrant існує три різні способи зробити це:

  • Suspend - догляд в сплячий режим зі збереженням поточного стану системи,
  • Halting - звичайне завершення роботи (як на будь-якому комп'ютері),
  • Destroing - завершення роботи з очищенням місця на диску, яке займало запущене віртуальне оточення.

Всі ці типи зупинки віртуальних боксів розглянуті далі.

S uspend - догляд в сплячий режим зі збереженням поточного стану системи

Завершення роботи з відходом в сплячий режим виконується командою vagrant suspend. При цьому відбувається збереження поточного состояни віртуального оточення і потім завершення його роботи. Для відновлення роботи досить виконати команду vagrant resume.

Основна перевага даного режиму завершення роботи - це те, що возобнавленіе роботи відбувається дуже швидко, швидше ніж при всіх інших режимах завершення роботи, тому що сосхраняется попередній стан віртуальної машини. Однак цей режим вимагає додаткового місця на жорсткому диску - приблизно в 1 Гб для збереження стану системи.

H alting - звичайне завершення роботи

Це завершення роботи виконується командою vagrant halt. При цьому виконується обячно завершення роботи (як у звичайній Linux системі при виконанні команди halt). Щоб відновити роботу віртуального оточення після такого виключення треба виконати команду vagrant up.

При такому завершенні роботи не потрібне додаткове місце на диску, тому що состяние системи не зберігається. Відновлення роботи при цьому триває трохи довше ніж в попередньому випадку, тому що віртуальне оточення завантажується як при завантаженні звичайного комп'ютера.

D estroing - завершення роботи з очищенням всіх файлів боксу

Нарешті, останній - третій спосіб виїзд віртуальний оточення. Виконується командою vagrant destroy. При цьому станься завершення роботи з повним очищенням місця на диску, яке займало віртуальне оточення. Щоб відновити роботу необхідно також як і в попередньому випадку виконати команду vagarnt up.

Основна перевага цього способу в тому, що ви економите до 1 Гб місця на жорсткому диску. Але при цьому відновлення роботи буде найдовшим процесом, тому що Vagrant'у прідестя заново ставити весь необхідні софт з рецептів. Зазвичай не рекомендується користуватися даними способом завершення роботи, якщо тільки ви не прагнете за всяку ціну секонміть місце на жорсткому диску, що при поточних розмірах сучасних жорстких дисків вкрай рідкісна необхідність.

Б истрая Перезбірка

Давайте припустимо таку ситуацію: ви закінчили роботу над проектом, здали його замовнику, отримали оплату. Минуло пів року, рік і ось бос говорить вам, що треба відновити роботу на проетком для цього замовника. У вас за цей час могло багато чого Поміняти на робочому комп'ютері, ви знесли і переустановили операційну систему, обнвовілі софт, та хіба-що ще могло статися?

Чи не хвілюйтесь! Все що необхідно вам зробити щоб відновити роботу над проектом це просто заново запустити віртуальний бокс командою vagrant up. От і все. Через п'ять хвилин може більше або менше, коли Vagrant запустить віртуальну машину і встановить весь потрібний софт ви спокійно можете приступити до розробки вашого старого проекту.

Корисні посилання

5.4.x і його необхідно тестувати в тій версії мови на яку він розрахований?
Що робити?
У вас за цей час могло багато чого Поміняти на робочому комп'ютері, ви знесли і переустановили операційну систему, обнвовілі софт, та хіба-що ще могло статися?
Провайдеры:
  • 08.09.2015

    Batyevka.NET предоставляет услуги доступа к сети Интернет на территории Соломенского района г. Киева.Наша миссия —... 
    Читать полностью

  • 08.09.2015
    IPNET

    Компания IPNET — это крупнейший оператор и технологический лидер на рынке телекоммуникаций Киева. Мы предоставляем... 
    Читать полностью

  • 08.09.2015
    Boryspil.Net

    Интернет-провайдер «Boryspil.net» начал свою работу в 2008 году и на данный момент является одним из крупнейших поставщиков... 
    Читать полностью

  • 08.09.2015
    4OKNET

    Наша компания работает в сфере телекоммуникационных услуг, а именно — предоставлении доступа в сеть интернет.Уже... 
    Читать полностью

  • 08.09.2015
    Телегруп

    ДП «Телегруп-Украина» – IT-компания с 15-летним опытом работы на рынке телекоммуникационных услуг, а также официальный... 
    Читать полностью

  • 08.09.2015
    Софтлинк

    Высокая скоростьМы являемся участником Украинского центра обмена трафиком (UA — IX) с включением 10 Гбит / сек... 
    Читать полностью