在 Ansible 中获取 Azure 规模集 VM 的专用 IP

Posted

技术标签:

【中文标题】在 Ansible 中获取 Azure 规模集 VM 的专用 IP【英文标题】:Get private IP for Azure scale set VMs in Ansible 【发布时间】:2019-10-26 17:41:42 【问题描述】:

如何在 Ansible 的 Azure 规模集中获取 VM 的私有 IP?

这些似乎都没有信息:

azure_rm_virtualmachinescaleset_facts
azure_rm_virtualmachinescalesetinstance_facts
azure_rm_virtualmachine_facts
azure_rm_subnet_facts
azure_rm_networkinterface_facts

【问题讨论】:

虚拟网络事实怎么样?它应该包含分配给连接到 vnet 的所有 IP 地址 嗯。不,但它确实提供了 [azure_virtualnetworks][subnets][0][properties][ipConfigurations] 这是一个包含实际 VMSS 实例的 NIC 接口的列表,例如“id”:“/subscriptions/60bb3a0e-150e-43f6-84cf-6c02e8506269/resourceGroups/testans_rg/providers/Microsoft.Compute/virtualMachineScaleSets/testans-worker/virtualMachines/2/networkInterfaces/testans-worker/ipConfigurations/default” 所以也许我可以以某种方式使用它吗?? 如果你迭代这些,你可能可以。也有点奇怪的实例事实不提供该信息 不,这是一条死胡同。子网和 NIC 事实都不包含这些 ID。看起来 scaleset VM 真的很特别,至少对 ansible 来说是这样。 是的,嗯,它们确实很特别,但是您应该能够获取它们的 ip。你可以使用 python sdk,例如 【参考方案1】:

为了获得我的 ScaleSet 实例的 IP,我通过带有自动注册功能的 Azure 的 PrivateDNS 绕道而行。一旦机器可用,它们就会在 DNS 中更新。

代码片段:

- name: Fetch IPs from ScaleSet instances
  hosts: localhost
  connection: local
  vars:
    resource_group: "test-lbs1"
    vmss_name: "vmss"
    zone_name: "my.private.dns.zone"
  tasks:
  #############################################
  # Fetch all Instances from Scaleset
  #############################################
  - name: List all of the instances
    azure.azcollection.azure_rm_virtualmachinescalesetinstance_info:
      resource_group: " resource_group "
      vmss_name: " vmss_name "
    register: __instances


  #############################################
  # Fetch IP from PrivateDNS Record
  #############################################
  - name: Get network interfaces
    azure.azcollection.azure_rm_privatednsrecordset_info:
      resource_group: " resource_group "
      zone_name: " zone_name "
      relative_name: " item.computer_name "
      record_type: A
    with_items: " __instances.instances "
    register: __network_ips

  - debug:
      var: __network_ips

【讨论】:

以上是关于在 Ansible 中获取 Azure 规模集 VM 的专用 IP的主要内容,如果未能解决你的问题,请参考以下文章

如何使用FTP连接到Azure规模集实例

Azure VM 规模集自动缩减通知

33.Azure创建自动伸缩虚拟机规模集(上)

从 Azure 表存储中获取 1000 多个数据集

将文件复制到 Azure 文件共享(Azure 存储)

Ansible - 标记 Azure 运行的虚拟机