Как получить VNET (VirtualNetwork) информацию, подключенную к виртуальной машине Specifi c в Azure, используя Azure -SDK для Python - PullRequest
0 голосов
/ 13 марта 2020

Я хочу получить информацию о виртуальной машине из Azure Используя Azure -SDK для Python. Я могу получить информацию о виртуальной машине, указав имя группы ресурсов и виртуальной машины в computeClient

compute_client = ComputeManagementClient(
    credentials,
    SUBSCRIPTION_ID
)

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

Но приведенный выше код не дает мне Vnet информации

Может ли кто-нибудь помочь мне в этом

1 Ответ

0 голосов
/ 16 марта 2020

Для ваших требований все, что вы можете получить из ComputeManagementClient SDK, - это сетевые интерфейсы для виртуальной машины (например, Vnet, su bnet). Это конфигурация сетевых интерфейсов.

Итак, вам нужно получить информацию о сетевом интерфейсе, а затем он покажет вам конфигурацию Ni c, он содержит су bnet который Ni c in.

Я предполагаю, что вы знаете только информацию о ВМ, тогда вы можете получить информацию Vnet следующим образом:

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


subscription_Id = "xxxxxxxxx"
tenant_Id = "xxxxxxxxx"
client_Id = "xxxxxxxxx"
secret = "xxxxxxxxx"

credential = ServicePrincipalCredentials(
        client_id=client_Id,
        secret=secret,
        tenant=tenant_Id
        )

compute_client = ComputeManagementClient(credential, subscription_Id)
group_name = 'xxxxxxxxx'
vm_name = 'xxxxxxxxx'
vm = compute_client.virtual_machines.get(group_name, vm_name)
nic_name = vm.network_profile.network_interfaces[0].id.split('/')[-1]
nic_group = vm.network_profile.network_interfaces[0].id.split('/')[-5]

network_client = NetworkManagementClient(credential, subscription_Id)
nic = network_client.network_interfaces.get(nic_group, nic_name)
vnet_name = nic.ip_configurations[0].subnet.id.split('/')[-3]
vnet_group = nic.ip_configurations[0].subnet.id.split('/')[-7]

vnet = network_client.virtual_networks.get(vnet_group, vnet_name)

Весь код выше Я предполагаю, что у виртуальной машины есть только один Ni c, а у Ni c только одна конфигурация. Если виртуальная машина имеет несколько Nics, и каждый Ni c имеет несколько конфигов. Вы можете получить их один за другим внутри каждого l oop. Наконец, вы получили информацию о Vnet, который вы хотите.

...