Die Integration von VMware Aria Automation in Avi Load Balancer unterstützt die Zuteilung virtueller IP-Adressen des virtuellen Diensts über Avi Load Balancer IPAM. Sie können die IP auch innerhalb der Vorlage oder als Eingabe angeben.

Beachten Sie beim Entwerfen Ihrer Vorlage, dass bestimmte Eigenschaften, die unter Umständen nicht als notwendig gekennzeichnet sind, je nach Anwendungsfall dennoch erforderlich sind, damit die Vorlage funktioniert. Die folgenden Vorlagenbeispiele enthalten Anleitungen zu verschiedenen IPAM-, vSphere- und NSX Cloud-Szenarien.

In bestimmten Vorlagenbeispielen mit dem Attribut tier1_lr kann der Name tier1_lr nur verwendet werden, wenn der Name des logischen Tier-1-Routers mit der ID identisch ist. Andernfalls müssen Sie den vollständigen Pfad des logischen Tier-1-Routers verwenden, wie z. B. /infra/tier-1s/20f6a214-e8b3-4bb3-aaeb-6c06639ada23.

Bevor Sie beginnen

Sie konfigurieren zuerst Avi Load Balancer IPAM im Avi Load Balancer-Controller und dann VMware Aria Automation.
  1. Konfigurieren Sie das Subnetz und IPAM-Profil im Avi Load Balancer-Controller.

    Weitere Informationen finden Sie unter NSX Advanced Load Balancer-IPAM und -DNS.

  2. Konfigurieren Sie VMware Aria Automation.
    1. Erstellen Sie Ihr Avi Load Balancer-Cloud-Konto in Automation Assembler, legen Sie ein Projekt an und fügen Sie Ihre Cloud-Zonen hinzu.

      Weitere Informationen hierzu finden Sie unter Erstellen eines VMware Avi Load Balancer-Cloud-Kontos.

    2. Konfigurieren Sie das Netzwerk für die Bereitstellung.

      Navigieren Sie zu Infrastruktur > Ressourcen > Netzwerke, suchen Sie nach dem für die Bereitstellung zu verwendenden Netzwerk und konfigurieren Sie das IPv4-/IPv6-CIDR und DNS-Server.

      Weitere Informationen hierzu finden Sie unter Netzwerkressourcen in VMware Aria Automation.

    3. Konfigurieren Sie die Image-Zuordnung.

      Navigieren Sie zu Infrastruktur > Konfigurieren > Image-Zuordnungen und folgen Sie den Eingabeaufforderungen auf dem Bildschirm, um eine neue Image-Zuordnung zu erstellen.

      Weitere Informationen hierzu finden Sie unter Weitere Informationen zu Image-Zuordnungen in VMware Aria Automation.

    4. Konfigurieren Sie das Netzwerkprofil.

      Navigieren Sie zu Infrastruktur > Konfigurieren > Netzwerkprofile und folgen Sie den Eingabeaufforderungen auf dem Bildschirm, um ein neues Netzwerkprofil zu erstellen.

      Weitere Informationen hierzu finden Sie unter Weitere Informationen zu Netzwerkprofilen in VMware Aria Automation.

Statische IP-Adresse in VS-VIP

Diese Avi Load Balancer-Beispielvorlage enthält einen virtuellen Dienst, eine VS-VIP und einen Pool. Dem Pool ist ein vSphere-VM-Cluster zugewiesen. Die VS-VIP verfügt über eine statische IP-Adresse.

formatVersion: 1
inputs:
  count:
    type: integer
    title: vm-count
    default: 2
resources:
  Idem_AVILB_APPLICATIONS_POOL_1:
    type: Idem.AVILB.APPLICATIONS.POOL
    properties:
      name: pool-${uuid()}
      account: Avi
      default_server_port: 8000
      networks:
        - network_ref: ${resource.Cloud_vSphere_Network_1.resourceName}
      health_monitor_refs:
        - System-HTTP
      servers: ${map_to_object(resource.Cloud_vSphere_Machine_1[*].address, "ip", "addr")}
  Idem_AVILB_APPLICATIONS_VIRTUAL_SERVICE_1:
    type: Idem.AVILB.APPLICATIONS.VIRTUAL_SERVICE
    properties:
      name: vs-${uuid()}
      account: Avi
      traffic_enabled: true
      services:
        - port: 8000
      pool_ref: ${resource.Idem_AVILB_APPLICATIONS_POOL_1.name}
      vsvip_ref: ${resource.Idem_AVILB_APPLICATIONS_VS_VIP_1.name}
  Idem_AVILB_APPLICATIONS_VS_VIP_1:
    type: Idem.AVILB.APPLICATIONS.VS_VIP
    properties:
      name: vip-${uuid()}
      account: Avi
      vip:
        - enabled: true
          ip_address:
            addr: 10.202.20.80
            type: V4
  Cloud_vSphere_Machine_1:
    type: Cloud.vSphere.Machine
    properties:
      count: ${input.count}
      image: webserver
      cpuCount: 1
      totalMemoryMB: 1024
      networks:
        - network: ${resource.Cloud_vSphere_Network_1.id}
          assignment: static
  Cloud_vSphere_Network_1:
    type: Cloud.vSphere.Network
    properties:
      networkType: existing

Avi Load Balancer IPAM in VS-VIP für vCenter Cloud

Diese Avi Load Balancer-Beispielvorlage ist für vCenter Cloud vorgesehen.

Die VS-VIP-Ressource definiert den Abschnitt ipam_network_subnet mit network ref und subnet. Mithilfe dieser Definition teilt Avi Load Balancer eine IP-Adresse aus dem definierten Avi Load Balancer IPAM-Profil zu, wenn die VS-VIP im Avi Load Balancer-Controller erstellt wird.

Der definierte Cluster von Poolmitgliedern verwendet eine statische Netzwerkzuweisung. In Automation Assembler konfigurieren Sie ein Netzwerk, wie z. B. Domäne, IPv4-/IPv6-CIDR, ein Standard-Gateway und DNS-Server. Anschließend richten Sie ein Netzwerkprofil mit einem Netzwerkbereich ein, der dieses Netzwerk verwendet. Beim Erstellen von Clustern werden diesen die IP-Adressen aus dem Netzwerkbereich zugeteilt.

inputs:
  count:
    type: integer
    title: count
    default: 2
resources:
  Allocations_CustomNaming_1:
    type: Allocations.CustomNaming
    properties:
      resourceType: Generic
      numberOfNamesToGenerate: 5
      templateName: aviBP
  Idem_AVILB_PROFILES_HEALTH_MONITOR_1:
    type: Idem.AVILB.PROFILES.HEALTH_MONITOR
    properties:
      name: test-mon-${resource.Allocations_CustomNaming_1.selectedNames[0]}
      type: HEALTH_MONITOR_PING
      account: aviAcct
      is_federated: false
      monitor_port: 8000
      send_interval: 8
      receive_timeout: 4
      successful_checks: 4
      failed_checks: 4
  Idem_AVILB_APPLICATIONS_POOL_1:
    type: Idem.AVILB.APPLICATIONS.POOL
    metadata:
      layoutPosition:
        - 0
        - 2
    properties:
      name: test-pool-${resource.Allocations_CustomNaming_1.selectedNames[0]}
      account: aviAcct
      lb_algorithm: LB_ALGORITHM_ROUND_ROBIN
      default_server_port: 8000
      networks:
        - network_ref: ${resource.Cloud_vSphere_Network_1.resourceName}
      health_monitor_refs:
        - ${resource.Idem_AVILB_PROFILES_HEALTH_MONITOR_1.name}
      servers: ${map_to_object(resource.Cloud_vSphere_Machine_1[*].address, "ip", "addr")}
  Idem_AVILB_APPLICATIONS_VIRTUAL_SERVICE_1:
    type: Idem.AVILB.APPLICATIONS.VIRTUAL_SERVICE
    properties:
      name: test-vs-${resource.Allocations_CustomNaming_1.selectedNames[0]}
      account: aviAcct
      cloud_type: CLOUD_NONE
      type: VS_TYPE_NORMAL
      traffic_enabled: true
      services:
        - enable_ssl: false
          port: 8000
      pool_ref: ${resource.Idem_AVILB_APPLICATIONS_POOL_1.name}
      vsvip_ref: ${resource.Idem_AVILB_APPLICATIONS_VS_VIP_1.name}
  Cloud_vSphere_Machine_1:
    type: Cloud.vSphere.Machine
    properties:
      count: ${input.count}
      image: webserver
      cpuCount: 1
      totalMemoryMB: 1024
      networks:
        - network: ${resource.Cloud_vSphere_Network_1.id}
          assignment: static
  Cloud_vSphere_Network_1:
    type: Cloud.vSphere.Network
    metadata:
      layoutPosition:
        - 2
        - 0
    properties:
      networkType: existing
  Idem_AVILB_APPLICATIONS_VS_VIP_1:
    type: Idem.AVILB.APPLICATIONS.VS_VIP
    properties:
      name: test-vip-${resource.Allocations_CustomNaming_1.selectedNames[0]}
      account: aviAcct
      vip:
        - auto_allocate_floating_ip: false
          auto_allocate_ip: true
          auto_allocate_ip_type: V4_ONLY
          avi_allocated_fip: false
          avi_allocated_vip: false
          enabled: true
          ipam_network_subnet:
            network_ref: ${resource.Cloud_vSphere_Network_1.resourceName}
            subnet:
              ip_addr:
                addr: 10.202.20.0
                type: V4
              mask: 22

Avi Load Balancer IPAM in VS-VIP für NSX Cloud

Diese Avi Load Balancer-Beispielvorlage ist für Avi Load Balancer in NSX Cloud vorgesehen.

Zur Bereitstellung von Avi Load Balancer in NSX Cloud muss ein logischer Tier-1-Router (tier1_lr) und/oder ein VRF-Kontext (vrf_context_ref) im Avi Load Balancer-Pool, im virtuellen Dienst und in VS-VIP-Ressourcen definiert werden.

Die VS-VIP-Ressource definiert den Abschnitt ipam_network_subnet mit network ref und subnet. Mithilfe dieser Definition teilt Avi Load Balancer eine IP-Adresse aus dem definierten Avi Load Balancer IPAM-Profil zu, wenn die VS-VIP im Avi Load Balancer-Controller erstellt wird.

formatVersion: 1
inputs: {}
resources:
  Allocations_CustomNaming_1:
    type: Allocations.CustomNaming
    properties:
      resourceType: Generic
      numberOfNamesToGenerate: 5
      templateName: avinsxBP
  Cloud_vSphere_Machine_1:
    type: Cloud.vSphere.Machine
    properties:
      count: 2
      image: webserver
      cpuCount: 1
      totalMemoryMB: 1024
      networks:
        - network: ${resource.Cloud_vSphere_Network_1.id}
          assignment: static
  Idem_AVILB_APPLICATIONS_VS_VIP_1:
    type: Idem.AVILB.APPLICATIONS.VS_VIP
    properties:
      name: test-vip-${resource.Allocations_CustomNaming_1.selectedNames[0]}
      account: avinsx
      tier1_lr: DONT-DELETE-AVI-Admin-E2E
      vrf_context_ref: T1-DONT-DELETE-AVI-Admin-E2E
      vip:
        - auto_allocate_floating_ip: false
          auto_allocate_ip: true
          auto_allocate_ip_type: V4_ONLY
          avi_allocated_fip: false
          avi_allocated_vip: false
          enabled: true
          ipam_network_subnet:
            network_ref: ${resource.Cloud_vSphere_Network_1.resourceName}
            subnet:
              ip_addr:
                addr: 192.168.223.0
                type: V4
              mask: 24
  Idem_AVILB_APPLICATIONS_VIRTUAL_SERVICE_1:
    type: Idem.AVILB.APPLICATIONS.VIRTUAL_SERVICE
    properties:
      name: test-vs-${resource.Allocations_CustomNaming_1.selectedNames[0]}
      account: avinsx
      cloud_type: CLOUD_NONE
      type: VS_TYPE_NORMAL
      traffic_enabled: true
      vrf_context_ref: T1-DONT-DELETE-AVI-Admin-E2E
      services:
        - enable_ssl: false
          port: 80
          port_range_end: 8000
      pool_ref: ${resource.Idem_AVILB_APPLICATIONS_POOL_1.name}
      vsvip_ref: ${resource.Idem_AVILB_APPLICATIONS_VS_VIP_1.name}
  Idem_AVILB_APPLICATIONS_POOL_1:
    type: Idem.AVILB.APPLICATIONS.POOL
    properties:
      name: test-pool-${resource.Allocations_CustomNaming_1.selectedNames[0]}
      account: avinsx
      lb_algorithm: LB_ALGORITHM_ROUND_ROBIN
      tier1_lr: DONT-DELETE-AVI-Admin-E2E
      vrf_ref: T1-DONT-DELETE-AVI-Admin-E2E
      health_monitor_refs:
        - System-Ping
      servers: ${map_to_object(resource.Cloud_vSphere_Machine_1[*].address, "ip", "addr")}
  Cloud_vSphere_Network_1:
    type: Cloud.vSphere.Network
    properties:
      networkType: existing

Infoblox IPAM in VS-VIP für NSX Cloud

Diese Avi Load Balancer-Beispielvorlage basiert auf der Avi Load Balancer-Integration mit Infoblox. Die Vorlage verwendet Infoblox IPAM, um der VS-VIP eine IP-Adresse für Avi Load Balancer in NSX Cloud zuzuteilen.

Das Attribut network_ref im Abschnitt ipam_network_subnet in der Vorlage ist auf den vollständigen Pfad des in Infoblox definierten Netzwerksegments festgelegt. Beachten Sie, dass der Wert network_ref ein vollständiger Pfad sein muss, einschließlich des Präfixes /api/network/. Hierin liegt der Unterschied zu ref-Attributen.

formatVersion: 1
inputs:
  count:
    type: integer
    title: count
    default: 2
resources:
  Idem_AVILB_APPLICATIONS_VIRTUAL_SERVICE_1:
    type: Idem.AVILB.APPLICATIONS.VIRTUAL_SERVICE
    properties:
      name: infoblox-vs-${uuid()}
      account: aviinfoblox
      vrf_context_ref: nested-T1
      services:
        - port: 8000
      vsvip_ref: ${resource.Idem_AVILB_APPLICATIONS_VS_VIP_1.name}
      pool_ref: ${resource.Idem_AVILB_APPLICATIONS_POOL_1.name}
  Idem_AVILB_APPLICATIONS_VS_VIP_1:
    type: Idem.AVILB.APPLICATIONS.VS_VIP
    properties:
      name: infoblox-vip-${uuid()}
      account: aviinfoblox
      vrf_context_ref: nested-T1
      tier1_lr: nested-T1
      vip:
        - auto_allocate_ip: true
          ipam_network_subnet:
            network_ref: /api/network/infoblox--default--192.168.225.0-24
  Idem_AVILB_APPLICATIONS_POOL_1:
    type: Idem.AVILB.APPLICATIONS.POOL
    properties:
      name: infoblox-pool-${uuid()}
      account: aviinfoblox
      tier1_lr: nested-T1
      default_server_port: 8000
      health_monitor_refs:
        - System-HTTP
      servers: ${map_to_object(resource.Cloud_vSphere_Machine_1[*].address, "ip", "addr")}
  Cloud_vSphere_Machine_1:
    type: Cloud.vSphere.Machine
    properties:
      count: ${input.count}
      image: webserver
      cpuCount: 2
      totalMemoryMB: 4096
      networks:
        - network: ${resource.Cloud_NSX_Network_1.id}
          assignment: static
  Cloud_NSX_Network_1:
    type: Cloud.NSX.Network
    properties:
      networkType: existing

Vorhandene NSX-Sicherheitsgruppe für Poolmitglieder

Diese Avi Load Balancer-Beispielvorlage verwendet eine vorhandene NSX-Sicherheitsgruppe zum Zuweisen von Poolmitgliedern.

Das Attribut nsx_securitygroup wird definiert und auf den Namen der vorhandenen NSX-Sicherheitsgruppe in der Idem.AVILB.APPLICATIONS.POOL-Ressource festgelegt.

formatVersion: 1
inputs:
  count:
    type: integer
    title: vm-count
    default: 2
resources:
  Idem_AVILB_APPLICATIONS_VS_VIP_1:
    type: Idem.AVILB.APPLICATIONS.VS_VIP
    properties:
      name: vip-sg-${uuid()}
      account: ${resource.Allocations_CloudZone_1.selectedCloudAccount.name}
      tier1_lr: DONT-DELETE-AVI-Admin-E2E
      vrf_context_ref: T1-DONT-DELETE-AVI-Admin-E2E
      vip:
        - auto_allocate_floating_ip: false
          auto_allocate_ip: true
          enabled: true
          auto_allocate_ip_type: V4_ONLY
          ipam_network_subnet:
            network_ref: SEG-DONT-DELETE-AVI-Admin-E2E-Two-Arm-VSVIP
            subnet:
              ip_addr:
                addr: 192.168.223.0
                type: V4
              mask: 24
  Allocations_CloudZone_1:
    type: Allocations.CloudZone
    properties:
      accountType: avilb
      constraints:
        - tag: avi-nsx
  Idem_AVILB_APPLICATIONS_VIRTUAL_SERVICE_1:
    type: Idem.AVILB.APPLICATIONS.VIRTUAL_SERVICE
    properties:
      name: vs-sg-${uuid()}
      account: ${resource.Allocations_CloudZone_1.selectedCloudAccount.name}
      vrf_context_ref: T1-DONT-DELETE-AVI-Admin-E2E
      traffic_enabled: true
      services:
        - port: 8000
      vsvip_ref: ${resource.Idem_AVILB_APPLICATIONS_VS_VIP_1.name}
      pool_ref: ${resource.Idem_AVILB_APPLICATIONS_POOL_1.name}
  Idem_AVILB_APPLICATIONS_POOL_1:
    type: Idem.AVILB.APPLICATIONS.POOL
    properties:
      name: pool-sg-${uuid()}
      account: ${resource.Allocations_CloudZone_1.selectedCloudAccount.name}
      tier1_lr: DONT-DELETE-AVI-Admin-E2E
      vrf_ref: T1-DONT-DELETE-AVI-Admin-E2E
      lb_algorithm: LB_ALGORITHM_ROUND_ROBIN
      health_monitor_refs:
        - System-Ping
      nsx_securitygroup:
        - avinsxgroup

Zwei verschiedene Maschinencluster in einem einzelnen Pool

Diese Avi Load Balancer-Beispielvorlage verfügt über zwei Servercluster, Cloud_vSphere_Machine_1 (count=2) und Cloud_vSphere_Machine_2 (count=3), die dem Pool zugewiesen sind. Die Eigenschaftsdefinition servers im Idem-Pool unterscheidet sich von den regulären Bindungseigenschaften. Sie verbindet die Adressen der beiden Servercluster beim Aufruf der Funktion „map_to_object“ auf folgende Weise:
${map_to_object(resource.Cloud_vSphere_Machine_1[*].address + resource.Cloud_vSphere_Machine_2[*].address, "ip", "addr")}

Andere Komponenten wie der virtuelle Dienst, VS-VIP, Integritätsüberwachungen und das Hilfsprogramm für die Zuteilung von Cloud-Zonen werden wie gewohnt verwendet.

formatVersion: 1
inputs: {}
resources:
  Idem_AVILB_PROFILES_HEALTH_MONITOR_1:
    type: Idem.AVILB.PROFILES.HEALTH_MONITOR
    properties:
      name: monitor-${resource.Allocations_CustomNaming_1.selectedNames[0]}
      type: HEALTH_MONITOR_PING
      account: ${resource.Allocations_CloudZone_1.selectedCloudAccount.name}
      is_federated: false
      monitor_port: 8000
      send_interval: 8
      receive_timeout: 4
      successful_checks: 4
      failed_checks: 4
  Allocations_CloudZone_1:
    type: Allocations.CloudZone
    properties:
      accountType: avilb
      constraints:
        - tag: avi-vcenter
  Idem_AVILB_APPLICATIONS_POOL_1:
    type: Idem.AVILB.APPLICATIONS.POOL
    properties:
      name: pool-${resource.Allocations_CustomNaming_1.selectedNames[0]}
      account: ${resource.Allocations_CloudZone_1.selectedCloudAccount.name}
      lb_algorithm: LB_ALGORITHM_ROUND_ROBIN
      default_server_port: 8000
      servers: ${map_to_object(resource.Cloud_vSphere_Machine_1[*].address +  resource.Cloud_vSphere_Machine_2[*].address, "ip", "addr")}
      health_monitor_refs:
        - ${resource.Idem_AVILB_PROFILES_HEALTH_MONITOR_1.name}
  Idem_AVILB_APPLICATIONS_VS_VIP_1:
    type: Idem.AVILB.APPLICATIONS.VS_VIP
    properties:
      name: vip-${resource.Allocations_CustomNaming_1.selectedNames[0]}
      account: ${resource.Allocations_CloudZone_1.selectedCloudAccount.name}
      vip:
        - auto_allocate_ip: true
          auto_allocate_ip_type: V4_ONLY
          enabled: true
          placement_networks:
            - network_ref: ${resource.Cloud_vSphere_Network_1.resourceName}
              subnet:
                ip_addr:
                  addr: 10.202.20.0
                  type: V4
                mask: 22
  Allocations_CustomNaming_1:
    type: Allocations.CustomNaming
    properties:
      resourceType: Generic
      numberOfNamesToGenerate: 1
      templateName: avi-vcenter-bp
  Idem_AVILB_APPLICATIONS_VIRTUAL_SERVICE_1:
    type: Idem.AVILB.APPLICATIONS.VIRTUAL_SERVICE
    properties:
      name: vs-${resource.Allocations_CustomNaming_1.selectedNames[0]}
      account: ${resource.Allocations_CloudZone_1.selectedCloudAccount.name}
      traffic_enabled: true
      services:
        - port: 8000
      pool_ref: ${resource.Idem_AVILB_APPLICATIONS_POOL_1.name}
      vsvip_ref: ${resource.Idem_AVILB_APPLICATIONS_VS_VIP_1.name}
  Cloud_vSphere_Machine_1:
    type: Cloud.vSphere.Machine
    properties:
      count: 2
      image: photon
      cpuCount: 1
      totalMemoryMB: 1024
      networks:
        - network: ${resource.Cloud_vSphere_Network_1.id}
          assignment: static
  Cloud_vSphere_Machine_2:
    type: Cloud.vSphere.Machine
    properties:
      count: 3
      image: photon
      cpuCount: 1
      totalMemoryMB: 1024
      networks:
        - network: ${resource.Cloud_vSphere_Network_1.id}
          assignment: static
  Cloud_vSphere_Network_1:
    type: Cloud.vSphere.Network
    properties:
      networkType: existing