Как Azure важных значений атрибутов для данной виртуальной машины в формате Json? - PullRequest
0 голосов
/ 10 июля 2020

Я пытаюсь получить экземпляр, хранилище, диск c, данные резервной копии из azure через python в вывод в формате json, но я не получаю все значения, указанные в документации для описания экземпляра, но не может найти полную информацию.

Я ищу следующие элементы, которые будут выводиться в формате json для виртуальной машины ..

Связано с экземпляром: имя группы ресурсов , состояние, операционная система, размер, расположение, Publi c IP-адрес, VirtualNetwork / su bnet зона доступности, частный IP-адрес, Stati c IP, создание виртуальной машины,

Размер: Размер, ВЦП, ОЗУ, Диск: Диск ОС, Azure шифрование диска, Диски с данными

Тома: Имя, Размер, Учетная запись хранения, Шифрование

Теги тома: его ключ и значение Резервное копирование: предварительная проверка резервного копирования, состояние последнего резервного копирования, политика резервного копирования: требуется его имя

Root том: размер и шифрование

Объем подкачки: размер и шифрование

может кто-нибудь указать на примеры и исправить ct, в основном похожий на описанный экземпляр, чтобы я мог получить все эти значения в json выводе ...

1 Ответ

1 голос
/ 13 июля 2020

Вы можете использовать демонстрацию ниже и попробовать использовать отладку для получения необходимой информации:

from azure.common.credentials import ServicePrincipalCredentials
from azure.mgmt.resource import ResourceManagementClient
from azure.mgmt.compute import ComputeManagementClient
from azure.mgmt.network import NetworkManagementClient

SUBSCRIPTION_ID = 'xxx'
VM_NAME = 'xxx'

credentials = ServicePrincipalCredentials(
    client_id='xx',
    secret='xxx',
    tenant='xxx'
)

compute_client = ComputeManagementClient(
    credentials=credentials,
    subscription_id=SUBSCRIPTION_ID
)

vms = compute_client.virtual_machines.list_all()

myvm_resource_group=""

for vm in vms:
    if vm.name == VM_NAME:
        print(vm.id)

        #the vm.id is always in this format: 
        #'/subscriptions/your_subscription_id/resourceGroups/your_resource_group/providers/Microsoft.Compute/virtualMachines/your_vm_name'
        #so you can split it into list, and the resource_group_name's index is always 4 in this list.
        temp_id_list=vm.id.split('/')
        myvm_resource_group=temp_id_list[4]


#vm's resource group name
print("the vm test0's resource group is: " + myvm_resource_group)

# now you know the vm name and it's resourcegroup, you can use other methods,
# like compute_client.virtual_machines.get(resource_group_name, vm_name) to do any operations for this vm.


myvm = compute_client.virtual_machines.get(myvm_resource_group,VM_NAME, expand='instanceView')

#vm status
print("vm status: " + myvm.instance_view.statuses[1].display_status)

#vm Operating system
print("vm os name: " + myvm.instance_view.os_name)

#vm size
print("vm size: " + str(myvm.storage_profile.os_disk.disk_size_gb))

#vm location
print("vm location: " + myvm.location)

#network related properties

network_client = NetworkManagementClient(
    credentials=credentials,
    subscription_id=SUBSCRIPTION_ID
)

for interface in myvm.network_profile.network_interfaces:
    name=" ".join(interface.id.split('/')[-1:])
    sub="".join(interface.id.split('/')[4])

    ips=network_client.network_interfaces.get(sub,name).ip_configurations
    for ip in ips:
        print("vm private ip: " + ip.private_ip_address)

        #for public ip
        public_ip_name = "".join(ip.public_ip_address.id.split('/')[-1:])
        public_ip_resource_group = "".join(ip.public_ip_address.id.split('/')[4])
        public_ip = network_client.public_ip_addresses.get(public_ip_resource_group,public_ip_name)
        print("vm public ip: " + public_ip.ip_address)    

print("**completed**")

Вот результат теста и информация отладки:

введите описание изображения здесь

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...