我不太熟悉将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()
答案 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'