Тема: Розгортання та управління віртуальними машинами.
Створення та запуск віртуальних машин на Oracle Cloud Free Tier або AWS EC2; вибір типу та розміру екземпляра; підключення через SSH; налаштування автоматичного масштабування та груп доступності.
Мета: Набути практичні навички створення, конфігурації та управління хмарними віртуальними машинами, підключення до них через SSH, встановлення програмного забезпечення та розуміння концепцій масштабування.
Технологічний стек:
Виберіть один із варіантів виконання:
Linux / macOS:
# Генерація ключової пари RSA 4096-bit
ssh-keygen -t rsa -b 4096 -C "lab04-cloud-key" -f ~/.ssh/lab04_key
# Переглянути публічний ключ (він знадобиться при створенні VM)
cat ~/.ssh/lab04_key.pub
Windows (PowerShell):
# Створити папку .ssh, якщо вона не існує
New-Item -ItemType Directory -Path "$env:USERPROFILE\.ssh" -Force
# Генерація ключової пари
ssh-keygen -t rsa -b 4096 -C "lab04-cloud-key" -f "$env:USERPROFILE\.ssh\lab04_key"
Get-Content "$env:USERPROFILE\.ssh\lab04_key.pub"
Збережіть вміст публічного ключа — він буде вставлений при створенні VM.
lab04-vmlab04_key.pubЗачекайте ~2 хвилини поки статус зміниться на Running та з’явиться Public IP.
# Надаємо правильні права на приватний ключ
chmod 400 ~/.ssh/lab04_key
# Підключення (Oracle Cloud: default user = ubuntu або opc)
ssh -i ~/.ssh/lab04_key ubuntu@<PUBLIC_IP>
# Якщо Oracle Linux:
ssh -i ~/.ssh/lab04_key opc@<PUBLIC_IP>
Після підключення дослідіть систему:
# Інформація про систему
uname -a
cat /etc/os-release
# Ресурси (CPU, RAM, диск)
nproc # кількість процесорів
free -h # використання пам'яті
df -h # використання дискового простору
uptime # час роботи системи
# Оновлення пакетів та встановлення Nginx
sudo apt update && sudo apt install -y nginx # Ubuntu
# або:
sudo yum install -y nginx # Oracle Linux
# Запуск та увімкнення автостарту
sudo systemctl start nginx
sudo systemctl enable nginx
sudo systemctl status nginx
# Перевірка локально
curl http://localhost
Відкрийте порт 80 у Security List / Security Group:
0.0.0.0/0, Port 800.0.0.0/0Відкрийте у браузері: http://<PUBLIC_IP> — ви маєте побачити сторінку привітання Nginx.
Створіть власну HTML-сторінку:
echo "<h1>Lab 04 — Cloud VM by $(whoami)</h1><p>IP: $(curl -s ifconfig.me)</p>" | sudo tee /var/www/html/index.html
Oracle Cloud:
lab04-vm → вкладка MetricsAWS:
Запустіть навантаження для спостереження за метриками:
# Навантаження CPU на 30 секунд
yes > /dev/null &
sleep 30 && kill %1
Спостерігайте за зміною CPU на графіку метрик (може знадобитись ~1 хвилина для відображення).
# Запишіть поточну публічну IP-адресу
curl -s ifconfig.me
У консолі хмари:
Спостереження: У більшості провайдерів динамічна публічна IP-адреса змінюється після зупинки/старту VM. Для постійної IP потрібне виділення статичної (Elastic IP в AWS, Reserved IP в OCI).
В AWS консолі ознайомтеся з Auto Scaling Groups:
Ключові параметри, які слід вивчити:
Адаптація під GitHub Codespaces Мета: Набути навички управління хмарним середовищем, налаштування веб-сервера Nginx та роботи з портами в умовах відсутності прямої публічної IP-адреси.
Цей крок залишається ідентичним до оригіналу. Хоча Codespaces має вбудовану авторизацію, генерація ключів — це базова навичка для роботи з будь-якою хмарою.
Linux / macOS / Codespaces (Bash):
ssh-keygen -t rsa -b 4096 -C "codespaces-key" -f ~/.ssh/id_rsa_codespaces
Windows (PowerShell):
# Створити папку .ssh, якщо вона не існує
New-Item -ItemType Directory -Path "$env:USERPROFILE\.ssh" -Force
# Генерація ключової пари
ssh-keygen -t rsa -b 4096 -C "codespaces-key" -f "$env:USERPROFILE\.ssh\id_rsa_codespaces"
Приклад роботи в терміналі:
PS C:\nmk> New-Item -ItemType Directory -Path "$env:USERPROFILE\.ssh" -Force
Directory: C:\Users\teach
Mode LastWriteTime Length Name
---- ------------- ------ ----
d----- 19.03.2026 9:01 .ssh
PS C:\nmk> ssh-keygen -t rsa -b 4096 -C "codespaces-key" -f "$env:USERPROFILE\.ssh\id_rsa_codespaces"
Generating public/private rsa key pair.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in C:\Users\teach\.ssh\id_rsa_codespaces
Your public key has been saved in C:\Users\teach\.ssh\id_rsa_codespaces.pub
The key fingerprint is:
SHA256:eJLV4yT/zaijQfbwlh******************gkpKRn9vOEsU codespaces-key
The key's randomart image is:
+---[RSA 4096]----+
| .+..===. |
| + .o o+B . |
| ********** |
| ********** |
| ********** |
| ********** |
| **********|
| ********** |
| ..... |
+----[SHA256]-----+
cloud-lab-04) або використайте існуючий.У нижній частині екрана відкрийте вкладку Terminal. Ви вже авторизовані як користувач vscode.
Перевірте характеристики вашої “хмари”:
# Кількість ядер та модель процесора
nproc
lscpu | grep "Model name"
# Обсяг оперативної пам'яті
free -h
# Версія ОС (зазвичай це Ubuntu)
cat /etc/os-release
Приклад роботи в терміналі:
@SurkovKostiantyn ➜ /workspaces/test (main) $ nproc
2
@SurkovKostiantyn ➜ /workspaces/test (main) $ lscpu | grep "Model name"
Model name: Intel(R) Xeon(R) Platinum 8370C CPU @ 2.80GHz
@SurkovKostiantyn ➜ /workspaces/test (main) $ free -h
total used free shared buff/cache available
Mem: 7.8Gi 1.7Gi 248Mi 62Mi 6.2Gi 6.1Gi
Swap: 0B 0B 0B
@SurkovKostiantyn ➜ /workspaces/test (main) $ cat /etc/os-release
PRETTY_NAME="Ubuntu 24.04.3 LTS"
NAME="Ubuntu"
VERSION_ID="24.04"
VERSION="24.04.3 LTS (Noble Numbat)"
VERSION_CODENAME=noble
ID=ubuntu
ID_LIKE=debian
HOME_URL="https://www.ubuntu.com/"
SUPPORT_URL="https://help.ubuntu.com/"
BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
UBUNTU_CODENAME=noble
LOGO=ubuntu-logo
Додатково: Підключення через локальний термінал (SSH)
Якщо ви хочете працювати з Codespace не в браузері, а у своєму звичному терміналі (PowerShell, CMD або Linux), виконайте наступне:
gh), якщо він ще не встановлений: cli.github.com.gh auth login
(Оберіть SSH як протокол і завантажте свій публічний ключ id_rsa_codespaces.pub, коли запитає).
gh codespace ssh --setup_ssh
Підключіться до вашої машини:
# Запустіть цю команду, щоб побачити список ваших активних Codespaces
gh codespace list
# Підключіться до обраного
gh codespace ssh -c <NAME>
Примітка: Замініть <NAME> на унікальну назву вашого середовища (наприклад, scaling-computing-machine-xyz).
Приклад роботи в терміналі: підключення до Codespace:
PS C:\test> gh --version
gh version 2.86.0 (2026-01-21)
https://github.com/cli/cli/releases/tag/v2.86.0
PS C:\test> gh auth login
? Where do you use GitHub? GitHub.com
? What is your preferred protocol for Git operations on this host? SSH
? Upload your SSH public key to your GitHub account? C:\Users\teach\.ssh\id_rsa_codespac
? Title for your SSH key: (GitHub CLI)
? Title for your SSH key: GitHub CLI
? How would you like to authenticate GitHub CLI? Login with a web browser
! First copy your one-time code: \*\*\*\*-\*\*\*\*
Press Enter to open https://github.com/login/device in your browser...
✓ Authentication complete.
- gh config set -h github.com git_protocol ssh
✓ Configured git protocol
✓ Uploaded the SSH key to your GitHub account: C:\Users\teach\.ssh\id_rsa_codespaces.pub
✓ Logged in as SurkovKostiantyn
PS C:\test> gh codespace list
NAME DISPLAY NAME REPOSITORY BRANCH STATE CREATED AT
reimagined-guide-vxgrpq... reimagined guide SurkovKostiantyn/... main Available about 8 minutes ago
PS C:\test> gh codespace ssh
? Choose codespace: SurkovKostiantyn/test [main]: reimagined guide
Welcome to Ubuntu 24.04.3 LTS (GNU/Linux 6.8.0-1044-azure x86_64)
* Documentation: https://help.ubuntu.com
* Management: https://landscape.canonical.com
* Support: https://ubuntu.com/pro
The programs included with the Ubuntu system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.
Ubuntu comes with ABSOLUTELY NO WARRANTY, to the extent permitted by
applicable law.
@SurkovKostiantyn ➜ /workspaces/test (main) $
У традиційних хмарах ми налаштовуємо Security Groups. У Codespaces ми використовуємо Port Forwarding.
Встановіть Nginx:
sudo apt update && sudo apt install -y nginx
sudo service nginx start # У Codespaces використовуємо service замість systemctl
Приклад роботи в терміналі: перевірка статусу Nginx:
@SurkovKostiantyn ➜ /workspaces/test (main) $ sudo service nginx status && sudo ss -ltnp | grep nginx || true
* nginx is running
LISTEN 0 511 0.0.0.0:80 0.0.0.0:* users:(("nginx",pid=10888,fd=5),("nginx",pid=10887,fd=5),("nginx",pid=10886,fd=5))
LISTEN 0 511 [::]:80 [::]:* users:(("nginx",pid=10888,fd=6),("nginx",pid=10887,fd=6),("nginx",pid=10886,fd=6))
Відкриття порту:
Якщо порт не відкрився автоматично, то виконайте наступні команди:
sudo ss -ltnp | grep nginx
Додайте порт вручну:
Приклад роботи в терміналі: перевірка доступності порту:
@SurkovKostiantyn ➜ /workspaces/test (main) $ curl -I http://127.0.0.1
HTTP/1.1 200 OK
Server: nginx/1.24.0 (Ubuntu)
Date: Thu, 19 Mar 2026 07:18:49 GMT
Content-Type: text/html
Content-Length: 615
Last-Modified: Thu, 19 Mar 2026 07:13:17 GMT
Connection: keep-alive
ETag: "69bba20d-267"
Accept-Ranges: bytes
Створіть свою сторінку:
echo "<h1>Lab 04 — Codespaces VM by $(whoami)</h1>" | sudo tee /var/www/html/index.html
Оскільки в Codespaces немає графічної панелі CloudWatch, ми використовуємо професійні термінальні інструменти.
Встановіть монітор:
sudo apt install -y htop
htop
Приклад роботи в терміналі: моніторинг ресурсів:
@SurkovKostiantyn ➜ /workspaces/test (main) $ sudo apt install -y htop
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
htop is already the newest version (3.3.0-4build1).
0 upgraded, 0 newly installed, 0 to remove and 145 not upgraded.
Після запуску команди htop, перед вами відкриється вікно з моніторингом ресурсів:

Симуляція навантаження: Відкрийте другий термінал і запустіть:
yes > /dev/null &
# Через 20 секунд вимкніть
killall yes
Спостерігайте в htop, як завантажується ядро процесора:

У Codespaces поняття “IP” замінено на унікальний URL (наприклад, legendary-space-trout-q7rv...github.dev).
Оскільки Codespaces — це одиничний контейнер, горизонтальне масштабування тут не реалізується наочно. Але ви можете порівняти:
ssh ubuntu@<IP>)uname -a, free -h, df -h з VMlab04.md