Новость слишком проста, чтобы делать сложную подводку — теперь у DigitalOcean есть Metadata, свой сервер метеданных. Зачем? Для чего угодно, но в первую очередь для управления дроплетами (виртуальными серверами, в терминологии DO).
Metadata — сервис, предоставляемый для дроплетов DigitalOcean, позволяющий дроплету получить данные о нем самом (так называемые метаданные). Как пример таких данных, можно назвать данные о пользователях, ID дроплета, регион датацентра, и данные об IP-адресах. В дополнение к обычному получению метаданных дроплета, Metadata позволяет пользователям передавать определенные данные дроплетам при их создании, что может использоваться CloudInit для облегчения настройки облачных серверов.
Metadata в настоящий момент доступен для новых дроплетов в следующих регионах: SGP1, SFO1, LON1, AMS2, AMS3, и NYC3. Если дроплет находится в одном из этих регионов, а метаданные недоступны, рекомендуется выключить и включить дроплет.
Полная документация по Metadata приведена на Портале для разработчиков DigitalOcean.
При создании дроплета метаданные задаются в панели управления дроплета, в разделе «Available Settings», в поле «user data»:
Если вы создаете дроплеты при помощи DigitalOcean API, метаданные можно передать как параметр user_data в POST-запросе на создание сервера:
curl -X POST "https://api.digitalocean.com/v2/droplets"
-d'{"name":"metadata.example.com","region":"nyc3","size":"512mb","private_networking":true,"image":"ubuntu-14-04-x64","user_data":
"'"$(cat ~/user-data.yaml)"'",
"ssh_keys":[ <SSH KEY IDs> ]}'
-H "Authorization: Bearer $TOKEN"
-H "Content-Type: application/json"
Получение метаданных выглядит также несложным: достаточно сделать HTTP GET-запрос специального URL-а
http://169.254.169.254/metadata/v1/
. Ответ будет содержать данные:
id
hostname
user-data
vendor-data
public-keys
region
interfaces/
dns/
Информация хранится иерархически, так что более подробные запросы, такие как http://169.254.169.254/metadata/v1/user-data
или http://169.254.169.254/metadata/v1/interfaces/public/0/ipv4/address
, позволят получить заданные в поле «user data» данные, или, соответственно, публичный IPv4 адрес дроплета.
Автор: achekalin