Лабораторна робота №1 Основи віртуалізації та автоматизації розгортання

Мета роботи: Ознайомитися з основами віртуалізацією та автоматизацією розгортання віртуальних середовищ за допомогою Vagrant.

Теоретичні відомості

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

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

  1. **VMware vSphere / ESXi - потужна платформа для серверної віртуалізації, яка включає гіпервізор (ESXi) та управлінські інструменти (vCenter Server) й підходить для великих підприємств і дата-центрів.

  2. Microsoft Hyper-V - вбудований гіпервізор у Windows Server який підходить для створення віртуальних машин у середовищах Windows.

  3. Oracle VM VirtualBox - безкоштовний та відкритий гіпервізор, який підтримує різні операційні системи популярний для особистого використання та тестування.

  4. KVM (Kernel-based Virtual Machine): - віртуалізація на рівні ядра для Linux, яка дозволяє запускати віртуальні машини на Linux-серверах.

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

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

  • Програмне забезпечення Vagrant яке можливо завантажити з офіційного сайту Vagrant.
  • Провайдер віртуалізації - VirtualBox, VMware або Hyper-V для управління віртуальними машинами. Рекомендує VirtualBox, оскільки він безкоштовний та працює на багатьох платформах.

Завдання

  1. Створіть на машині новий каталог для лабораторної роботи та перейдіть в нього.
  2. Завантажити та встановити Vagrant на власний пристрій з офіційного сайту. https://www.vagrantup.com/downloads.html
  3. Перевірити версію Vagrant виконавши
    vagrant --version.
    
  4. Знайдіть та виберіть відповідний базовий образ для вашого проекту. Наприклад, Ubuntu, CentOS тощо.
  5. Використовуючи текстовий редактор, створіть файл Vagrantfile, в якому описані параметри вашої віртуальної машини.
  6. В Vagrantfile задайте параметри для вашої віртуальної машини, такі як кількість CPU, обсяг оперативної пам'яті, мережеві налаштування тощо.

    Vagrant.configure("2") do |config|
    # Вибираємо коробку для віртуальної машини
    config.vm.box = "ubuntu/bionic64"
    
    # Налаштування мережі
    config.vm.network "forwarded_port", guest: 80, host: 8080
    
    # Налаштування провайдера VirtualBox
    config.vm.provider "virtualbox" do |vb|
     vb.memory = "2048" # Виділяємо 2 ГБ оперативної пам'яті
     vb.cpus = 2
    end
    
    # Виконання команд для налаштування середовища
    config.vm.provision "shell", inline: <<-SHELL
     # Оновлюємо список пакетів і встановлюємо оновлення
     sudo apt-get update
     sudo apt-get upgrade -y
     # Встановлюємо Python 3 та pip
     sudo apt-get install -y python3 python3-pip
     # Встановлюємо FastAPI та Uvicorn
     pip3 install fastapi uvicorn
     # Встановлюємо інші корисні пакети (наприклад, git)
     sudo apt-get install -y git
    SHELL
    end
    
  7. Виконайте vagrant up, щоб створити та запустити віртуальну машину на основі Vagrantfile. Продемонструйте у звіті результат роботи.
  8. Виконайте vagrant ssh, щоб підключитися до віртуальної машини. Продемонструйте у звіті результат роботи.
  9. У віртуальній машині встановіть необхідне програмне забезпечення для запуску FastAPI серверу.
  10. У віртуальному середовищі створіть файл main.pу
    from typing import Union
    from fastapi import FastAPI
    app = FastAPI()
    @app.get("/")
    def read_root():
    return {"Hello": "World"}
    @app.get("/items/{item_id}")
    def read_item(item_id: int, q: Union[str, None] = None):
    return {"item_id": item_id, "q": q}
    
  11. Запустіть FastAPI сервер в рамках віртуального середовища
  12. Протестуйте роботу FastAPI серверу, виконавши запити до нього зі свого хостового браузера або за допомогою інструменту curl.
  13. Виконайте команди vagrant suspend, vagrant halt або vagrant destroy, щоб призупинити, вимкнути або видалити віртуальну машину відповідно. Продемонструйте у звіті результат роботи

Контрольні питання

  1. Що таке Vagrant та які його основні функції?
  2. Які кроки потрібно виконати для створення нового каталогу для лабораторної роботи?
  3. Як перевірити, що Vagrant встановлений на вашому комп'ютері та яка команда використовується для перевірки його версії?
  4. Що таке Vagrant Box, і як вибрати відповідний базовий образ для вашого проекту?
  5. Яку роль виконує файл Vagrantfile у конфігурації віртуальної машини?
  6. Як налаштувати кількість процесорів та обсяг оперативної пам'яті для віртуальної машини в Vagrantfile?
  7. Що відбувається при виконанні команди vagrant up?
  8. Як підключитися до віртуальної машини за допомогою команди vagrant ssh?
  9. Які команди використовуються для встановлення Python та FastAPI у віртуальній машині?
  10. Як запустити FastAPI сервер у віртуальному середовищі?
  11. Які команди використовуються для призупинення, вимкнення та видалення віртуальної машини?
  12. Як можна зберегти стан віртуальної машини та відновити його за допомогою команд vagrant snapshot?
  13. Чим відрізняються команди vagrant suspend, vagrant halt та vagrant destroy?