Статьи

Про швидке створення віртуальних машин

  1. завдання Один з важливих плюсів хмарних сервісів - можливість швидко підняти стільки серверів, скільки...

завдання

Один з важливих плюсів хмарних сервісів - можливість швидко підняти стільки серверів, скільки потрібно. Хочеш два - буде тобі два. Хочеш сто - два кліка мишкою і буде сто. Все залежить тільки від твого гаманця, платформа же дозволяє розгорнути стільки віртуальних серверів (з потрібними ресурсами), скільки тобі потрібно. З віртуальною машиною на домашньому комп'ютері такий фокус не проходить. Щоб створити виртуалку, задати їй потрібні налаштування і, що клопітно всього, встановити ОС, йде сила-силенна часу. В один момент мені стало цікаво: а чи можна якось автоматизувати процес і розгортати нові віртуальні машини по-справжньому швидко? Ну, тобто вказати щось на кшталт: «Хочу три віртуальні машини з такими-то настройками і встановлену на них Ubuntu останньої версії» - і отримати ці три віртуальні машини без зайвого геморою. У пошуках відповідного рішення я натрапив на відкритий проект Vagrant .

У пошуках відповідного рішення я натрапив на відкритий проект   Vagrant

На сайті vagrantbox.es доступні образи різних ОС для
швидкого розгортання

Рішення

Використовуючи в якості основи безкоштовний і тому особливо улюблений нами Oracle's VirtualBox (4.0.x або 4.1.x), Vagrant дозволяє створювати і конфігурувати віртуальні машини динамічно. Як це відбувається, пропоную розглянути прямо на прикладі. завантажуємо з downloads.vagrantup.com потрібну версію дистрибутива (є версії для Windows, Linux, Mac OS X) і піднімаємо наш перший інстанси (віртуальну машину):

$ Vagrant box add lucid32 http://files.vagrantup.com/lucid32.box $ vagrant init lucid32 $ vagrant up

Три команди - і нова віртуальна машина з встановленою ОС запущена (якщо, звичайно, ти не забув попередньо встановити VirtualBox)! Як нескладно здогадатися, команда «box add <ім'я віртуальної машини>» відповідає безпосередньо за створення віртуальної машини.

Як нескладно здогадатися, команда «box add <ім'я віртуальної машини>» відповідає безпосередньо за створення віртуальної машини

Запуск віртуальної машини через Vagrant

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

Команда «init» инициализирует ОС, причому в якості параметра необхідно вказати тип системи: в нашому випадку це 32-бітна Ubuntu Lucid (10.04). Після виконання цих двох команд створюється повністю працездатна віртуальна машина з 512 Мб на борту. Остання команда - «vagrant up» - лише запускає її в фоновому режимі.

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

vagrant suspend

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

vagrant status

До будь-якої з гостьових ОС можна підключитися по SSH, використовуючи сам Valgrant:

vagrant ssh

Якщо запустити додаток без параметрів, то воно видасть список всіх доступних команд.

Код проекту написаний на Ruby

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

В один момент мені стало цікаво: а чи можна якось автоматизувати процес і розгортати нові віртуальні машини по-справжньому швидко?

Новости