[英]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.