Azure python sdk 从虚拟机获取属性

Posted

技术标签:

【中文标题】Azure python sdk 从虚拟机获取属性【英文标题】:Azure python sdk get attributes from virtual machine 【发布时间】:2019-10-20 10:48:52 【问题描述】:

我按照微软的这个例子来获取虚拟机列表:https://github.com/Azure-Samples/virtual-machines-python-manage/blob/master/example.py

我的代码:

    from azure.mgmt.compute import ComputeManagementClient
    from azure.common.credentials import ServicePrincipalCredentials

    def get_credentials():
        subscription_id = AZURE_SUBSCRIPTION_ID
        credentials = ServicePrincipalCredentials(
            client_id=AZURE_CLIENT_ID,
            secret=AZURE_CLIENT_SECRET,
            tenant=AZURE_TENANT_ID
        )
        return credentials, subscription_id


    credentials, subscription_id = get_credentials()

    compute_client = ComputeManagementClient(credentials, subscription_id)
    for vm in compute_client.virtual_machines.list_all():
        print(vm)

这工作正常并返回如下内容:

'additional_properties': , 'id': '/subscriptions/17bf586e-6072-4e5f-900d-90467e227f73/resourceGroups/***-2-IKSI/providers/Microsoft.Compute/virtualMachines/***test02', 'name ':'***test02','type':'Microsoft.Compute/virtualMachines','location':'southcentralus','tags':无,'plan':无,'hardware_profile':,'storage_profile':,'additional_capabilities ':无,'os_profile':,'network_profile':,'diagnostics_profile':,'availability_set':无,'provisioning_state':'成功','instance_view':无,'license_type':无,'vm_id':' 8c246fff-22ab-4bd7-9f00-708f3b6e60b3',“资源”:无,“身份”:无,“区域”:无

但我需要操作系统名称(如 ubuntu 或 centos 等)、总磁盘、总内存、cpu 使用情况,我在 azure sdk 文档中找到但非常复杂(文档很烂),有人做过吗相似的?他们是怎么做到的?一些带有示例或体面文档的链接

【问题讨论】:

【参考方案1】:

对于您的问题,您可以从映像参考中获取 VM 操作系统名称,它将显示它使用的映像。对于总磁盘,您只需获取磁盘名称,然后您可以使用磁盘 SDK 获取整个详细信息。对于总内存,您只需获取 VM 大小并在 VM size 中找到详细信息。而 CPU 使用率,您也无法从 VM 信息中获取。要获得它,您需要使用 Azure Monitor SDK。

您可以从 SDK 中获取有关 VM 的所有信息,所有内容都显示在 VirtualMachine class 中。想了解更多与VM相关的东西,比如磁盘,你需要使用其他SDK,比如Managed Disk。

【讨论】:

最后我能够展示我使用这个的操作系统:virtual_machine.storage_profile.image_reference 但我有一个问题:我怎样才能获得 GROUP_NAME?在示例中,我们使用 GROUP_NAME = 'azure-sample-group-virtual-machines' 是静态的或者我如何从我的帐户中获取 什么是 group_name? @AbelOlguinChavez 你对 GROUP_NAME 是什么意思? VM 所在的资源组名称? @CharlesXu 是的,此刻我从这个字符串中得到:'id':'/subscriptions/17bf586e-6072-4e5f-900d-90467e227f73/resourceGroups/***-2-IKSI/providers/Microsoft .Compute/virtualMachines/***test02' 就在“resourceGroups”和“providers”之间,在这种情况下,我的 resource_group_name 是:***-2-IKSI,有没有其他方法可以得到这个? @AbelOlguinChavez 恐怕您无法通过 python SDK 从 VM 获取组名。您可以为 VM 获得的所有内容都显示在 VirtualMachine 类中。组名是你获取VM时的参数,即使你没有设置。

以上是关于Azure python sdk 从虚拟机获取属性的主要内容,如果未能解决你的问题,请参考以下文章

Azure 环境在Azure虚拟机(经典) 的资源中,使用SDK导出VM列表的办法

如何从用于 vm 的 Azure Python SDK 获取 OS 磁盘相关的详细信息

在 java sdk 中配置虚拟机期间的 OS 磁盘类型支持

通过 java sdk 自动删除 Azure Storage 中的旧表

使用Azure门户从虚拟机分离数据磁盘

1如何使用Azure Rest API创建虚拟机