Получить информацию о виртуальной машине
Вы можете получить основную информацию о каждой созданной вами виртуальной машине на странице ВМ в консоли управления
Также основную информацию и метаданные можно получить изнутри ВМ.
Получить информацию снаружи ВМ
Этот способ предоставляет доступ ко всем каталогам метаданных и некоторым ключам в них:
- каталог computeMetadata — для чтения доступны только ключи в
/instance/attributes/*
. - каталог user-data доступен для чтения полностью.
В сервисе Compute Cloud, на странице Виртуальные машины, приводится список ВМ в каталоге с краткой информацией о них.
Для получения подробной информации о ВМ нажмите на строку с ее именем.
На вкладке:
- Обзор приводится общая информация о ВМ, в том числе IP-адреса, присвоенные ВМ.
- Диски приводится информация о дисках, подключенных к ВМ.
- Файловые хранилища приводится информация о подключенных файловых хранилищах.
- Операции приводится список операций с ВМ и подключенными к ней ресурсами, например дисками.
- Мониторинг приводится информация о потреблении ресурсов на ВМ. Эту информацию можно получить только в консоли управления или изнутри ВМ.
- Серийная консоль предоставлен доступ к серийной консоли, если при создании ВМ вы разрешили к ней доступ.
- Последовательный порт приводится информация, которую ВМ выводит в последовательный порт. Чтобы получить эту информацию через API или CLI, воспользуйтесь инструкцией Получить вывод последовательного порта.
По умолчанию используется каталог, указанный при создании профиля CLI. Чтобы изменить каталог по умолчанию, используйте команду yc config set folder-id <идентификатор_каталога>
. Также для любой команды вы можете указать другой каталог с помощью параметров --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.