Получить информацию о виртуальной машине
Примечание
В регионе Казахстан доступна только зона доступности kz1-a
.
Вы можете получить основную информацию о каждой созданной вами виртуальной машине на странице ВМ в консоли управления
Также основную информацию и метаданные можно получить изнутри ВМ.
Получить информацию снаружи ВМ
Этот способ предоставляет доступ ко всем каталогам метаданных и некоторым ключам в них:
- каталог computeMetadata — для чтения доступны только ключи в
/instance/attributes/*
. - каталог user-data доступен для чтения полностью.
В сервисе 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
.
Получить информацию изнутри ВМ
Изнутри ВМ можно получить прямой доступ к метаданным ВМ. Этот способ предоставляет доступ ко всем каталогам метаданных и всем ключам в них.
Получить прямой доступ (без аутентификации) к метаданным изнутри ВМ можно через специальный сервис метаданных. Сервис метаданных внутри ВМ доступен по URL http://169.254.169.254
.
Все аутентифицированные пользователи ВМ могут получить доступ к сервису метаданных без ограничений. Ограничить доступ отдельного пользователя ВМ к метаданным нельзя.
Проверить работу сервиса метаданных можно с помощью утилиты cURL
curl \
--header Metadata-Flavor:Google \
169.254.169.254
В ответ сервис метаданных выдаст список доступных версий метаданных, например:
1.0
2007-01-19
2007-03-01
...
2023-02-15
2023-05-10
latest
Рекомендуется всегда использовать последнюю (latest
) версию метаданных.
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"
.
В ответ сервис вернет актуальные значения ключей метаданных каталога computeMetadata
.
Примеры запросов
Получение FQDN
Чтобы получить полное имя ВМ (FQDN) из каталога computeMetadata, подключитесь к ВМ и выполните запрос:
curl \
--header Metadata-Flavor:Google \
169.254.169.254/computeMetadata/v1/instance/hostname
Получение метаданных ВМ в удобном для чтения формате
Чтобы получить метаданные в удобном для чтения формате, подключитесь к ВМ и выполните запрос, воспользовавшись утилитой jq
curl \
--header Metadata-Flavor:Google \
169.254.169.254/computeMetadata/v1/instance/?recursive=true | \
jq -r '.'
Получение идентификационного документа
Чтобы получить идентификационный документ из каталога computeMetadata, подключитесь к ВМ и выполните запрос:
curl \
--header Metadata-Flavor:Google \
169.254.169.254/computeMetadata/v1/instance/vendor/identity/document
Получение данных из каталога user-data
Чтобы получить метаданные из каталога user-data, подключитесь к ВМ и выполните запрос:
curl \
--header Metadata-Flavor:Google \
169.254.169.254/latest/user-data
В ответ сервис метаданных вернет результат в формате YAML:
#cloud-config
datasource:
Ec2:
strict_id: false
ssh_pwauth: no
users:
- name: admin
sudo: ALL=(ALL) NOPASSWD:ALL
shell: /bin/bash
ssh_authorized_keys:
- ssh-ed25519 AAAAC3Nza******l0pTWGO
Чтобы получить в выводе только значение определенного ключа (например, имени пользователя), воспользуйтесь инструментом yq
curl \
--silent \
--fail \
--header Metadata-Flavor:Google \
169.254.169.254/latest/user-data | \
yq .users[].name
Получение IAM-токена сервисного аккаунта
При выполнении запросов к API Yandex Cloud необходим IAM-токен, выданный сервисному аккаунту. Такой IAM-токен может быть получен через сервис метаданных изнутри ВМ. Для этого к виртуальной машине должен быть привязан сервисный аккаунт.
Чтобы получить IAM-токен из каталога computeMetadata, подключитесь к ВМ и выполните запрос:
curl \
--silent \
--fail \
--header Metadata-Flavor:Google \
169.254.169.254/computeMetadata/v1/instance/service-accounts/default/token | \
jq -r .access_token
Получение данных из каталога user-data снаружи ВМ
Чтобы получить метаданные снаружи ВМ, воспользуйтесь инструментом Yandex Cloud CLI:
yc compute instance get my-vm --full --jq .metadata
В ответ сервис метаданных вернет результат в формате JSON:
{
"install-unified-agent": "0",
"serial-port-enable": "0",
"ssh-keys": "admin:ssh-ed25519 AAAAC3N******l0pTWGO admin@my.domain\n",
"user-data": "#cloud-config\ndatasource:\n Ec2:\n strict_id: false\nssh_pwauth: no\nusers:\n- name: admin\n sudo: ALL=(ALL) NOPASSWD:ALL\n shell: /bin/bash\n ssh_authorized_keys:\n - ssh-ed25519 AAAAC3N******l0pTWGO"
}
Информацию о способах получить переданные через метаданные значения переменных и секретов Yandex Lockbox см. в инструкциях Создать виртуальную машину с метаданными из переменных окружения и Создать ВМ с доступом к секрету Yandex Lockbox.