Практическая работа. Создание виртуальных машин с помощью CLI
Кратко:
- Создание виртуальных машин (ВМ) с помощью CLI
- Создание подсетей и сети my-network
- Создание трех ВМ с ОС Ubuntu 20.04 LTS
- Запуск команд в асинхронном режиме
- Получение идентификатора операции и слежение за ее статусом
- Вывод списка ВМ: в виде таблицы или в формате YAML/JSON
- Удаление созданных ВМ после завершения практических работ
Практическая работа. Создание виртуальных машин с помощью CLI
Создание ВМ — одна из самых сложных команд CLI, потому что в ней очень много параметров. Давайте потренируемся работать с ней. Но сначала подготовим окружение.
Мы будем работать в каталоге по умолчанию. Создадим в нём сеть, в ней — три подсети, а затем по ВМ в каждой подсети.
- Создайте сеть
my-networkв Virtual Private Cloud. Эта команда относится к группе vpc.
Проверьте синтаксис команды
yc vpc network create --name my-network
Выполнение операции займёт какое-то время. В итоге сеть появится в каталоге, который вы выбрали в предыдущей практической работе.
- Теперь создадим три подсети в разных зонах доступности (
ru-central1-a,ru-central1-b,ru-central1-d). Чтобы проще было выполнять задания дальше, назовите ихmy-subnet-1,my-subnet-2иmy-subnet-3. А пространства IP-адресов для подсетей укажите, соответственно, как192.168.1.0/24,192.168.2.0/24и192.168.3.0/24.
Не забудьте указать, что вы создаёте подсети в новой сети, созданной на предыдущем шаге. Иначе они появятся в сети по умолчанию, которая есть в каждом каталоге.
Вот так выглядит команда создания подсети в зоне доступности
ru-central1-a:yc vpc subnet create \
--name my-subnet-1 \
--zone ru-central1-a \
--range 192.168.1.0/24 \
--network-name my-network
name— имя подсети.zone— зона доступности.range— адресное пространство подсети.network-name— имя сети, в которой создаётся подсеть.
Создайте две другие подсети сами.
yc vpc subnet create \
--name my-subnet-2 \
--zone ru-central1-b \
--range 192.168.2.0/24 \
--network-name my-network
yc vpc subnet create \
--name my-subnet-3 \
--zone ru-central1-d \
--range 192.168.3.0/24 \
--network-name my-network
- Осталось создать три ВМ в нужных зонах доступности и привязать к ним подсети.
Пусть машины работают под управлением ОС Ubuntu 20.04 LTS, имеют диски объёмом 30 Гб, 4 Гб оперативной памяти и два виртуальных процессорных ядра.
ВМ могут создаваться долго, поэтому запускайте команды в асинхронном режиме.
Пример команды для первой ВМ:
yc compute instance create \
--name my-instance-1 \
--hostname my-instance-1 \
--zone ru-central1-a \
--create-boot-disk image-family=ubuntu-2004-lts,size=30,type=network-nvme \
--image-folder-id standard-images \
--memory 4 --cores 2 --core-fraction 100 \
--network-interface subnet-name=my-subnet-1,nat-ip-version=ipv4 \
--async
Создайте две другие машины сами.
yc compute instance create \
--name my-instance-2 \
--hostname my-instance-2 \
--zone ru-central1-b \
--create-boot-disk image-family=ubuntu-2004-lts,size=30,type=network-nvme \
--image-folder-id standard-images \
--memory 4 --cores 2 --core-fraction 100 \
--network-interface subnet-name=my-subnet-2,nat-ip-version=ipv4 \
--async
yc compute instance create \
--name my-instance-3 \
--hostname my-instance-3 \
--zone ru-central1-d \
--create-boot-disk image-family=ubuntu-2004-lts,size=30,type=network-nvme \
--image-folder-id standard-images \
--memory 4 --cores 2 --core-fraction 100 \
--network-interface subnet-name=my-subnet-3,nat-ip-version=ipv4 \
--async
- Проследите за статусом одной из операций, используя ее идентификатор.
yc operation get <идентификатор_операции>
- Дождитесь, пока операция завершится. Используйте для этого команду
wait.
yc operation wait <идентификатор_операции>
- Убедитесь, что ВМ созданы. Для этого выведите их список.
yc compute instance list
yc compute instance list --format json
[
{
"id": "ef3rutmaas72bsujcja7",
"folder_id": "b1gfdbij3ijgopgqv9m9",
"created_at": "2021-06-21T12:41:10Z",
"name": "my-instance-3",
"zone_id": "ru-central1-d",
"platform_id": "standard-v2",
"resources": {
"memory": "4294967296",
"cores": "2",
"core_fraction": "100"
},
"status": "RUNNING",
"metadata_options": {
"gce_http_endpoint": "ENABLED",
"aws_v1_http_endpoint": "ENABLED",
"gce_http_token": "ENABLED",
"aws_v1_http_token": "ENABLED"
},
"boot_disk": {
"mode": "READ_WRITE",
"device_name": "ef3v2lor1u4pfn3ce1al",
"auto_delete": true,
"disk_id": "ef3v2lor1u4pfn3ce1al"
},
"network_interfaces": [
{
"index": "0",
"mac_address": "d0:0d:1b:f7:6c:a5",
"subnet_id": "b0c4h992tbuodl5hudpu",
"primary_v4_address": {
"address": "10.128.0.32",
"one_to_one_nat": {
"address": "178.154.212.5",
"ip_version": "IPV4"
}
}
}
],
"fqdn": "my-instance-3.ru-central1.internal",
"scheduling_policy": {},
"network_settings": {
"type": "STANDARD"
},
"placement_policy": {}
},
{
"id": "epd928ffks7m8ssc4i3k",
"folder_id": "b1gfdbij3ijgopgqv9m9",
"created_at": "2021-06-21T12:40:35Z",
"name": "my-instance-2",
"zone_id": "ru-central1-b",
"platform_id": "standard-v2",
"resources": {
"memory": "4294967296",
"cores": "2",
"core_fraction": "100"
},
"status": "RUNNING",
"metadata_options": {
"gce_http_endpoint": "ENABLED",
"aws_v1_http_endpoint": "ENABLED",
"gce_http_token": "ENABLED",
"aws_v1_http_token": "ENABLED"
},
"boot_disk": {
"mode": "READ_WRITE",
"device_name": "epddf7t0ljn9i1jp2pbs",
"auto_delete": true,
"disk_id": "epddf7t0ljn9i1jp2pbs"
},
"network_interfaces": [
{
"index": "0",
"mac_address": "d0:0d:91:21:ef:a7",
"subnet_id": "e2l1fgq2fbhnp6b929t7",
"primary_v4_address": {
"address": "10.129.0.9",
"one_to_one_nat": {
"address": "84.201.176.134",
"ip_version": "IPV4"
}
}
}
],
"fqdn": "my-instance-2.ru-central1.internal",
"scheduling_policy": {},
"network_settings": {
"type": "STANDARD"
},
"placement_policy": {}
},
{
"id": "fhm1op9id0dc6bubfags",
"folder_id": "b1gfdbij3ijgopgqv9m9",
"created_at": "2021-06-21T12:39:43Z",
"name": "my-instance-1",
"zone_id": "ru-central1-a",
"platform_id": "standard-v2",
"resources": {
"memory": "4294967296",
"cores": "2",
"core_fraction": "100"
},
"status": "RUNNING",
"metadata_options": {
"gce_http_endpoint": "ENABLED",
"aws_v1_http_endpoint": "ENABLED",
"gce_http_token": "ENABLED",
"aws_v1_http_token": "ENABLED"
},
"boot_disk": {
"mode": "READ_WRITE",
"device_name": "fhmms7r7ia4uteikv1to",
"auto_delete": true,
"disk_id": "fhmms7r7ia4uteikv1to"
},
"network_interfaces": [
{
"index": "0",
"mac_address": "d0:0d:1c:65:32:68",
"subnet_id": "e9bcvlanhbum9ggdvkh2",
"primary_v4_address": {
"address": "10.130.0.6",
"one_to_one_nat": {
"address": "178.154.225.167",
"ip_version": "IPV4"
}
}
}
],
"fqdn": "my-instance-1.ru-central1.internal",
"scheduling_policy": {},
"network_settings": {
"type": "STANDARD"
},
"placement_policy": {}
}
]
- Чтобы избежать ненужных расходов, удалите три созданные ВМ – в следующих практических работах они вам не понадобятся.
yc compute instance delete my-instance-1 my-instance-2 my-instance-3