【问题标题】:List of ClassicCompute VMs using Azure Resource Manager library使用 Azure 资源管理器库的 ClassicCompute VM 列表
【发布时间】:2015-06-27 04:25:44
【问题描述】:

是否可以获取ClassicCompute 虚拟机列表并使用 Azure 资源管理器库对其进行管理?

使用 Azure 预览门户创建的 VM 和存储帐户也是经典版本。

是否不支持使用 azure 预览门户创建 V2 虚拟机或者我缺少任何设置?

【问题讨论】:

    标签: c# azure azure-virtual-machine azure-resource-manager azure-api-management


    【解决方案1】:

    Azure 预览门户最近似乎已更新,允许您选择是想要“经典”虚拟机还是使用新 ARM 模板的虚拟机。

    要做到这一点:

    转到“新建”,选择您的模板,例如“Windows Server 2012 R2 Datacenter”,然后在“创建”命令按钮上方的下拉框中,有一个标题为“选择计算堆栈”的部分。这将让您选择“使用服务管理堆栈(经典)” - (即 V1 经典计算)或“使用资源管理器堆栈” - (即 V2 经典计算)。

    希望有帮助!

    【讨论】:

      【解决方案2】:

      Azure 预览门户支持 V1 和 V2 虚拟机。您可以使用 Browse All -> Virtual Machines 创建 V2 VM,并使用 Browse All -> Virtual Machines (classic) 创建 V1 VM

      【讨论】:

      • 谢谢。我正在寻找一种通过 .Net 库实现这一目标的方法
      【解决方案3】:

      您可以使用以下代码获取 V1 和 V2 虚拟机列表。 ListRecursiveAsync() 只是我为了处理多页结果的可能性而拼凑的一个扩展方法。

      对于了解 ARM API 的一般功能,Azure Resource Explorer) 也是一个很好的工具。

          using (var client = new ResourceManagementClient(creds))
          {
              var v1ComputeParams = new ResourceListParameters { ResourceType = "Microsoft.ClassicCompute/virtualMachines" };
              var v2ComputeParams = new ResourceListParameters { ResourceType = "Microsoft.Compute/virtualMachines" };
      
              var v1ComputeResult = await client.ListRecursiveAsync(v1ComputeParams, null);
              var v2ComputeResult = await client.ListRecursiveAsync(v2ComputeParams, null);
          }
      
      /// <summary>
      /// Gets the list of resources, recursing until ResourceListResult.NextLink is empty. 
      /// </summary>
      /// <param name="client"></param>
      /// <param name="parameters">Optional. Query parameters. If null is passed returns all resources from all resource groups.</param>
      /// <param name="nextLink"></param>
      /// <returns></returns>
      public static async Task<IList<GenericResourceExtended>> ListRecursiveAsync(this ResourceManagementClient client, ResourceListParameters listParams, string nextLink)
      {
          var rValue = new List<GenericResourceExtended>();
      
          ResourceListResult computeList = null;
      
          if (!string.IsNullOrWhiteSpace(nextLink))
          {
              computeList = await client.Resources.ListNextAsync(nextLink);
          }
          else
          {
              computeList = await client.Resources.ListAsync(listParams);
          }
      
          rValue.AddRange(computeList.Resources);
      
          if (!string.IsNullOrWhiteSpace(computeList.NextLink))
          {
              var nextResult = await ListRecursiveAsync(client, null, computeList.NextLink);
              rValue.AddRange(nextResult);
          }
      
          return rValue;
      }
      

      【讨论】:

      • 谢谢。这在一定程度上有所帮助。但我正在寻找一种管理经典 VM 的方法,例如部署、编辑、开机等。看起来我仍然必须使用经典计算库。
      • @pravn757 这是正确的,afaik。自从我发布此内容后,Azure 资源浏览器似乎已更新 - 其中包含许多新功能。
      • 看起来 v2+ SDK 正在慢慢地支持更多的 v1 服务管理模式;去年最新 ARM SDK 位的重大变化似乎包含了统一 v1 和 v2 配置/管理所需的更改
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-12-23
      • 2017-04-05
      • 2023-04-10
      • 1970-01-01
      • 2016-04-10
      • 2015-10-05
      相关资源
      最近更新 更多