VMware Aria AutomationAvi Load Balancerとの統合では、Avi Load Balancer IP アドレス管理による仮想サービスの仮想 IP アドレス割り当てがサポートされます。テンプレート内で、または入力として IP アドレスを指定することもできます。

テンプレートを設計する場合は、必須としてマークされていない一部のプロパティが、使用方法によってはテンプレートを機能させるために必要な場合があります。次に示すテンプレートのサンプルは、さまざまな IP アドレス管理、vSphere、および NSX Cloud のシナリオに関するガイダンスを提供します。

tier1_lr 属性を使用する一部のテンプレートのサンプルでは、Tier-1 論理ルーター名が ID と同じ場合にのみ tier1_lr 名を使用できます。それ以外の場合は、Tier-1 論理ルーターのフル パス(例:/infra/tier-1s/20f6a214-e8b3-4bb3-aaeb-6c06639ada23)を使用する必要があります。

開始する前に

最初に Avi Load Balancer コントローラで Avi Load Balancer IP アドレス管理を構成してから、 VMware Aria Automation を構成します。
  1. Avi Load Balancer コントローラで、サブネットと IP アドレス管理プロファイルを構成します。

    NSX Advanced Load Balancer の IP アドレス管理と DNS」を参照してください。

  2. VMware Aria Automation を構成します。
    1. Automation AssemblerAvi Load Balancer クラウド アカウントを作成し、プロジェクトを作成して、クラウド ゾーンを追加します。

      VMware Avi Load Balancer クラウド アカウントの作成を参照してください。

    2. プロビジョニング用のネットワークを構成します。

      [インフラストラクチャ] > [リソース] > [ネットワーク] の順に移動し、プロビジョニングに使用するネットワークを特定して、IPv4/IPv6 CIDR および DNS サーバを構成します。

      VMware Aria Automation のネットワーク リソースを参照してください。

    3. イメージ マッピングを構成します。

      [インフラストラクチャ] > [構成] > [イメージ マッピング] の順に移動し、画面上のプロンプトに従って新しいイメージ マッピングを作成します。

      VMware Aria Automation でのイメージ マッピングの詳細を参照してください。

    4. ネットワーク プロファイルを構成します。

      [インフラストラクチャ] > [構成] > [ネットワーク プロファイル] の順に移動し、画面上のプロンプトに従って新しいネットワーク プロファイルを作成します。

      VMware Aria Automation でのネットワーク プロファイルの詳細を参照してください。

VS VIP の固定 IP アドレス

この Avi Load Balancer サンプル テンプレートには、仮想サービス、VS VIP、プールが含まれています。vSphere 仮想マシン クラスタがプールに割り当てられています。VS VIP には固定 IP アドレスがあります。

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

vCenter Server クラウドの VS VIP での Avi Load Balancer IP アドレス管理

この Avi Load Balancer サンプル テンプレートは、vCenter Server クラウド用です。

VS VIP リソースでは、network refsubnet を含む ipam_network_subnet セクションを定義します。この定義により、Avi Load Balancerは、Avi Load Balancer コントローラで VS VIP を作成するときに、定義済みの Avi Load Balancer IP アドレス管理プロファイルから IP アドレスを割り当てます。

プール メンバーの定義済みクラスタでは、固定ネットワーク割り当てを使用します。Automation Assembler では、ドメイン、IPv4/IPv6 CIDR、デフォルト ゲートウェイ、DNS サーバなどのネットワークを構成します。次に、このネットワークを使用してネットワーク範囲を持つネットワーク プロファイルを設定します。クラスタが作成されると、そのネットワーク範囲の IP アドレスがクラスタに割り当てられます。

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

NSX Cloud の VS VIP での Avi Load Balancer IP アドレス管理

このサンプルの Avi Load Balancer テンプレートは、NSX Cloud の Avi Load Balancer用です。

NSX Cloud で Avi Load Balancerをプロビジョニングするには、Avi Load Balancer プール、仮想サービス、VS VIP リソースに Tier-1 論理ルーター (tier1_lr) を定義するか、VRF コンテキスト (vrf_context_ref) が必要です。

VS VIP リソースでは、network refsubnet を含む ipam_network_subnet セクションを定義します。この定義により、Avi Load Balancerは、Avi Load Balancer コントローラで VS VIP を作成するときに、定義済みの Avi Load Balancer IP アドレス管理プロファイルから IP アドレスを割り当てます。

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

NSX Cloud の VS VIP での Infoblox IP アドレス管理

このサンプルの Avi Load Balancer テンプレートは、Avi Load Balancer と Infoblox との統合に基づいています。このテンプレートでは、Infoblox IP アドレス管理を使用して、NSX Cloud の Avi Load Balancerの VS VIP に IP アドレスを割り当てます。

テンプレート内の ipam_network_subnet セクションの network_ref 属性は、Infoblox で定義されているネットワーク セグメントのフル パスに設定されます。network_ref 値は、/api/network/ プリフィックスを含むフル パスにする必要があります。これは他の ref 属性とは異なります。

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

プール メンバーの既存の NSX セキュリティ グループ

このサンプルの Avi Load Balancer テンプレートでは、既存の NSX セキュリティ グループを使用してプール メンバーを割り当てます。

nsx_securitygroup 属性が定義され、Idem.AVILB.APPLICATIONS.POOL リソース内の既存の NSX セキュリティ グループ名に設定されます。

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

単一プール内の 2 つの異なるマシン クラスタ

このサンプルの Avi Load Balancer テンプレートでは、Cloud_vSphere_Machine_1 (count = 2) と Cloud_vSphere_Machine_2 (count=3) という 2 つのサーバ クラスタがプールに割り当てられています。Idem プール内の servers プロパティの定義は、通常のバインド プロパティとは異なります。map_to_object 関数を呼び出す場合は、次のように 2 つのサーバ クラスタのアドレスを連結します。
${map_to_object(resource.Cloud_vSphere_Machine_1[*].address + resource.Cloud_vSphere_Machine_2[*].address, "ip", "addr")}

その他のコンポーネント(仮想サービス、VS VIP、健全性モニター、クラウド ゾーン割り当てヘルパーなど)は通常の方法で使用されます。

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