问题描述
我有一个虚拟机规模集,并且连接了两个VM,我想使用Python SDK来获取其公共IP地址。
我正在使用此脚本来获取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地址?
解决方法
如果要使用Azure规模设置虚拟机的公用IP地址,请参考以下脚本
-
创建服务主体并将
for row in range(2,sheet.max_row + 1): cell = sheet.cell(row,3) new_price = cell.value new_price = float(new_price.replace("$","")) * 0.9 new_price_cell = sheet.cell(row,4) new_price_cell.value = new_price
角色分配给服务主体Contributor
-
代码
az login az ad sp create-for-rbac -n "MyApp" --role contributor \ --scopes /subscriptions/{SubID} --sdk-auth true