Получить информацию о виртуальной машине
Вы можете получить основную информацию о каждой созданной вами ВМ в консоли управления
Также основную информацию и метаданные можно получить изнутри ВМ.
Получить информацию снаружи ВМ
В сервисе Compute Cloud, на странице Виртуальные машины, приводится список ВМ в каталоге с краткой информацией о них.
Для получения подробной информации о ВМ нажмите на строку с ее именем.
На вкладке:
- Обзор приводится общая информация о ВМ, в том числе IP-адреса, присвоенные ВМ.
- Диски приводится информация о дисках, подключенных к ВМ.
- Файловые хранилища приводится информация о подключенных файловых хранилищах.
- Операции приводится список операций с ВМ и подключенными к ней ресурсами, например дисками.
- Мониторинг приводится информация о потреблении ресурсов на ВМ. Эту информацию можно получить только в консоли управления или изнутри ВМ.
- Серийная консоль предоставлен доступ к серийной консоли, если при создании ВМ вы разрешили к ней доступ.
- Последовательный порт приводится информация, которую ВМ выводит в последовательный порт. Чтобы получить эту информацию через API или CLI, воспользуйтесь инструкцией Получить вывод последовательного порта.
По умолчанию используется каталог, указанный в профиле CLI. Вы можете указать другой каталог с помощью параметра --folder-name
или --folder-id
.
-
Посмотрите описание команды для получения вывода последовательного порта:
yc compute instance get --help
-
Выберите ВМ, например
first-instance
:yc compute instance list
Результат:
+----------------------+-----------------+---------------+---------+----------------------+ | ID | NAME | ZONE ID | STATUS | DESCRIPTION | +----------------------+-----------------+---------------+---------+----------------------+ | fhm0b28lgfp4******** | first-instance | ru-central1-a | RUNNING | my first vm via CLI | | fhm9gk85nj7g******** | second-instance | ru-central1-a | RUNNING | my second vm via CLI | +----------------------+-----------------+---------------+---------+----------------------+
-
Получите основную информацию о ВМ:
yc compute instance get first-instance
Чтобы получить информацию о ВМ вместе с метаданными, используйте флаг
--full
:yc compute instance get --full first-instance
Terraform
Terraform распространяется под лицензией Business Source License
Подробную информацию о ресурсах провайдера смотрите в документации на сайте Terraform
Если у вас еще нет Terraform, установите его и настройте провайдер Yandex Cloud.
-
Опишите в конфигурационном файле Terraform параметры ресурсов, которые необходимо создать:
data "yandex_compute_instance" "my_instance" { instance_id = "<идентификатор_ВМ>" } output "instance_external_ip" { value = "${data.yandex_compute_instance.my_instance.network_interface.0.nat_ip_address}" }
Где:
data "yandex_compute_instance"
— описание источника данных для получения информации о ВМ:instance_id
— идентификатор ВМ.
output "instance_external_ip"
— публичный IP-адрес ВМ, который будет выводиться в результате:value
— возвращаемое значение.
Более подробную информацию о параметрах источника данных
yandex_compute_instance
см. в документации провайдера . -
Создайте ресурсы:
-
В терминале перейдите в папку, где вы отредактировали конфигурационный файл.
-
Проверьте корректность конфигурационного файла с помощью команды:
terraform validate
Если конфигурация является корректной, появится сообщение:
Success! The configuration is valid.
-
Выполните команду:
terraform plan
В терминале будет выведен список ресурсов с параметрами. На этом этапе изменения не будут внесены. Если в конфигурации есть ошибки, Terraform на них укажет.
-
Примените изменения конфигурации:
terraform apply
-
Подтвердите изменения: введите в терминале слово
yes
и нажмите Enter.
Terraform создаст все требуемые ресурсы и отобразит значения выходных переменных в терминале. Чтобы проверить результат, выполните команду:
terraform output instance_external_ip
Результат:
instance_external_ip = "158.160.50.228"
-
Чтобы получить основную информацию о ВМ, воспользуйтесь методом REST API get для ресурса Instance или вызовом gRPC API InstanceService/Get.
Основная информация не включает пользовательские метаданные, которые были переданы при создании или изменении ВМ. Чтобы получить информацию вместе с метаданными, укажите в параметрах view=FULL
.
Получить информацию изнутри ВМ
Изнутри виртуальной машины сервис метаданных доступен по IP-адресу 169.254.169.254
.
На данный момент сервис метаданных Yandex Cloud возвращает метаданные в форматах Google Compute Engine и Amazon EC2.
Google Compute Engine
Сервис метаданных Yandex Cloud позволяет возвращать метаданные в формате Google Compute Engine.
HTTP-запрос
GET http://169.254.169.254/computeMetadata/v1/instance/
? alt=<json|text>
& recursive=<true|false>
& wait_for_change=<true|false>
& last_etag=<string>
& timeout_sec=<int>
Metadata-Flavor: Google
Где:
alt
— формат ответа (по умолчаниюtext
).recursive
— еслиtrue
, возвращает все значения по дереву рекурсивно. По умолчаниюfalse
.wait_for_change
— еслиtrue
, ответ будет возвращен только когда один из параметров метаданных изменится. По умолчаниюfalse
.last_etag
— значение ETag из предыдущего ответа на аналогичный запрос. Используйте приwait_for_change="true"
.timeout_sec
— максимальное время ожидания запроса. Используйте приwait_for_change="true"
.
Примеры запросов
Узнать идентификатор ВМ изнутри ВМ:
curl \
--header Metadata-Flavor:Google \
169.254.169.254/computeMetadata/v1/instance/id
Получить метаданные в формате JSON:
curl \
--header Metadata-Flavor:Google \
169.254.169.254/computeMetadata/v1/instance/?recursive=true
Получить метаданные в удобном для чтения формате. Воспользуйтесь утилитой jq
curl \
--header Metadata-Flavor:Google \
169.254.169.254/computeMetadata/v1/instance/?recursive=true | \
jq -r '.'
Получить идентификационный документ:
curl \
--header Metadata-Flavor:Google \
169.254.169.254/computeMetadata/v1/instance/vendor/identity/document
Список возвращаемых элементов
Список элементов, которые доступны по этому запросу:
attributes/
— пользовательские метаданные, переданные при создании или изменении ВМ в полеmetadata
.attributes/ssh-keys
— список открытых SSH-ключей, переданных при создании ВМ в полеmetadata
в значении ключаssh-keys
.description
— текстовое описание, переданное при создании или изменении ВМ.disks/
— диски, подключенные к ВМ.hostname
— FQDN, назначенный ВМ.id
— идентификатор ВМ. ID генерируется автоматически при создании ВМ и уникален в пределах Yandex Cloud.name
— имя, переданное при создании или изменении ВМ.networkInterfaces/
— сетевые интерфейсы, подключенные к ВМ.service-accounts
— сервисные аккаунты, привязанные к ВМ.service-accounts/default/token
— Yandex Identity and Access Management-токен привязанного сервисного аккаунта.
Другие элементы, например project
, используются для обратной совместимости и остаются пустыми.
Amazon EC2
Сервис метаданных Yandex Cloud позволяет возвращать метаданные в формате Amazon EC2. При этом формат не поддерживает работу с пользовательскими полями метаданных.
HTTP-запрос
GET http://169.254.169.254/latest/meta-data/<элемент>
Где <элемент>
— путь к элементу, который вы хотите получить. Если элемент не задан, в ответе вернется список доступных элементов.
Список возвращаемых элементов
Список элементов, которые доступны по этому запросу.
Примечание
В угловых скобках выделены параметры, которые необходимо заменить значениями. Например, вместо <MAC-адрес>
следует подставить MAC-адрес сетевого интерфейса.
hostname
— имя хоста, присвоенное ВМ.instance-id
— идентификатор ВМ.local-ipv4
— внутренний IPv4-адрес.local-hostname
— имя хоста, присвоенное ВМ.mac
— MAC-адрес сетевого интерфейса ВМ.network/interfaces/macs/<MAC-адрес>/ipv6s
— внутренние IPv6-адреса, ассоциированные с сетевым интерфейсом.network/interfaces/macs/<MAC-адрес>/local-hostname
— имя хоста, ассоциированное с сетевым интерфейсом.network/interfaces/macs/<MAC-адрес>/local-ipv4s
— внутренние IPv4-адреса, ассоциированные с сетевым интерфейсом.network/interfaces/macs/<MAC-адрес>/mac
— MAC-адрес сетевого интерфейса ВМ.public-ipv4
— публичный IPv4-адрес.
Примеры запросов
Получить внутренний IP-адрес изнутри ВМ:
curl http://169.254.169.254/latest/meta-data/local-ipv4
Получить идентификационный документ:
curl http://169.254.169.254/latest/vendor/instance-identity/document
Настроить параметры сервиса метаданных ВМ
Настроить параметры сервиса метаданных вы можете при создании или изменении ВМ.
Доступны следующие опции:
-
aws-v1-http-endpoint
— обеспечивает доступ к метаданным с использованием формата AWS (IMDSv1). Возможные значения:enabled
,disabled
. Если для опции задано значениеdisabled
, то запрос к метаданным завершится ошибкой400
(BadRequest
). Значение по умолчанию:enabled
. -
aws-v1-http-token
— обеспечивает доступ к получению через метаданные AWSv1 (IMDSv1) токена сервисного аккаунта, подключенного к ВМ. Возможные значения:enabled
,disabled
. Если для опции задано значениеdisabled
, то запрос на получение токена завершится ошибкой400
(BadRequest
). Значение по умолчанию:disabled
.Примечание
Формат IMDSv1 имеет ряд недостатков со стороны безопасности, поэтому по умолчанию параметр
aws-v1-http-token
выключен (disabled
). Наиболее критичный недостаток IMDSv1 — повышенный риск реализации некоторых атак, например SSRF (подробнее в официальном блоге AWS ). Для изменения поведения по умолчанию этого параметра обратитесь в поддержку .Наиболее безопасным методом получения токена в Yandex Cloud является использование формата Google Compute Engine (он использует дополнительный заголовок для защиты от SSRF).
-
gce-http-endpoint
— обеспечивает доступ к метаданным с использованием формата Google Compute Engine. Возможные значения:enabled
,disabled
. Если для опции задано значениеdisabled
, то запрос к метаданным завершится ошибкой400
(BadRequest
). Значение по умолчанию:enabled
. -
gce-http-token
— обеспечивает доступ к получению через метаданные Google Compute Engine токена сервисного аккаунта, подключенного к ВМ. Возможные значения:enabled
,disabled
. Если для опции задано значениеdisabled
, то запрос на получение токена завершится ошибкой400
(BadRequest
). Значение по умолчанию:enabled
.
Получить значения параметров сервиса метаданных вы можете вместе с информацией о ВМ с помощью CLI и API.
Чтобы настроить параметры сервиса метаданных ВМ:
Если у вас еще нет интерфейса командной строки Yandex Cloud, установите и инициализируйте его.
По умолчанию используется каталог, указанный в профиле CLI. Вы можете указать другой каталог с помощью параметра --folder-name
или --folder-id
.
-
Посмотрите описание команды CLI для обновления параметров ВМ:
yc compute instance update --help
-
Получите список ВМ в каталоге по умолчанию:
yc compute instance list
-
Выберите идентификатор (
ID
) или имя (NAME
) нужной ВМ. -
Задайте настройки сервиса метаданных с помощью параметра
--metadata-options
:yc compute instance update <идентификатор_ВМ> \ --metadata-options gce-http-endpoint=enabled
Если у вас еще нет Terraform, установите его и настройте провайдер Yandex Cloud.
Terraform
Terraform распространяется под лицензией Business Source License
Подробную информацию о ресурсах провайдера смотрите в документации на сайте Terraform
-
Откройте файл конфигурации Terraform и измените параметр
metadata_options
в описании ВМ:... resource "yandex_compute_instance" "test-vm" { ... metadata_options { aws_v1_http_endpoint = 2 aws_v1_http_token = 2 gce_http_endpoint = 0 gce_http_token = 0 } ... } ...
Где:
yandex_compute_instance
— описание ВМ:metadata_options
— параметры метаданных:aws_v1_http_endpoint
— обеспечивает доступ к метаданным с использованием формата AWS (IMDSv1). Возможные значения:0
и1
—enabled
,2
—disabled
.aws_v1_http_token
— обеспечивает доступ к учетным данным Identity and Access Management с использованием формата AWS (IMDSv1). Возможные значения:0
и1
—enabled
,2
—disabled
.gce_http_endpoint
— обеспечивает доступ к метаданным с использованием формата Google Compute Engine. Возможные значения:0
и1
—enabled
,2
—disabled
.gce_http_token
— обеспечивает доступ к учетным данным Identity and Access Management с использованием формата Google Compute Engine. Возможные значения:0
и1
—enabled
,2
—disabled
.
Более подробную информацию о параметрах ресурса
yandex_compute_instance
в Terraform см. в документации провайдера . -
Создайте ресурсы:
-
В терминале перейдите в папку, где вы отредактировали конфигурационный файл.
-
Проверьте корректность конфигурационного файла с помощью команды:
terraform validate
Если конфигурация является корректной, появится сообщение:
Success! The configuration is valid.
-
Выполните команду:
terraform plan
В терминале будет выведен список ресурсов с параметрами. На этом этапе изменения не будут внесены. Если в конфигурации есть ошибки, Terraform на них укажет.
-
Примените изменения конфигурации:
terraform apply
-
Подтвердите изменения: введите в терминале слово
yes
и нажмите Enter.
После этого в указанном каталоге будут созданы все требуемые ресурсы с заданными настройками. Проверить появление ресурсов и их настройки можно в консоли управления
или с помощью команды CLI:yc compute instance get <имя_ВМ>
-
Воспользуйтесь методом REST API update для ресурса Instance или вызовом gRPC API InstanceService/Update.
Удалить SSH-ключи из метаданных
- В консоли управления
выберите каталог, которому принадлежит ВМ. - Выберите сервис Compute Cloud.
- Нажмите на имя нужной ВМ.
- В правом верхнем углу страницы нажмите
Изменить ВМ. - Раскройте меню Метаданные и удалите ключи, нажав
.
Если у вас еще нет интерфейса командной строки Yandex Cloud, установите и инициализируйте его.
По умолчанию используется каталог, указанный в профиле CLI. Вы можете указать другой каталог с помощью параметра --folder-name
или --folder-id
.
-
Посмотрите описание команды CLI для удаления метаданных:
yc compute instance remove-metadata --help
-
Удалите ключи:
yc compute instance remove-metadata <идентификатор_ВМ> --keys <имя_SSH-ключа>
Чтобы удалить SSH-ключи из метаданных ВМ, воспользуйтесь методом REST API updateMetadata для ресурса Instance или вызовом gRPC API InstanceService/UpdateMetadata.
В запросе передайте параметр delete
с SSH-ключом.
Пример запроса для REST API
curl \
--request POST \
--header "Authorization: Bearer <IAM-токен>" \
--data '{"delete":["<имя_SSH-ключа>"]}' \
https://compute.api.cloud.yandex.net/compute/v1/instances/<идентификатор_ВМ>/updateMetadata