python - 如何从 python API azure sdk 获取 Azure 规模集实例的公共 IP?
问题描述
我已经为每个实例分配了公共 IP(没有负载均衡器),我试图从 python 代码中获取它的公共 IP,但没有运气,我到目前为止尝试的是:
from azure.mgmt.compute import ComputeManagementClient
from azure.common.credentials import ServicePrincipalCredentials
from azure.mgmt.network import NetworkManagementClient
credentials = ServicePrincipalCredentials(client_id=ID, secret=SECRET_KEY, tenant=TENANT_ID)
for net in NetworkManagementClient(credentials, SUBSCRIPTION_ID):
print net
IP不在这里。我也尝试过从此返回的规模集对象:
vmss = ComputeManagementClient(credentials, SUBSCRIPTION_ID).virtual_machine_scale_set_vms.list(resource_group_name=resource_group,
virtual_machine_scale_set_name=scale_set_name)
但我没有在其中看到公共 IP 的属性。
解决方案
我自己也不确定,所以我看了看。原来在虚拟网络服务下有一个 API,它列出了规模集的所有公共 IP 地址。
此代码应该适合您,它将列出规模集中使用的所有公共 IP 地址。
from azure.mgmt.compute import ComputeManagementClient
from azure.mgmt.network import NetworkManagementClient
# Your Azure Subscription ID
subscription_id = 'xxxx-xxxx-xxxx'
compute_client = ComputeManagementClient(credentials, subscription_id)
network_client = NetworkManagementClient(credentials, subscription_id)
rg = 'testscaleset-rg'
scaleset_name = 'testscaleset'
for i, vm in enumerate(compute_client.virtual_machine_scale_set_vms.list(resource_group_name=rg, virtual_machine_scale_set_name=scaleset_name)):
nic_name = (vm.network_profile.network_interfaces[0].id).split("/")[-1]
ip_config_name = vm.network_profile_configuration \
.network_interface_configurations[0]\
.ip_configurations[0]\
.name
ip_address_name = vm.network_profile_configuration \
.network_interface_configurations[0]\
.ip_configurations[0]\
.public_ip_address_configuration\
.name
print(vm.name, (network_client.public_ip_addresses.get_virtual_machine_scale_set_public_ip_address( \
resource_group_name=rg, \
virtual_machine_scale_set_name=scaleset_name,\
virtualmachine_index=i, \
network_interface_name=nic_name, \
ip_configuration_name=ip_config_name, \
public_ip_address_name=ip_address_name)).ip_address)
应该返回
testscaleset_0 40.68.133.234
推荐阅读
- php - 如何使用php从父子表创建excel表?
- excel - 当值存在时,VLOOKUP 返回 N/A
- java - 重新绘制jframe的更好方法
- python - “文件名无效” Python Tkinter
- c++ - 无法分配具有已删除复制构造函数的引用?
- html - 如何在html中设置一个div来填充父元素并在子元素变大时显示滚动条?
- c# - 如何将非常大的文件序列化为字节数组?
- javascript - InDesign - Javascript - 复制对象、粘贴到位、使用原始选择对新对象进行分组
- excel - Google 表格公式替换 Excel 公式查找(2,1/(AA:AA<>""),AA:AA)
- mysql - 如何通过语句转换订单中的日期?(MySQL)