繁体   English   中英

使用资源管理器部署和Rest API获取Azure VM

[英]Get Azure VM using resource manager deployment and rest api

我已经使用资源管理器部署模型部署了一个虚拟机。

如此处所述,使用rest api可以获取有关VM的信息。
我正在寻找电源状态,IP地址和机器大小。 但是,要获取所有这些信息,我需要3个不同的调用https://management.azure.com/subscriptions/ {SubscriptionId} / resourceGroups / {ResourceGroup} /providers/Microsoft.Compute/virtualmachines/ {ServerName}

https://management.azure.com/subscriptions/ {SubscriptionId} / resourceGroups / {ResourceGroup} /providers/Microsoft.Compute/virtualmachines/ {ServerName} / InstanceView

https://management.azure.com/subscriptions/ {SubscriptionId} / resourceGroups / {ResourceGroup} /providers/Microsoft.Network/networkInterfaces/ {ServerName} _NIC

有一种方法可以在一次通话中获取所有这些信息?

由于VM是使用资源管理器部署的,因此会在不同的提供程序(计算和网络)下说明IP地址和大小信息。 当前可能没有办法在呼叫中获取VM信息和网络信息。

使用Microsoft Azure管理客户端库(Fluent) ,我们可以获得VM信息(电源状态,计算机大小,IP地址)。 实际上,它两次调用了REST API。 关于Azure身份验证,请参考如何创建身份验证文件

AzureCredentials credentials = AzureCredentials.FromFile("Full path of your AzureAuthFile");
                var azure = Azure
                    .Configure()
                    .WithLogLevel(HttpLoggingDelegatingHandler.Level.BASIC)
                    .Authenticate(credentials)
                    .WithDefaultSubscription();
  foreach (var virtualMachine in azure.VirtualMachines.ListByGroup("Your Resource Group Name").Where(virtualMachine => virtualMachine.ComputerName.Equals("vmName")))
                    {
                        var state = virtualMachine.PowerState;
                        var size = virtualMachine.Size;
                        var ip = virtualMachine.GetPrimaryPublicIpAddress().IpAddress; //call Rest API again
                    }

如果它部署在CloudService下,那么我们可以使用Windows Azure管理库 很容易获得有关电源状态,IP地址和计算机大小的VM(角色)信息。

var certificate = new CertificateCloudCredentials(subscriptionId, x509Certificate);
var computeManagementClient = new ComputeManagementClient(certificate);
var deployments = await computeManagementClient.Deployments.GetByNameAsync (hostedServiceName,"Your Deployment Name");
var state = deployments.RoleInstances.First().PowerState;
var ipAddress = deployments.RoleInstances.First().IPAddress;
var size = deployments.RoleInstances.First().InstanceSize;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM