Не удалось получить общедоступный IP-адрес масштабируемого набора виртуальных машин с помощью Python SDK в Azure.

У меня есть масштабируемый набор виртуальных машин, к которому подключены две виртуальные машины, и я хочу получить их общедоступный IP-адрес с помощью Python SDK.

Я использую этот скрипт для получения конфигураций IP.

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(
            rg, vmscalesetname)

        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']
            print ipconf

Это мой вывод:

{'id': u'/subscriptions/sub_id/resourceGroups/test/providers/Microsoft.Compute/virtualMachineScaleSets/EchoServer/virtualMachines/2/networkInterfaces/test-vnet-nic01/ipConfigurations/test-vnet-nic01-defaultIpConfiguration', 'properties': {'subnet': {'id': u'/subscriptions/sub_id/resourceGroups/test/providers/Microsoft.Network/virtualNetworks/test-vnet/subnets/default'}, 'privateIPAddressVersion': u'IPv4', 'publicIPAddress': {'id': u'/subscriptions/sub_id/resourceGroups/test/providers/Microsoft.Compute/virtualMachineScaleSets/EchoServer/virtualMachines/2/networkInterfaces/test-vnet-nic01/ipConfigurations/test-vnet-nic01-defaultIpConfiguration/publicIPAddresses/publicIp-test-vnet-nic01'}, 'privateIPAllocationMethod': u'Dynamic', 'primary': True, 'privateIPAddress': u'10.0.0.9'}, 'name': u'test-vnet-nic01-defaultIpConfiguration'}]

Я вижу privateIPAddress, но не publicIPAddress. Как получить общедоступный IP-адрес?


person Akshay Jindal    schedule 17.10.2020    source источник
comment
Есть ли у вас какие-либо обновления?   -  person Jim Xu    schedule 21.10.2020


Ответы (1)


Если вы хотите использовать общедоступный IP-адрес виртуальных машин масштабируемого набора Azure, обратитесь к следующему сценарию.

  1. Создайте субъект-службу и назначьте Contributor роль субъекту-службе.

    az login
    az ad sp create-for-rbac -n "MyApp" --role contributor \
        --scopes /subscriptions/{SubID} --sdk-auth true
    
  2. Код

    from azure.mgmt.network import NetworkManagementClient
    from azure.identity import ClientSecretCredential
    
    client_id = "<sp appId>"
    secret = "<sp password>"
    tenant = "<sp tenant>"
    Subscription_ID = "<>"
    creds = ClientSecretCredential(
        client_id=client_id, client_secret=secret, tenant_id=tenant)
    
    network_client = NetworkManagementClient(creds, Subscription_ID)
    resource_group_name = "testVm_group"
    virtual_machine_scale_set_name = "testVm"
    results = network_client.public_ip_addresses.list_virtual_machine_scale_set_public_ip_addresses(
        resource_group_name, virtual_machine_scale_set_name)
    
    for result in results:
        print(result.id)
        print(result.ip_address)
    
    

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

person Jim Xu    schedule 19.10.2020
comment
Если это полезно для вас, не могли бы вы принять это как ответ? Это может помочь большему количеству людей, у которых есть похожая проблема. - person Jim Xu; 19.10.2020