Персональна освітня сорінка
by Pavlo Shcherbukha
Прийшлось змінити напрямок і познайомитися з AZURE. Ну і в рамках вивчення цієї хмари, та проходження azure-них навчальних курсів роблю деякі замальовки собі на пам’ять і публікую, можливо комусь і допоможе. Особливо тим, хто довго працював з windows і не працював з linux зовсім та з інфраструктурою хмар. Базове навчання AZURE передбачає виконання деяких лабораторних робіт в рамках вивчення IAAS. Але, для практичного використання, мені тих робіт здалося замало, тому зробив свій навчальний проект.
Для прикладу, створення віртуальних машин, що розміщені у віртуальній приватній мережі та відкриття відповідних доступів до цих VMs. Ну, і якщо на ці віртуальні машини поставити яке небуть Web-app - то знадобиться ще і поставити балансер перед VMs що приймають web запити. До VMs потрібно вміти підключитися, якщо у вас windows машина в якості робочої санції. А осоливо, коли потрібно управляти кількома VMs.
Ну і, як виявилося, треба вміти вибирати потрібну вам конфігурацію VMs щоб не переплачувати за ті ресурси, що ви не будете використовувати.
Кінцевим етапом цього всьго єстворення додатку, розгорнутого на iaas в azure, що показано на pic-14

Заходимо на портал azure та реєструємося, та попадаємо на домашню сторінку порталу pic-01.

Далі буде можливість почати з trial підписки, отримавши $200 депозиту на рахунок. У вас з’явиться безкоштовна підписка pic-15.

У вас буде автоматично створена Azure subscription 1 pic-16.

А бо ж можна створити підписку pay-as-you-go і використовувати всі сервіси без обмежень. Для тестів - не так багато вого уже і нарахує pic-02.

При створенні підписки у вас запрсить реквізити платіжної карточки, і можливо спише $1 а потім поверне. Ця процедура схожа у всіх хмарах. На особистому досвіді перевіряв в IBM, ORACLE, DigitalOcean, Azure, навіть для тріальної підписки.
На pic-17 показано екран з обов’язковими для заповненя полями.

Наступним кроком буде створення ResourceGroupe, що дозволить згурпувати ваші ресурси. В подальшому resource group буде згадуватися при ствренні кожного сервісу і тому потрібно уважно її вибирати. При створенні ResourceGroup потрібо вибрати центр обороки даних, з яким будуть поєдунватись ресурси, створені в рамках цієї групи.

Створювати віртуальну машну можна з меню “Virtual machines”. Але перед цим потрібно вибрати, який образ віртуальної машини вам потрібен. В меню стоврення робити цей вибір дуже не зручно, тому бажано спершу вибрати. Про доступні образи віртуальних машин можна отримати інфомрацію за лінком: Linux Virtual Machines Pricing. Тут можна задати ряд параметрів і отримати список доступних конфігурацій та їх опис, ну і вирати ту, що вам потрібна. За замовчуванням зразу пропонують linux машни. Я теж пропоную вибрати найдешевший Linux образ з широким community. Тому зразу іду на каталог образів для ОС Ubunta. На pic-20 показано приклад таблиці образів та їх ціна за місяць експлуатаціх так би мовити “без зупинки 24*7”. В навчальних цілях, якщо будете вимикати ресурс, кои ви з ним не працюєте ви цього прайсу не досягнете.

Крім того, потрібно визначитися з типом диску. Майте на увазі, що вам за замовчуванням пропонується Premium SSD хоча в більшості випадків вам потрібен звичайний standard SSD. Доступна таблиця дисків показана на pic-21, а о прайсингу не знайшов. Судячи з усього прайсинг на диски складається з кількох складових.

.
Тепер перейемо до створення машин. Для створення машин можна використовувати команди Azure CLI, а точніше команду az-vm-create. Цю команду потрібно запускати з консолі Azure CLI в хмарі. Ну або ж поставити Azure CLI на ваш ноутбук. Команда буде виглядати щось на кшталт такої:
az vm create -n MyVm -g MyResourceGroup --public-ip-address-dns-name MyUniqueDnsName \
--image ubuntults --data-disk-sizes-gb 10 20 --size Standard_DS2_v2 \
--generate-ssh-keys
Єдине, що мені в цьому не подобається, що коли ви створюєте це все щерез хмарну консоль, то RSA ключі для підключення по SSH будуь залишатися в хмарі. А я планю підключатися до vm з локального laptop по SSH на пряму. На pic-23 показано

як запустити в хмарі цю консоль та де лежать ключі для віртуалки.
Для створення через UI натискаем на іконку pic-19

і заповнюємо послідовно екранні форми. Переша екранна форма має основні реквізити vm

На йьому екрані зверніть увагу на поля region, size - де виберіть ваш образ. Authentication type - виберіть рекомендоване SSH public key та перевірте, щоб було заповнено поле SSH public key source та Key pair name. Ці поля нам знадояться пізніше. І як показано на pic-05

Обов’язково поставте, щоб був доступний порт 22 для підклбчення по ssh select inbound ports.
Вікно вибора диска показно на pic-06.

Тут потрібоно змінити значення в полі OS disc type, на той, що поаказано на малюнку.
Заповнення вкладки показано на pic-07

Тут ви можете вказати назву віртуальної мережі. Не забудьте вказати на необхідність генерації публічного IP та поставити “галочку”, щоб публічний IP видалявся разом з видаленням VM. Якщо не видаляти, то публічний IP буде тарифікуватися і будуть списуватися гроші. Також, не забуваємо звернути увагу, що потрібно створити network security group (NIC) та дозволити в ній доступ з зовні virtual network до vm по порту 22.
Далі, вкладки Management, Advanced, Tag можемо проклікати без змін і далі перейти до вкладки Review + create pic-09.

Після натискання на кнопку Create, потрібно обов’язково скачати rsa-ключ для пдключення по ssh до вашої віртуалки pic-10.

Якщо все зроблено првильно, что через хвилину - дві віртуалка буде створена і запущена.
Для підключення по ssh з windows 10 потрібно встановити openssh. Як встановити openssh на windows 10 описано по лінку Get started with OpenSSH.
Якзо коротко, то щоб активувати, потрібно в PowerShell виконати:
Get-WindowsCapability -Online | Where-Object Name -like 'OpenSSH*'
на виході отримаємо щось таке
Name : OpenSSH.Client~~~~0.0.1.0
State : NotPresent
Name : OpenSSH.Server~~~~0.0.1.0
State : NotPresent
# Install the OpenSSH Client
Add-WindowsCapability -Online -Name OpenSSH.Client~~~~0.0.1.0
у відповідь буде щось таке
Path :
Online : True
RestartNeeded : False
В резульаті цих операцій у вас повинен появитися каталог C:\Windows\System32\OpenSSH з переліком файлів як на pic-24

Тепер ще потрібно додати в змінну path C:\Windows\System32\OpenSSH
Далі, якщо набрати ssh -h то отримаємо екран як на pic-25.

Для підклчення до віртуалки потрібен public IP та секретний ключ, який був скачаний pic-10 в процесі створення вашої віртуалки.
Команда підключення:
ssh -i keyname.pem azureuser@publicIP

В результаті підключення буде щось схоже на таке pic-27.

Таким чином створили одну VM та виконали до нех підключання по ssh. Для цілей розробки та тестування цього достатньо.
Для досягнення конфігурації описаної на pic-14

потрібно створити 3 віртуальних машини. На машинах уже присутній git та за замовчуванням вони можуть комунікувати в рамках virtual network одна з одною. Бажано виконати лоалізацію, так як написано в Настройка linux ubuntu 20.04 для розроника, щоб коректно відображалася кирилиця
Далі на vm4 потрібно розгорнути сервер mysql, так, як написано по лінку: Установка MySql на VM з ОS Ubunta.
Тут, особливо не забуваємо про розділ інстукції: Зробити можливем підклчення до mysql з віддаленої машини, що б сервер приймав підключення з віддалених машин
Далі на vm2 та vm3 потрібно розгорнути клієнт mysql, так, як написано по лінку: Установка MySql на VM з ОS Ubunta, по суті, виконати:
sudo apt install mysql-client
Далі заходимо по ssh на vm4 (де встановлено mysql) та підключаємося під root для створення прикладного користувача
sudo mysql -u root
Та виконуємо скрипт по створенню прикладного користувача: mysql-ddl.sql. Можна просто, шляхом вклеювання в вікно, але перд цим не забуваємо поміняти пароль в рядку:
CREATE USER 'devadm'@'%' IDENTIFIED BY '*******';
Виходимо.
Підключаємось уже під новоствореним користувачем:
sudo mysql -udevadm -p
Вводимо пароль та створюємо БД шляхом виконання псолідовно скриптів:
db-build.sql - створення БД;
data-ins1.sql - внесення в БД тестових даних;
Для підклюення до віддаленого сервера mysql потрідно зайти на vm2 або vm3 та підкобчитися командою:
mysql -u devadm -p -h 10.0.0.4
Основною відмінністю від роботи на севрері є необхідність вказати ip host машини, де запущений сервер mysql. В моєму випадку це локальний IP сервера в virtual network.
Далі, якщо все налаштовано коерктно, то виконаємо select з data-ins1.sql
use test4;
select A.* from APP2$EMP A;
І повинні отримати щось схоже на

та клонуємо репозиторій https://github.com/pavlo-shcherbukha/az-lan-app
Все, пересвідчилися - , зв’язок з сервером є, клієнт працює.
git clone https://github.com/pavlo-shcherbukha/az-lan-app.git