
Atualmente estou verificando executando dmidecode -s bios-version e comparando com os principais fornecedores de nuvem. Ex:
# From an amazon ec2 VM $ sudo dmidecode -s bios-version 4.2.amazon
Existe uma abordagem genérica e mais confiável para descobrir isso?
Responder1
Não existe um mecanismo padrão pelo qual os fornecedores de nuvem injetem identificação nas máquinas virtuais em execução. Se o seu objetivo é detectar se você está ou não executando em um ambiente virtual, você pode usar ovirt-o quecomando, mas não há uma boa maneira de diferenciar um fornecedor de nuvem de outro.
Responder2
Aqui está um trecho de código com o qual você pode detectar os fornecedores bare metal populares como AWS, Azure, Google Cloud e Oracle. Isso retornará None se não conseguir detectar a nuvem. https://github.com/nithinj/cloud_what
Responder3
Mesmo que o não-root
lsmod
no Azure mostre muitas referências hyperv/hv_, presumo que o aws mostrará algo que pode ser interpretado como kvm ou xen
(postando como resposta porque não tenho representante suficiente)