Встановлення та налаштування vagrant для windows 10. Початок роботи з Vagrant і навіщо він взагалі потрібний. Що знаходиться в базовій коробці

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

Встановлення VirtualBox 5 на Windows 10

Для початку качаємо VirtualBox з офіційного сайту останню версію (на даний момент 5.2.18). Для цього після переходу за посиланням на сторінку завантаження клацаємо за посиланням Windows hosts:

Завантажений файл VirtualBox-5.2.18-124319-Win.exe запускаємо для установки VirtualBox. Сам процес установки зводиться до натискання кількох кнопок "Next" та очікування завершення процесу. Після запуску інсталятора з'явиться наступне вікно:

Тут натискаємо Next.

На наступному етапі вибираємо всі компоненти для встановлення (вибрані за замовчуванням) та натискаємо Next:

На наступному етапі вказуємо додаткові налаштування (якщо потрібно) або залишаємо все за замовчуванням та натискаємо кнопку Next:


На наступному етапі підтверджуємо встановлення віртуального адаптера (тобто натискаємо Yes):

І на завершальному етапі натискаємо кнопку "Install":

У процесі встановлення, якщо увімкнено контроль облікових записів, може з'явитися наступне вікно підтвердження дії. У ньому натискаємо "Так". Після цього розпочнеться процес безпосередньої установки.

Також у процесі встановлення VirtualBox 5 на Windows 10 з'явиться діалогове вікно з підтвердженням встановлення додаткового програмного забезпечення:

Тут ми натискаємо кнопку "Встановити".

І після завершення встановлення з'являється діалогове вікно:

На цьому процес встановлення VirtualBox на Windows 10 завершено.

Встановлення Vagrant на Windows 10

Для встановлення Vagrant необхідно завантажити пакет із файлами для встановлення, який доступний за посиланням. У вікні вибираємо останню версію установника (на момент написання статті 2.1.5):


І вибираємо файл з розширенням.msi для встановлення на Windows:

Після завантаження запускаємо файл vagrant_2.1.5_x86_64.msi. В результаті з'явиться діалогове вікно з привітанням:

На наступному етапі погоджуємося з правилами користування (встановлюємо галочку в полі "I acept...") та натискаємо Next:

На наступному етапі вказуємо каталог, до якого буде встановлена ​​програма. Можна залишати шлях за замовчуванням, тільки обов'язково запам'ятовуємо, куди встановлюємо (можна скопіювати шлях):

І в наступному вікні натискаємо кнопку "Install":

Очікуємо закінчення установки:

Після цього з'явиться вікно з результатами завершення установки:

Після встановлення Vagrant на Windows 10 з'явиться вікно з проханням про перезавантаження комп'ютера:

Тут натискаємо "Yes" та очікуємо перезавантаження комп'ютера. Якщо необхідно вручну завершити роботу інших програм (або зберегти зміни у важливих документах), натискаємо кнопку "No" і потім перезавантажуємо комп'ютер вручну.

Внесення змін до змінних середовищ

Після перезавантаження комп'ютера обов'язково необхідно додати змінну vagrant до системних змінних. Це потрібно для того, щоб у командному рядку можна було викликати Vagrant за допомогою однієї команди: vagrant.

Зміни в змінні середовища ми будемо вносити за допомогою командного рядка, а саме в змінну PATH ми будемо додавати шлях до каталогу, куди встановлений Vagrant (у нашому випадку це: C: HashiCorp Vagrant bin).

Викликаємо командний рядокнаступним чином:

1. натискаємо на клавіатурі клавіші Ctrl+R для виклику вікна "Виконати".
2. У вікні, що з'явилося, набираємо команду: cmd
3. Натискаємо кнопку ОК:

У результаті маємо отримати таке:

У вікні командного рядка додаємо наступну команду: set PATH=%PATH%;C:\HashiCorp\Vagrant\bin

і натискаємо клавішу Enter:


І тепер для перевірки того, чи вдалося нам прописати шлях до Vagrant у змінне середовище, у цьому ж вікні командного рядка набираємо команду: vagrant -v

і натискаємо клавішу Enter:


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

На цьому процес встановлення та налаштування Vagrant та VirtualBox на Windows 10 завершено.

Створення віртуальної машини в Vagrant на Windows 10

Для створення віртуальної машини спочатку створимо окремий каталог, наприклад, VagrantVM:

У командному рядку відкриємо цей каталог. Для цього використовуватимемо команду cd. У нашому випадку каталог розташовується наступним шляхом:

C:\VM"s\VagrantVM

Значить у командному рядку виконуємо наступну команду:

Cd C:\VM"s\VagrantVM

В результаті отримаємо наступне:


Для прикладу будемо використовувати складання ubuntu/trusty64 . Щоб її запустити на віртуальній машині, потрібно спочатку ініціалізувати бокс із цією збіркою. Для цього у командному рядку виконуємо команду:

Vagrant init ubuntu/trusty64

В результаті отримаємо таке повідомлення:



Тепер запустимо проініціалізований бокс:

Vagrant up

Після запуску цієї команди розпочнеться запуск завантаження та налаштування віртуальної машини. Після завершення цієї операції у VirtualBox з'явиться нова віртуальна машина:



Працювати з цією віртуальною машиною можна через SSH. Для цього нам буде потрібна програма PuTTY, яку можна завантажити звідси (процес установки описувати не будемо, він досить простий).

Також можна з віртуальними машинами Vagrant працювати і з командного рядка. У тому ж вікні командного рядка виконуємо команду:

Vagrant ssh

В результаті з'явиться запит на введення пароля:

Пароль за промовчанням: vagrant. Ім'я користувача: vagrant. Тому вводимо пароль: vagrant. І натискаємо клавішу Enter.

В результаті після введення пароля вікно отримуємо наступне:

тобто потрапляємо в оболонку Ubuntu. Тут можна безпосередньо працювати з віртуальною машиною за допомогою командного рядка.

Щоб повернутися з цього режиму в нормальний командний режим рядки Windows, виконуємо команду: exit

Для роботи з віртуальною машиною через PuTTY, вказуємо наступні параметри для з'єднання з віртуальною машиною:



І натискаємо кнопку Open. У діалоговому вікні натискаємо Так:


В результаті отримуємо наступне:



Тут необхідно ввести логін та пароль (як ми раніше визначилися, за умовчанням vagrant/vagrant):



***Примітка: при введенні пароля символи не відображатимуться (ніяк, навіть зірочками).

Щоб завершити роботу запущеного боксу, у вікні командного рядка виконуємо команду:

Vagrant halt

***Якщо вікно командного рядка раніше було закрите, то необхідно знову його запустити та відкрити за допомогою команду cd каталог, в якому знаходиться наша віртуальна машина.

На цьому закінчимо цю статтю. У наступних статтях детальніше розберемо, як на віртуальній машині 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.

На даний момент 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 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 .

V agrantfile

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

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

$mkdir my_vagrant_project

$ cd my_vagrant_project

$ vagrant init

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

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

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

$ echo "

Hello від Vagrant VM

" > index.html

У принципі на цьому налаштування веб-проету закінчено.

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

Наступним кроком після ініціалізації проекту є створення базового боксу. 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 наступного рядка:

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

На даний момент ми зробили базове налаштування нашого віртуального оточення. Ми не задали перекидання портів (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 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. У цьому випадку, `vagrant_main` recipe

# does all the magic.

Chef.add_recipe("vagrant_main")

Запуск!

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

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

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

$ vagrant ssh

vagrant@vagrantup:~$ wget -qO- 127.0.0.1

Hello від Vagrant VM

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

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

Hello від 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

$ 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 S uspend - відхід у сплячий режим із збереженням поточного стану системи

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

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

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

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

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

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

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

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

Б швидке перескладання

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

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

  • Available Vagrant Boxes - доступні образи Vagrant
  • www.vagrantbox.es – ще образи Vagrant

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

Важливо розуміти, що ця стаття не є заміною оф документації. Vagrant як і будь-який інший проект розвивається, тому викладена інформація вже через місяць може бути не актуальною. Наприклад, при переході від версії 1.4 до 1.5 у них змінився синтаксис ряду команд (як той же vagrant add box), тому в першу чергу черпайте актуальну інформацію звідси, я лише поясню деякі деталі.

Boxes

Вони шаблони для побудови Ваших стендів. Основна інформація в Я ж наведу суху витримку з експлуатації і трохи підніму капот їх пристрою)

Отже, що є бокс - це спеціальний пакет для Vagrant який притягує в собі вже підготовлений кілометр (встановлений і перед налаштований) екземпляр віртуальної машини. Як уже писав, основним репозиторієм боксів є хмарний ресурс творців vagrant: https://app.vagrantup.com/boxes/search . Потрібно сказати кілька слів для простору імен (name spaces) на хмарі Vagrant. Зазвичай назва боксу йде у вигляді "name space / box name", де друга частина-назва боксу, яка зазвичай повідомляє нам що за збірка (наприклад trusty64 - 64 бітна Ubuntu 14.04), а перша частина - хто виклав збірку. Наприклад:

  • hashicorp - збірки від творців Vagrant
  • ubuntu - збірки боксів від компанії Canonical зі своєю ОС

Таким чином, ми можемо використовувати бокс з Ubuntu як від її розробників, так і від розробників Vagrant. У чому тоді різниця? Ну, по-перше, це «свіжість» образу. Крайня справа колонка показує, як давно був реліз/оновлений образ. По-друге, середня колонка, що містить інформацію про те, для яких засобів віртуалізації підійде цей бокс (Virtualbox, vmware, aws і т.д.)

Помії цього, творці vagrant рекомендують звернути увагу на бокси від проекту Bento. Мовляв бокси hashicorp зроблені з упором на VMware і VirtualBox, вони включають найменші образи тієї ж Ubuntu, а у Bento можна знайти наприклад бокси для Paralels. Ну так, коротша різноманітність не завадить.

Основний інструмент роботи з боксами (барабанний дріб) - утиліта vagrant box!

Які її налаштування нам потрібно освоїти для початку:

  • vagrant box add — додати бокс до Вашого локального списку доступних шаблонів. По суті відбувається завантаження зазначеного боксу до Вас на комп'ютер, після чого він доступний для використання
  • vagrant box list — переглянути список всіх боксів на вашій машині, включаючи інформацію про їхні версії
  • vagrant box remove - видалити бокс
  • vagrant box update - оновити бокс

Кожна команда має свій набір опцій, який можна переглянути або в онлайн документації, або через опцію -h у самій команді

Давайте розглянемо приклад — я хочу дізнатися, скільки і які образи в мене є, а заразом почистити старі/не потрібні і т.д. Сказано зроблено:

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

Додавання образу відбувається досить просто - ви даєте команду vagrant box add, як параметр вказуючи ім'я боксу з його name space, або (якщо бокс викладений не в хмарі Vagrant) - url на його місцезнаходження:

Не погано було б знати, що насправді являють собою ці бокси. Погляньмо!

У Linux (Ubuntu зокрема), у Вашому домашньому каталозі створюється прихований каталог ".vagrant.d/", в якому і зберігаються бокси:

Що ми там бачимо:

  1. box.ovf — інформація про конфігурацію VM, що вивантажується (наприклад, за допомогою Virtualbox при створенні-експорті) у т.зв. Open Virtualization Format.
  2. *name*.vmdk - файл-диск, що містить образ встановленої ОС у форматі vmware.
  3. metadata.json - файл у форматі JSON, що містить опис, під який провайдер віртуалізації призначається даний бокс. Швидше за все, його вміст буде: («provider»: «virtualbox»), Що говорить про те, що бокс створений тільки для використання за допомогою Virtualbox
  4. Vagrantfile - файл vagrant з базовим описом середовища, що створюється при розгортанні боксу.

На цьому з основами з боксів все, якщо ще щось з'являтиметься- постараюся оновлювати цей розділ статті.

Vagrantfile

Отже, цей файл є центральною частиною всієї Вашої інфраструктури, Вашої роботи з Vagrant. По суті, "проект у Vagrant" = Vagrntfile і навпаки, Vagrntfile = "проект у Vagrant". Файл містить детальний (на стільки, скільки Вам це потрібно) опис віртуальних машин, що використовуються у вашому проекті. Так, так, як ми побачили минулого разу, Vagrantfile може містити опис більш ніж однієї ВМ. Основну інформацію з . Я знову ж таки сконцентруюся на основних моментах.

Ніхто не заважає вам створити цей файл вручну. Однак, для цих цілей існує команда vagrant ini t, яка, будучи запущеною у призначеному для проекту каталозі, створить Vagrantfile з деяким стандартним вмістом та прикладами використання, наприклад:

Якщо очистити файл від коментарів, вийде приблизно таке:

По суті дуже мінімалістична заготівля. Якщо ж скористатися vagrant init ubuntu/xenial64, тобто з зазначенням цільового боксу, то отримаємо наступний вміст:

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

Давайте тепер візьмемо першу частину конфігураційного файлу за основу. Я візуально розбив його на 4 колірні секції — червону, помаранчеву, зелену та синю:

Кожна секція починається ключовим виразом config.* та закінчується ключовим словом end. Табуляція не є обов'язковою, але я застосовую її для полегшення розуміння структури файлу.

Червоним кольоромвиділено «глобальний» заголовок - це опції, які застосовуються для всього проекту. Якщо хочете, будь-яку їх можна перевизначити лише на рівні конфігурації конкретної віртуальної машини. Наприклад, Ви можете задати, що бокс за замовчуванням у Вас — Ubuntu сервер (як і тут — вказано config.vm.box = "ubuntu/xenial64"), але в якійсь машині Ви хочете Centos або Redhat або Debian. Тоді VM, у яких нічого не вказано в опції config.vm.box , будуть використовувати ubuntu/xenial64, а VM у яких є своя опція боксу, що використовується, будуть використовувати щось відмінне.

Далі, помаранчевим кольором виділено секція, відповідальна за ідентифікацію VM - тобто. завдання її імені, що відображається (імені хоста в налаштуваннях ОС — в даному випадку *.vm.hostname = "web-server"), тип та адреса мережевого адаптера, назва боксу, що використовується (якщо не хочемо використовувати певний раніше в глобальному контексті).

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

І наостанок синім кольором виділено секція виконуваних під час запуску гостьовий ОС команд. З т.з. Структура Vagrant файлу, вона складається з однієї опції і відноситься до помаранчевої секції, але з ідеологічною т.зв. я вирішив виділити її окремо. Vagrant може сам, при створенні та запуску VM виконати ряд довільних команд, тим самим автоматизуючи Ваші дії щодо первинної конфігурації машини, знімаючи з Вас рутинні завдання. Все, що знаходиться між ключовими словами SHELL буде виконано від імені root у командному рядку гостьової ОС.

Підключення папок та доступ до SSH

Цією автоматизацією розгортання VM переваги Vagrant не обмежуються! По-перше, після створення VM командою vagrant up, Ви можете автоматично підключитися до неї по ssh зі своєї основної машини командою vagrant ssh *machive name* - не потрібно ні адрес, ні логінів, ні паролів! Більш того, запуск командної оболонки під правами rootтак само відбувається без підтвердження паролем (насправді тут немає ніякої магії, Vagrant просто готує авторизацію за ключами ssh).

Ще одним приємним нюансом (як для розробника, так і для адміністратора), є той факт, що при запуску VM папка проекту автоматично монтується в директорію /vargrant/ (в корені фс гостьовий ос). Таким чином, якщо Ви хочете перевірити свій код або скрипти, немає необхідності правити їх на своїй машині, потім переносити в пам'ять і там запускати - просто помістіть їх в папку проекту і вони відразу опиняться в просторі файлової системигостьовий ос. При цьому Ви зможете легко та зручно продовжувати роботу з ними зі своєї основної ОС. Докладніше про опцію з підключенням каталогів (наприклад, підключити інший каталог або відразу кілька), можна також прочитати в документації Vagrant.

На сьогодні на цьому все, чекаю на Ваші запитання!

Tagged ,

Відразу хочу позначити термін VM – віртуальна машина, це (guest-машина).

1. Насамперед нам знадобиться вже встановлена ​​вісь, можна зареєструватися на сайті vagrantcloud.com і потім у меню сайту вибравши Discover знайти необхідний BOX. Але, я не довіряю чужим BOX-ам і робитиму свій. Тому, давайте скачаємо ISO наприклад дистрибутиву debian . Тепер нам потрібний VirtualBox (якщо у Вас його немає, то встановіть) у якому ми підключаємо завантажений Debian.ISO і приступаємо до встановлення.

2. У Вас запустився процес установки Debian, де Вас попросять ввести різні дані, і це ключовий момент, т.к. розробники Vagrant-a ввели:

  • Hostname: vagrant-, наприклад: vagrant- debian-wheezy-86
  • Domain: vagrantup.com
  • Root Password: vagrant
  • Main account login: vagrant
  • Main account password: vagrant

а) потрібно на VM встановити SSH-сервер:

Sudo apt-get install openssh-server

інакше Vagrant свариться так:

Failed to connect to VM!
Використовується для підключення до VM з SSH. Please verify the VM успішно booted
by looking at VirtualBox GUI.

б) Виявляється, незважаючи на те, що ми створили користувача vagrant і всім користувачам призначили пароль vagrant,ПОТРІБНОвикористовувати SSH-ключі, безсумнівно це дурість, але що вдієш.У ком'юніті Vagranta з цього приводу існує угода, що Vagrant використовує для підключення до VM приватний ключhttps://raw.githubusercontent.com/mitchellh/vagrant/master/keys/vagrant А ми повинні в VM користувачу vagrant додати публічний ключhttps://raw.githubusercontent.com/mitchellh/vagrant/master/keys/vagrant.pub в його ~/.ssh/authorized_keys. Якщо цього не зробити, тоVagrant свариться так:

SSH authentication failed! Цей типово caused by public/private
keypair для SSH користувача не буде належним чином вибрано на guest VM. Please
verify that the guest VM is setup with the proper public key, and that
private key path for Vagrant is setup property as well.

в) (можливо не обов'язково) Тепер почнемо встановлення virtual box guest additions. Для цього н вже встановити якісь пакети заголовків:

sudo apt-get -y install linux-headers-$(uname -r) build-essential dkms

вимкніть VM та у вікні VirtualBox виберіть “Devices” та “Install Guest Additions”. Це приточить "Guest Additions" до вашого VM-сидіром. Тепер залишилося увімкнути VM, примонтувати сидиром та встановити "Guest Additions".

sudo apt-get -y install linux-headers-$(uname -r) build-essential
mkdir /media/cdrom
mount /dev/cdrom /media/cdrom
sudo sh /media/cdrom/VBoxLinuxAdditions.run

г) (можливо не обов'язково) навіщось робимо групу адмін, користувачам якої як я зрозумів дозволяємо входити по SSH без пароля:

adduser vagrant admin

Sudo не встановлено за замовчуванням у Debian , тому в моєму випадку доведеться встановити його:

і запускаю програму редагування файлу /etc/sudoesr

відкривається стандартний текстовий редактор(у моєму випадку nano), і в самому кінці файлу потрібно додати:

Defaults env_keep="SSH_AUTH_SOCK" %admin ALL=NOPASSWD: ALL Defaults:vagrant !requiretty

3. При створенні VM (віртуальної машини) я дав їй назвуdebian-wheezy-86відповідно у мене в директорії де встановлений VirtualBox, створилася директоріяdebian-wheezy-86, давайте зайдемо туди:

cd /home/programs/VirtualBox

4. Встановіть Vagrant

sudo apt-get install vagrant

5. Можна приступати до створення Vagrant BOX-а:

vagrant package --base debian-wheezy-86

і за хвилинку отримуємо файл package. box

6. Т Тепер потрібно повідомити vagrant про цей box:

vagrant box add debian-wheezy-86 package.box

синтаксис : vagrant box add НАЗВА ФАЙЛ.box

7. Ви можете видалити директорію з встановленим Debian:

rm -rf /home/programs/VirtualBox/debian-wheezy-86

8. Створимо та налаштуємо Vagrant-проект

mkdir vagrant_getting_started
cd vagrant_getting_started
vagrant init

8. Пропишемо потрібні налаштування у файл Vagrantfile

назва віртуальної машини, яку збираємося використовувати
config.vm.box = "debian-wheezy-86"

# щоб можна було відстежувати завантаження віртуальної машини
config.vm.boot_mode = :gui

# по даному IP можна буде дістатися віртуальної машини
config.vm.network:hostonly, "11.11.11.11"

# прокидання портів (по порту 8080 з host-машини ми потрапляємо на 80 порт guest-машини)
config.vm.forward_port 80, 8080

# Розшаруємо папку. Порядок аргументів: ідентифікатор, директорія на guest машині, директорія на host машині
config.vm.share_folder "myShareFolder", "/var/www", "./"

9. Запускаємо машину:

і виглядає це так:

$ vagrant up
VM такожстворений. Booting if it's not already running...
Clearing any previously set forwarded ports...
Forwarding ports...
- 22 => 2222 (adapter 1)
- 80 => 8080 (adapter 1)
Creating shared folders metadata...
Clearing any previously set network interfaces...
Preparing network interfaces based on configuration...
Booting VM...
Waiting for VM to boot. Це може бути кілька хвилин.
VM booted and ready for use!
Configuring and enabling network interfaces...
Mounting shared folders...
-- v-root: /vagrant
-- myShareFolder: /var/www
$

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

Завдяки простому у використанні алгоритму та автоматизації процесів, Vagrant скорочує час налаштування та оптимізації середовища в якому ви працюватимете. Погнали.

Установка для Windows

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

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

Після встановлення відкрийте командний рядок та перевірте доступність Vagrantза допомогою наступних рядків коду:

$ vagrant Usage: vagrant -v, --version Print the version and exit. -h, --help Print this help. # ...

Першим кроком у налаштуванні віртуальної машини за допомогою Vagrant є створення Vagrantfile , який міститиме всі необхідні налаштування. Введіть наступну команду:

Mkdir vagrant_demo && cd vagrant_demo vagrant init ubuntu/trusty64

Vagrantfile - це файл Ruby, який описує, як налаштувати та підготувати віртуальну машину.

Однак, замість створення віртуальної машини з нуля, програма пропонує вам скористатися базовими образами для використання. шаблоніввіртуальної машини. Ці базові образи в Vagrant називаються "Vagrant box", які додаються до Vagrant за допомогою інструменту vagrant box add , що зберігає Vagrant box під певним ім'ям, надаючи можливість використовувати кількома середовищами повторно. Круто, чи не так?

$ vagrant box add hashicorp/precise64

За допомогою цієї команди ви зможете завантажити готовий Vagrant boxз назвою "hashicorp/precision64"з каталогу Vashgrant Cloud , що надається розробниками обміну готовими образами. Слід зазначити і те, що є можливість додавання образів з локальних файлів або URL користувача.

"Бокси" зберігаються для кожного користувача окремо. Кожен проект Vagrant boxстворює нову копію "боксу" і ніколи не змінює вихідний образ. Це означає, що якщо у вас є два проекти, в яких використовується один образ Vagrant box hashicorp/precision64, додавання файлів на одній віртуальній машині не вплине на іншу.

Коли Vagrant boxДоданий в Vagrant, Ви можете налаштувати його для використання як основу. Відкрийте Vagrantfile і змініть вміст на наступне:

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

Ви можете вказати версію "боксу", вказавши config.vm.box_version, наприклад:

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

Також можна вказати URL-адресу, використовуючи config.vm.box_url :

Vagrant.configure("2") do |config| config.vm.box = "hashicorp/precise64" config.vm.box_url = "https://vagrantcloud.com/hashicorp/precise64" end

Завантажуємо першу віртуальну машину Vagrant та вводимо команду: $ vagrant up

Протягом хвилини робота цієї команди завершиться, завантаживши для Вас віртуальну машину з Ubuntu. Процес завантаження буде виглядати приблизно так:

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

Ця команда переведе вас на повноцінний SSH-сеанс. Тепер Ви маєте можливість взаємодії з віртуальною машиною. Сеанс SSH може бути завершений за допомогою клавіш. CTRL+D.

Vagrant@precise64:~$ logout Connection to 127.0.0.1 closed.

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

Установка на Ubuntu:

Встановлюємо Virtualbox, який, до речі, одразу доступний у репозиторіях Ubuntu: > sudo apt install virtualbox

Порада:Слід зазначити, що Vagrant та Virtualbox, доступні в репозиторіях Ubuntu, можуть бути не самою. актуальної версії, для установки останніх версійцих програм, завантажте їх із офіційних сайтів розробників.

Щоб переконатися, що установка пройшла успішно за допомогою наступної команди, ми можемо перевірити версію програми Vagrant: vagrant --version

Ви повинні побачити приблизно таке: Vagrant 2.0.2

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

Першим кроком є ​​створення каталогу, який буде кореневим каталогом проекту. І робимо файл Vagrantfile.

Створіть каталог проекту та перейдіть на нього:

Mkdir ~/my-first-vagrant-project cd ~/my-first-vagrant-project

Наступним кроком є ​​ініціалізація нового Vagrantfile за допомогою команди vagrant init. У цьому прикладі ми маємо CentOS 7. Запустіть наступну команду, щоб ініціалізувати новий Vagrantfile:

Vagrant init centos/7

A `Vagrantfile` has been placed in this directory. Ви вже хотіли б `vagrant up` ваш перший virtual environment! Подивіться коментарі в Vagrantfile як добре як документація на `vagrantup.com` для більше інформації про використання Vagrant.

Запустивши vagrant up, ми отримуємо можливість створити та налаштувати середовище відповідно до Vagrantfile.

Vagrant up ==> default: Конфігурація та налаштування мережі... default: SSH address: 192.168.121.74:22 default: SSH username: vagrant default: SSH auth method: private key ==> default: Rsyncing folder linuxize/Vagrant/my-first-vagrant-project/ => /vagrant

Як видно з наведеної вище інформації, Vagrant також впроваджує каталог проекту /vagrant на віртуальній машині, що дозволяє працювати з файлами вашого проекту на вашому хост-комп'ютері.

Щоб увійти в середу, просто запустіть її за допомогою команди:

Vagrant ssh

Зупинення роботи середовища:

Vagrant halt

Наступний рядок зупинить роботу середовища, а також очистить всю інформацію, яка була необхідна для її роботи:

Vagrant destroy

Завдяки нашій статті, ви побачили процес встановлення та налаштування віртуальної машини на свій комп'ютер на Windowsабо Ubuntu 18.04, а також у статті наочно продемонстровано процес створення та налаштування віртуальної машини. Профіт!

Чи корисна вам ця стаття?

Будь ласка, розкажіть чому?

Нам шкода, що стаття не була корисною для вас: (Будь ласка, якщо не утруднить, вкажіть з якої причини? Ми будемо дуже вдячні за докладну відповідь. Дякую, що допомагаєте нам стати кращими!