Кратко:
- Изучение Yandex Cloud CLI для автоматизации работы с виртуальными машинами.
- Установка утилиты yc для работы с Yandex Cloud CLI.
- Создание файла startup.sh для настройки виртуальных машин с NGINX.
- Использование Yandex Cloud CLI для создания виртуальных машин с помощью команды yc compute instance create.
- Разделение команд Yandex Cloud CLI на отдельные строки для удобства чтения и выполнения.
- Создание двух виртуальных машин с именами demo-1 и demo-2.
- Проверка работоспособности виртуальных машин, проверка доступа к их информационным страницам.
- Следующий шаг: добавление виртуальных машин в целевую группу и создание сетевого балансировщика.
Знакомство с Yandex Cloud CLI
Пора изучить, как работает сетевой балансировщик, на практике. Для этого создадим в облаке простую систему: развернём две ВМ, запустим на них веб-серверы NGINX и поместим их за балансировщик. В этой практической работе вам предстоит подготовить виртуальные машины, а в следующей — создать балансировщик и поэкспериментировать с ним.
Создавать ВМ через консоль управления облаком вы уже умеете. Вот только для реальных проектов часто приходится разворачивать далеко не одну-две ВМ. В этом случае работать через консоль управления долго и неудобно, да и вероятность ошибиться, выполняя много однотипных операций вручную, растёт. Решить эту проблему можно с помощью автоматизации, а один из самых простых способов это сделать — использовать интерфейс командной строки (CLI, Command Line Interface).
Подробно этот инструмент вы будете изучать в курсе «DevOps и автоматизация», а сейчас давайте посмотрим, как его применяют, на примере создания ВМ.
Начнём?
-
Установите на свой компьютер утилиту
yc
, которая представляет собой интерфейс командной строки Yandex Cloud CLI, и настройте её (создайте профиль) . -
Создайте файл
startup.sh
со следующим содержимым:
#!/bin/bash
apt-get update -q
apt-get install -y -q nginx
sed -i -- "s/Welcome to nginx/Welcome to Yandex Cloud - $(hostname -a)/" /var/www/html/index.nginx-debian.html
systemctl enable nginx --now
Это скрипт, который будет запускаться на разворачиваемых ВМ. Он обновляет список пакетов с софтом, устанавливает и запускает NGINX, а затем изменяет текст информационной страницы работающего веб-сервера.
- Чтобы создать ВМ с помощью Yandex Cloud CLI, нужно запустить на своем компьютере командную оболочку (например,
bash
в Ubuntu) и выполнить в ней команду:
yc compute instance create \
--name demo-1 \
--metadata-from-file user-data=startup.sh \
--create-boot-disk image-folder-id=standard-images,image-family=ubuntu-2404-lts \
--zone ru-central1-a \
--network-interface subnet-name=default-ru-central1-a,nat-ip-version=ipv4
Но прежде чем это делать, давайте разберёмся, что же в ней написано.
Большинство команд Yandex Cloud CLI построено по одному и тому же принципу:
- вначале идёт название утилиты
yc
; - потом указывается сервис Yandex Cloud, к которому мы обращаемся (в нашем случае это Compute Cloud, поэтому используем слово
compute
); - потом ресурс, с которым мы будем работать (в нашем случае это виртуальная машина —
instance
); - а затем действие, которое мы собираемся выполнить с этим ресурсом (в нашем случае создать —
create
); - после этого идут параметры и/или флаги.
В этом примере в качестве параметров мы используем:
--name demo-1
— задаём виртуальной машине имяdemo-1
;--hostname demo-1
— задаём имя хоста (тожеdemo-1
);
💡 Имя ВМ и имя хоста — разные вещи, хотя они часто совпадают. Первое нужно, прежде всего, для того, чтобы вы могли легко отличать свои ВМ друг от друга. При создании ВМ через консоль управления задаётся именно оно. А имя хоста используется для присвоения ВМ внутреннего FQDN (полностью определённого имени домена) — её полного адреса в облачной сети.
--metadata-from-file user-data=startup.sh
— указываем, что при создании ВМ нужно взять метаданные из скриптаstartup.sh
;--create-boot-disk image-folder-id=standard-images,image-family=ubuntu-2004-lts
— указываем, что загрузочный диск ВМ нужно создать из стандартного образа с OC Ubuntu 20.04;--zone ru-central1-a
— определяем зону доступности, в которой будет создана ВМ;--network-interface subnet-name=default-ru-central1-a,nat-ip-version=ipv4
— указываем, в какой подсети для ВМ будет создан сетевой интерфейс с IPv4-адресом.
💡 В этом примере мы создадим ВМ в сети с именем
default
. Но если вы хотите создать ВМ в другой сети (например, skynet
), то имя подсети, естественно, будет другим — skynet-ru-central1-a
.Помните, что имена, идентификаторы и адреса ваших ресурсов во многих случаях будут отличаться от тех, что приводятся в примерах команд! Поэтому, копируя команды, подставляйте в них свои значения. В дальнейшем мы будем показывать, что именно заменить, с помощью
<плейсхолдеров>
.Выглядит это так.
Фрагмент команды с плейсхолдером:
--network-interface subnet-name=<имя_подсети>,nat-ip-version=ipv4
После подстановки своего значения (
skynet-ru-central1-a
):--network-interface subnet-name=skynet-ru-central1-a,nat-ip-version=ipv4
- И ещё несколько моментов, прежде чем вы вернетесь к практике.
В Windows из-за особенностей синтаксиса командных оболочек cmd и PowerShell некоторые команды Yandex Cloud CLI могут выполняться некорректно. Рекомендуем использовать альтернативные варианты: стороннюю командную оболочку (например, Git BASH), подсистемы Windows для Linux (WSL) или терминал на машине с ОС Linux / macOS.
Чтобы команды лучше читались, их разбивают на несколько строк с помощью символа
\
. Благодаря ему командная строка понимает, что вы вводите одну, а не несколько разных команд. В командных оболочках cmd и PowerShell вместо \
используются символы ^
и `
соответственно. Учитывайте это, если работаете в одной из них.Подробная информация о Yandex Cloud CLI.
- Создайте ВМ
demo-1
, запустив приведённую в шаге 3 команду. Если она выполнена успешно, то в командной оболочке будет выведена информация о параметрах развёрнутой ВМ.

-
Самостоятельно измените и ещё раз запустите команду, чтобы создать другую виртуальную машину с именем ВМ и хоста
demo-2
. -
Проверьте, что обе ВМ успешно созданы. Это можно сделать, заглянув в консоль управления.

А можно и с помощью командной строки. Попробуйте вывести список ВМ в каталоге, выполнив команду
yc compute instance list
. У вас должен получиться примерно такой результат:- Введите публичные IP-адреса ВМ в браузере, чтобы убедиться, что информационные страницы обоих веб-серверов доступны из интернета. Иногда эти страницы открываются не сразу — приходится немного подождать, пока на ВМ обновится список пакетов и установится NGINX.
Итак, нужные ВМ созданы. В следующей практической работе вы добавите их в целевую группу, создадите сетевой балансировщик и изучите, как он работает.
👉 Если вы собираетесь приступить к следующему уроку не сразу, то не забудьте остановить созданные ВМ.