Como obtenho informações da instância do ec2 Linux enquanto estiver logado na linha de comando (dns públicos, AMI, etc.)

5

Eu quero alguma maneira de identificar em qual instância eu estou quando eu ssh em uma instância do Linux ec2. Gostaria de poder identificar de forma exclusiva a instância a partir da linha de comando e correlacionar isso com o link

Qualquer um dos itens a seguir seria útil:

  AMI
  Private DNS
  Public DNS
  Tags

Estou usando instâncias do Ubuntu e da Red Hat.

    
por Rob Bednark 24.07.2012 / 00:09

4 respostas

10

Eu estou supondo que você quer fazer isso a partir do shell bash, em vez de com a biblioteca boto python ou similar ...

Você deve poder consultar o serviço de metadados em 169.254.169.254.

por exemplo,

AMI_ID=$(curl http://169.254.169.254/latest/meta-data/ami-id)

Você pode obter uma listagem de quais metadados estão disponíveis:

curl http://169.254.169.254/latest/meta-data/

Isso está documentado no link

Nota: Estou mais familiarizado com o serviço de metadados do openstack, mas isso foi modelado no serviço Amazon EC2. A quantidade e os tipos de dados disponíveis são diferentes, mas o acesso é o mesmo.

    
por 24.07.2012 / 00:36
1

Pessoalmente, eu apenas corro facter. (Parte do fantoche)

ec2_ami_id => ami-ffffff
ec2_ami_launch_index => 0
ec2_ami_manifest_path => (unknown)
ec2_block_device_mapping_ebs1 => /dev/sda
ec2_block_device_mapping_ebs3 => /dev/sdf
ec2_block_device_mapping_ephemeral0 => /dev/sdb
ec2_block_device_mapping_ephemeral1 => /dev/sdc
ec2_block_device_mapping_ephemeral2 => /dev/sdd
ec2_block_device_mapping_ephemeral3 => /dev/sde
ec2_block_device_mapping_root => /dev/sda1
ec2_hostname => ip-xxx.xxx.xxx.xxx.ap-southeast-1.compute.internal
ec2_instance_id => i-e999fff4
ec2_instance_type => m1.medium
ec2_kernel_id => aki-a9999af4
ec2_local_hostname => ip-xxx.xxx.xxx.xxx.ap-southeast-1.compute.internal
ec2_local_ipv4 => xxx.xxx.xxx.xxx
ec2_placement_availability_zone => ap-southeast-1b
ec2_profile => default-paravirtual
ec2_public_hostname => ec2-xxx.xxx.xxx.xxx.ap-southeast-1.compute.amazonaws.com
ec2_public_ipv4 => xxx.xxx.xxx.xxx
    
por 24.07.2012 / 02:07
0

Talvez algo assim?

Acesso simples por linha de comando ao Amazon EC2 e ao Amazon S3 link

    
por 24.07.2012 / 00:36
0

Você pode usar dois métodos para obter as informações de uma instância do EC2:

  1. Acessar metadados de instâncias e dados de usuários da API do EC2

    Na CLI da sua instância, use o seguinte URI para recuperar todos os metadados da instância.

    link

    Você verá uma lista de categorias disponíveis. Se você precisar do ID de AMI, faça uma solicitação de onda:

    curl http://169.254.169.254/latest/meta-data/ami-id

  2. Use a Ferramenta de consulta de metadados da instância

    Este é basicamente um wrapper para o primeiro método, consulte o link .

    Alguns tipos de instâncias vêm com essa ferramenta pré-instalada; em outros, você precisa baixar e instalar a ferramenta.

    Quando a ferramenta estiver presente, execute:

    ec2metadata

    Você deve ver uma lista de todas as propriedades da instância, isso é bastante útil para usar essa informação programaticamente.

Se você quiser identificar a instância quando estiver conectado ao shell via SSH, poderá adicionar o ID da instância ao prompt da CLI usando o recurso User Data do EC2 ao iniciar a instância.

Basta adicionar o seguinte script ao campo de dados do usuário ao iniciar a instância:

#cloud-config
apt_upgrade: false
preserve_hostname: true
runcmd:
  - hostname "'ec2metadata --instance-id'"
  - echo "127.0.0.1 'ec2metadata --instance-id'" >> /etc/hosts
  - echo "'ec2metadata --instance-id'" > /etc/hostname

Este script será executado na hora de início e alterará o nome do host da instância com o ID da instância.

Você pode usar um dos dois métodos descritos acima e qualquer um dos atributos de metadados para identificar a instância.

    
por 16.05.2017 / 18:45