使用python通过标签查询Aure VM

时间:2018-09-12 12:22:09

标签: python azure automation

我不太熟悉将Azure与python结合使用。我已经在线搜索过,但是找不到任何资源来使用标签查询VM或使用VM名称,RG或ID来循环启动/取消分配VM。我正在使用700多个VM。

示例代码段

try:
    vmlist = open("vmlist.txt","r")
 
    for vm in vmlist.readlines():
        values = vm.split()
        if OPTION in ['stop', 'deallocate']:   
            # Stop the VM
            print('\nDeallocating the VM')
            async_vm_deallocate = compute_client.virtual_machines.deallocate(GROUP_NAME, VM_NAME)
            async_vm_deallocate.wait()
  
        elif OPTION in ['start']:
            # Start the VM
            print('\nStart VM')
            async_vm_start = compute_client.virtual_machines.start(GROUP_NAME, VM_NAME)
            async_vm_start.wait()
 
        else:
            print('\nDoing nothing. Select either start or stop")
            exit()
            
finally:
    vmlist.close()

1 个答案:

答案 0 :(得分:0)

用他的名字测试VM的存在,就是执行“获取”并捕获任何异常,因为意思是“不存在”。如果您想防弹,可以检查该异常确实是404。

通过标签,您必须使用“ azure-mgmt-resource”客户端,并使用带有过滤器的ARM资源列表: https://docs.microsoft.com/en-us/python/api/azure-mgmt-resource/azure.mgmt.resource.resources.v2018_05_01.operations.resourcesoperations?view=azure-python#list

过滤器应该看起来像(未经测试,可能需要错字调整):tagname eq 'mytag' and resourceType eq 'Microsoft.Compute/virtualMachines'