检测是否在Azure IaaS VM(.NET应用程序)上运行

时间:2019-02-27 19:36:19

标签: .net azure virtual-machine iaas

我看到许多与我认为应该是相对简单的任务有关的帖子。作为我们许可标准的一部分,我们检测我们是否在虚拟环境中运行。但是,由于VM的重新分配,我们使用的某些标识符可能会更改,因此我们开始研究用Azure唯一ID(UUID)代替其中的一些标识符。但是,为了做到这一点,我们需要对许可代码进行更改,以正确检测我们是否正在蔚蓝的环境中运行。我已经看过许多有关使用Azure SDK和RoleEnvironment的帖子,但是我相信在托管IaaS VM上运行时(跨必需的DLL复制时),这是行不通的。

因此,理想情况下,我们希望在.NET应用程序中提供一种不依赖Azure SDK的方法,以便我们可以正确地标识与标准VM相对的Azure VM。这可能包括注册表项,WMI查找等。

我会注意到在Microsoft Script Detect Windows Azure Virtual Machine的technet网站上找到的现有解决方案,但是由于我们正在运行的代码被普遍适用于所有类型的环境,因此这实际上并不实用。

1 个答案:

答案 0 :(得分:0)

Azure实例元数据服务提供有关正在运行的虚拟机实例的信息,这些信息可用于管理和配置虚拟机。其中包括诸如SKU,网络配置和即将发生的维护事件之类的信息。有关可用的信息类型的更多信息,请参见元数据类别。

Azure的实例元数据服务是一个REST端点,可通过Azure资源管理器创建的所有IaaS VM访问。终结点可通过只能从VM内部访问的众所周知的不可路由IP地址169.254.169.254获得。

https://docs.microsoft.com/en-us/azure/virtual-machines/windows/instance-metadata-service