Наша взаимовыгодная связь https://banwar.org/
У більшості попередніх статті писалося про встановлення та налаштування різних сервісів під Linux дистрибутивами. Йшлося про виділених серверах і фізичних майданчиках, але коли потрібно проводити тестування того чи іншого сервісу, кластера, технології і т.п. - потрібно використовувати віртуалізацію. Найчастіше, користувачі Windows використовують VirtualBox, VMware і щоб розгорнути нову Linux майданчик потрібно:
- Завантажити потрібний дистрибутив
- Створити віртуальну машину на його основі з усіма оновленнями (темплейт)
- Зробити один або пару клонів темплейта
- Запустити кожен з клонів і налаштувати мережу, hosts-файл, hostname, тощо
- Встановити і налаштувати потрібний софт
- провести випробування
- Видалити майданчик по завершенню тестів, і т.п.
Всі ці дії спочатку і я робив руками. І це займало дуже багато часу. Наприклад, для налаштування mysql кластера з 6-ти машин потрібно було створити 6 клонів (пункт 3), зайти в кожен з них і налаштувати статичний IP (всі писати вручну, так як буфер не працює), поміняти хостнейм, оновити hosts-файл і т.п.
У даній статті я хочу написати про таку корисну штуку, як Vagrant і про те, як вона мені допомогла автоматизувати процес створення тестового майданчика будь-яких масштабів.
У ролі хостовой машини у нас виступає Windows 8.1.
У ролі емулятора віртуальних машин - VirtualBox.
У ролі гостьової ОС - Ubuntu 12.04.
Vagrant - це утиліта, яка дозволяє створити, підняти і налаштувати віртуальну майданчик будь-яких розмірів протягом декількох хвилин. Вона працює з такими відомими провайдерами (емуляторами) як VirtualBox, VMware, AWC і має підтримку custom-них провайдерів.
Для роботи з VirtualBox віртуальними машинами vagrant використовує VBoxManage. Це інтерфейс командного рядка, який дозволяє повністю контролювати Vbox з консолі (деталі і список всіх опцій і дій можна почитати тут ).
Для початку встановимо vagrant під Windows 8.1. Все що потрібно зробити, це перейти на сайт, завантажити останній бінарник під Windows і встановити.
Установка стандартна, тільки потрібно тиснути Далі.
Після установки, потрібно перевірити чи vagrant потрапив в змінну шляху (Path), щоб нам не довелося повністю прописувати шлях. Для цього, правою кнопкою мишки на Мій комп'ютер -> Властивості і вибираємо Додаткові параметри системи. Там є пункт Додатково, де потрібно вибрати Змінні середовища. І знаходимо змінну Path, де повинна бути рядок з шляхом до Vagrant bin. Дивіться картинку нижче (у мене інтерфейс англійською, так що дивіться по розташуванню вкладок і кнопок).
Мінлива є, тепер можна перевірити працездатність.
Для 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, в зв'язку з чим підключення виглядає наступним чином.
Після підключення ми потрапимо в консоль до тестової Убунту. Йдемо далі.
У потокової директорії у нас створився файл з настройками віртуальної середовища - 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 сайту образу. Нам же потрібно створити свій власний образ, налаштувати його під себе як темплейт і на основі його створювати тестове оточення. Про що і піде мова в наступній статті .