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名称?
谢谢。
下面是一些要使用的代码(我使用的是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的列表。
希望能有所帮助。