azure管理库虚拟机状态

本文关键字:状态 虚拟机 管理 azure | 更新日期: 2023-09-27 18:26:12

已经使用Azure管理库几周了,但在获取同一云服务中多个虚拟机的状态时遇到问题。我可以获取虚拟机的列表,但找不到显示单个vm状态的属性。到目前为止,我所能找到的只是父云服务的状态。

var deployment=GetAzureDeyployment("mvwVM",DeploymentSlot.Production);
            if (deployment.Roles.Count>0)
            {
                foreach (var role in deployment.Roles)
                    if (role.RoleType == VirtualMachineRoleType.PersistentVMRole.ToString())
                    {
                        Console.WriteLine(role.RoleName);
                        Console.WriteLine(role.AvailabilitySetName);
                    }

如何获得一个单独的vm状态和vm名称?

谢谢。

azure管理库虚拟机状态

下面是一些要使用的代码(我使用的是2.0的管理库):

var deployment=GetAzureDeyployment("mvwVM",DeploymentSlot.Production);
foreach (var instance in deployment.RoleInstances)
{
   Console.WriteLine("Name: {0}, State: {1}", instance.InstanceName, instance.InstanceStatus);
}

这里的区别在于,它直接进入RoleInstances,状态在实例上。这有点令人困惑,因为云服务容器中可以有云服务(如web或工作角色),也可以有一个或多个虚拟机。通常云服务(web/工作角色)有"角色",然后在一个角色中有一个或者多个实例。由于云服务部署可以容纳任何一种,因此对象模型会有点混乱,因为它需要支持这两种类型的部署。

您正在使用的代码仅达到角色级别。在虚拟机的部署中,每个VM都是对象模型中的一个角色,而在web/worker角色部署中则不一定如此。这也是为什么RoleName是您要查找的虚拟机的名称。

我提供的代码假设我只查看此部署中的虚拟机(因为您不能在同一部署中混合和匹配web/worker角色和VM),并直接转到RoleInstances属性。这是部署中每个单独VM的列表。

希望能有所帮助。