检测 VM 中的云类型
Posted
技术标签:
【中文标题】检测 VM 中的云类型【英文标题】:Detect Cloud Type in VM 【发布时间】:2022-01-22 01:19:49 【问题描述】:在一个解决方案中,我们计划将多个云(AWS、Azure 和 GCP)作为解决方案。相同的代码将部署在不同云中运行的多个虚拟机中。
在很多情况下,我们需要检测云并相应地编写代码。例如在 AWS 上运行时使用 AWS S3 SDK,在 Azure 上运行时使用 Azure Blob SDK。
在 AWS 中,我们可以点击元数据 URL 来检测 (http://169.254.169.254/latest/meta-data/
) 是否是 AWS。
我想知道是否有任何方法可以检测 VM 内的云提供商(例如通过环境变量或元数据 URL 或任何其他方式)。
首选代码可以在 python
或 shell 脚本中。
【问题讨论】:
使用“azure vm 元数据”的简单搜索将我引向这个:docs.microsoft.com/en-us/azure/virtual-machines/linux/… 对于谷歌:***.com/questions/30911775/… 哪种语言?哪个云?我写了一个库来做到这一点。 @erik-oppedijk 的答案很接近,但有几个因素需要考虑。有三种方法: 1) cloud-init 文件。 2) 系统设备文件。 3) 元数据。元数据可以被禁用,如果其他两个失败或不可用,应该是最后检查的项目。对于大多数云供应商而言,此文件包含您想要的信息。寻找 cloud-name:/run/cloud-init/instance-data.json @JohnHanley shell 脚本,python 和 java。 使用这些详细信息编辑您的问题。但是,请将您的问题限制在一种语言和一组云上。我编写的代码是在 .NET 中,并且太大而无法作为答案发布。这个过程很容易理解,实现需要相当多的代码。对于 shell 脚本来说可能太复杂了,但是 shell 脚本可以调用程序或 Python 脚本。 【参考方案1】:结合 CSharpRocks 和 Dany L 的答案:
天蓝色:
http://169.254.169.254/metadata/instance?api-version=2021-02-01
谷歌
http://metadata.google.internal/computeMetadata/v1
带标题:Metadata-Flavor: Google
网址解析为:http://169.254.169.254/
亚马逊
http://169.254.169.254/latest/meta-data/
文档:
不要为这些请求使用代理服务器 https://docs.microsoft.com/en-us/azure/virtual-machines/linux/instance-metadata-service?tabs=windows https://cloud.google.com/compute/docs/metadata/overview https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-instance-metadata.html【讨论】:
以上是关于检测 VM 中的云类型的主要内容,如果未能解决你的问题,请参考以下文章