
Actualmente estoy comprobando ejecutando dmidecode -s bios-version y comparando con los principales proveedores de nube. Ex:
# From an amazon ec2 VM $ sudo dmidecode -s bios-version 4.2.amazon
¿Existe un enfoque genérico y más confiable para encontrar esto?
Respuesta1
No existe un mecanismo estándar mediante el cual los proveedores de la nube inyecten identificación en las máquinas virtuales en ejecución. Si su objetivo es detectar si se está ejecutando o no en un entorno virtual, puede utilizar elvirt-quécomando, pero no existe una buena manera de diferenciar un proveedor de nube de otro.
Respuesta2
Aquí hay un fragmento de código con el que puede detectar proveedores populares como AWS, Azure, Google Cloud y Oracle. Esto devolverá Ninguno si no puede detectar la nube. https://github.com/nithinj/cloud_what
Respuesta3
Incluso si no es root
lsmod
en Azure muestra muchas referencias de Hyperv/hv_, supongo que aws mostrará algo que puede interpretarse como kvm o xen.
(publicando como respuesta porque no tengo suficiente representante)