使用资源管理器部署和rest api获取Azure VM

时间:2016-11-21 15:30:25

标签: c# rest azure

我已使用资源管理器部署模型部署了vm。

Using rest api as described here我能够获得有关VM的信息 我正在寻找电源状态,IP地址和机器大小。然而,要获得所有这些信息,我需要3个不同的电话 https://management.azure.com/subscriptions/ {SubscriptionId} / resourceGroups / {资源组} /providers/Microsoft.Compute/virtualmachines/ {服务器名}

https://management.azure.com/subscriptions/ {SubscriptionId} / resourceGroups / {资源组} /providers/Microsoft.Compute/virtualmachines/ {服务器名} / InstanceView

https://management.azure.com/subscriptions/ {SubscriptionId} / resourceGroups / {资源组} /providers/Microsoft.Network/networkInterfaces/ {服务器名} _NIC

有没有办法在1次通话中获取所有这些信息?

1 个答案:

答案 0 :(得分:1)

由于VM使用资源管理器部署,然后在不同的提供程序(计算和网络)下显示状态,IP地址和大小信息。它可能无法在当前的呼叫中获取VM信息和网络信息。

使用Microsoft Azure Management Client Library (Fluent),我们可以获取VM信息(电源状态,机器大小,IP地址)。实际上,它将REST API称为两次。关于Azure身份验证,请参阅how to create an authentication file

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;

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

class MissionControl {

    var nameField=""
    var surnameField=""
    var phoneField=""
    var tcIdField=""
    var photoField=""


    class var sharedInstance: MissionControl {
        struct Singleton { static let instance = MissionControl() }
        return Singleton.instance
    }



    override init() {
        super.init()
    }

}