Найдите IP-адрес Infiniband виртуальной машины Azure.

Это похоже на Есть ли какой-либо API Python, который может получить IP-адрес (внутренний или внешний) виртуальной машины в Azure, но вместо этого я хотел бы получить IP-адрес infiniband виртуальной машины Azure.

Пока что я могу получить сетевой адаптер виртуальной машины в VMSS, но это позволяет мне запрашивать только частный IP-адрес eth0. Как я могу получить IP-адреса других интерфейсов?

В идеале я хотел бы сделать это на Python


from azure.mgmt.network import NetworkManagementClient
self.network_client = NetworkManagementClient(credentials, AZURE_SUBSCRIPTION_ID)

# get the private IP of a network interface
nic_name = 'redacted'
network_client.network_interfaces.get(GROUP_NAME, nic_name)
private_ip = nic.ip_configurations[0].private_ip_address


person Alex Kaszynski    schedule 16.11.2019    source источник


Ответы (1)


Если требуется получить все IP-адреса виртуальных машин/сетевых интерфейсов в экземпляре VMSS, вы можете использовать официальный Azure SDK для Python следующим образом:

# Imports
from azure.common.credentials import ServicePrincipalCredentials
from azure.mgmt.network import NetworkManagementClient

# Set subscription ID
SUBSCRIPTION_ID = 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx'


def get_credentials():
    credentials = ServicePrincipalCredentials(
        client_id='xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx',
        secret='xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx',
        tenant='xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx'
    )

    return credentials


# Get credentials
credentials = get_credentials()


# Initialize management client
network_client = NetworkManagementClient(
    credentials,
    SUBSCRIPTION_ID
)


def get_vmss_vm_ips():

    # List all network interfaces of the VMSS instance
    vmss_nics = network_client.network_interfaces.list_virtual_machine_scale_set_network_interfaces(
        "<VMSS Resource group name>", "<VMSS instance name>")

    niclist = [nic.serialize() for nic in vmss_nics]

    print "IP addresses in the given VM Scale Set:"

    for nic in niclist:
        ipconf = nic['properties']['ipConfigurations']

        for ip in ipconf:
            print ip['properties']['privateIPAddress']


# Get all IPs of VMs in VMSS
get_vmss_vm_ips()

Обратите внимание, что network_client.network_interfaces.get() получает информацию только об указанном сетевом интерфейсе, тогда как метод list_virtual_machine_scale_set_network_interfaces() извлекает все сетевые интерфейсы в масштабируемом наборе виртуальных машин.

Ссылки:

Надеюсь это поможет! Пожалуйста, дайте мне знать, если это не так, и мы можем продолжить изучение.

person Bhargavi Annadevara    schedule 19.11.2019