Como acessar e usar metadados de gotas do DigitalOcean

Os droplets DigitalOcean possuem metadados que revelam informações sobre a instância de computação e seu ambiente. Você pode fornecer seus próprios dados arbitrários para tornar os valores personalizados acessíveis de dentro do seu droplet.
Metadados padrão
Os metadados padrão disponíveis em cada gota permitem consultar informações importantes, como a região do datacenter DigitalOcean, endereços de interface de rede e tags atribuídos no painel de controle ou via API.
Um droplet pode recuperar seus próprios metadados chamando o endereço de rede especial, 169.254.169.254. Conecte-se ao seu droplet por SSH e use o comando curl para experimentar os endpoints de API disponíveis.
Aqui está um exemplo básico que fornece uma lista de campos de metadados com suporte:
curl http://169.254.169.254/metadata/v1/

Você pode acessar qualquer um dos campos incluídos na saída deste endpoint anexando o nome do campo ao URL base da API de metadados:
curl http://169.254.169.254/metadata/v1/id
Publicidade
Este exemplo fornecerá o endereço IP do droplet em sua resposta.
Campos de metadados
Os seguintes campos de metadados são atualmente suportados:
- id – O endereço IP público do droplet &’
- hostname – O nome do host do droplet, correspondendo ao nome fornecido ao criar o droplet. Pode não refletir o nome em / etc / hostname se você alterá-lo manualmente mais tarde.
- dados do usuário – Dados arbitrários fornecidos pelo usuário (consulte a seção posterior deste guia).
- vendor-data – Dados emitidos pelo DigitalOcean usados para configurar o droplet.
- chaves públicas – Chaves públicas SSH que foram adicionadas ao droplet quando ele foi criado por meio do painel de controle ou API. Essas chaves são adicionadas à conta raiz automaticamente.
- região – O datacentre DigitalOcean em que o droplet reside, como nyc1 ou lon1.
- interfaces – Fornece detalhes das interfaces de rede do droplet. A resposta conterá campos privados e públicos, cada um uma matriz de objetos que descrevem interfaces de rede configuradas. Os detalhes incluem ipv4, para obter o endereço IP, e mac, o endereço MAC relatado do droplet nessa rede.
- floating_ip – Quando um IP flutuante DigitalOcean é atribuído ao droplet, este campo expõe seus detalhes.
- dns – Contém um subcampo nameservers que lista os nameservers usados pelo droplet ao realizar pesquisas DNS.
- tags – Fornece uma lista de todas as tags criadas pelo usuário atribuídas ao droplet.
- recursos – Um objeto que descreve os recursos do DigitalOcean que foram ativados para o droplet.
Os campos que contêm dados aninhados ou são matrizes de objetos podem ser percorridos usando terminais de API. Aqui está um exemplo que fornece o endereço IP da primeira interface de rede privada do droplet:
curl http://169.254.169.254/metadata/v1/interfaces/private/0/ipv4/address
Isso torna mais fácil extrair valores específicos para uso em seus scripts. Nem sempre você precisa analisar manualmente os corpos de resposta JSON.
Depois de obter o ID de seu droplet, seus scripts podem adiar para a API DigitalOcean regular para obter mais informações ou realizar ações de droplet. Por exemplo, você pode querer criar um instantâneo antes de executar uma sequência destrutiva de comandos. Seu script pode usar a API de metadados para descobrir o ID do droplet em que está sendo executado e, em seguida, passar o ID para a API REST de instantâneos para criar um novo instantâneo. O script ainda seria portável em diferentes droplets, pois você não está codificando o ID.
Obtendo todos os metadados disponíveis
Você pode obter todos os metadados associados a um droplet anexando . json ao ponto de extremidade da API de base:
curl http://169.254.169.254/metadata/v1. json
Isso fornecerá um objeto JSON contendo todos os campos descritos acima. Os campos com um caractere - (hífen) serão convertidos para usar _ (sublinhado) no JSON.
Dados do usuário
DigitalOcean permite fornecer dados do usuário ao criar um novo droplet. Ele pode ser fornecido por meio do formulário no painel de controle ou com o sinalizador --user-data quando você estiver usando doctl compute droplet create. Os dados do usuário são expostos pelo campo de dados do usuário na API de metadados.
Publicidade
Como outras formas de metadados, os dados do usuário são imutáveis e não podem ser modificados após a criação do droplet. Normalmente é usado para configurar as instalações de pacotes de primeira execução e alterações de configuração, mas você também pode adicionar campos de dados arbitrários que façam sentido para a sua organização.
Os dados do usuário são passados para o cloud-init. Este programa é executado na primeira inicialização de um droplet e atua como um mecanismo para automatizar a configuração inicial. Para usar o cloud-init, adicione o conteúdo de um arquivo YAML compatível com a configuração da nuvem aos dados do usuário droplet. Este exemplo atualiza todos os pacotes existentes, grava um arquivo e cria uma nova conta de usuário:
usuários: nome: grupos de exemplo: sudo shell: / bin / bash write_files: - caminho: /example. txt conteúdo: "Dados arbitrários aqui" package_update: true
Outras maneiras de acessar metadados
A API de metadados é um serviço que está disponível apenas em um droplet. Você interage com ele usando curl, clientes HTTP de terminal alternativos ou a biblioteca HTTP da sua linguagem de programação em scripts. DigitalOcean fornece uma biblioteca de cliente oficial para Go que atua como um empacotador básico em torno da API.
Você não pode consultar diretamente os metadados de um droplet de fora. Nem o Doctl CLI nem a API DigitalOcean REST principal suportam a recuperação da estrutura de dados exata exposta pelo serviço de metadados no droplet.
Se quiser acessar detalhes do droplet, como interfaces de rede, tags e configuração do sistema externamente, você precisará usar outros recursos da API e do Doctl. O comando doctl compute droplet get é um bom ponto de partida, que fornece muitas das mesmas informações que o serviço de metadados, bem como alguns detalhes extras, incluindo limites de recursos de hardware.
Resumo
O serviço DigitalOcean Metadata é uma API especial que você pode acessar de dentro de seus droplets. Ele ajuda a construir scripts que precisam fazer referência aos principais atributos de seu droplet, como seu ID, região do datacenter ou endereço IP.
Publicidade
Você pode adicionar suas próprias informações aos metadados de um droplet durante o processo de criação. A API de metadados irá expô-lo como o campo de dados do usuário. Isso significa que você pode usar metadados como um armazenamento de configuração básico para seus scripts e rotinas de bootstrap, diminuindo a necessidade de copiar arquivos ou definir variáveis de ambiente cada vez que criar um novo droplet.
Os metadados são sempre específicos para uma gota individual. A API existe para fornecer um mecanismo de introspecção de gotículas. Use a API REST normal, diretamente ou via Doctl, se quiser consultar sua conta DigitalOcean para encontrar outros droplets com atributos semelhantes.
Nenhum comentário