Sie können Ressourcen und Einstellungen für Netzwerk, Sicherheit und Lastausgleichsdienste in Cloud-Vorlagendesigns und Bereitstellungen verwenden.

Eine Zusammenfassung der Designcodeoptionen für Cloud-Vorlagen finden Sie unter vRealize Automation-Ressourcentypschema.

Diese Beispiele veranschaulichen Netzwerk-, Sicherheits- und Lastausgleichsdienstressourcen in einfachen Cloud-Vorlagendesigns.

Netzwerke

Ressourcenszenario Beispiel für den Designcode einer Cloud-Vorlage
vSphere-Maschine mit mehreren Netzwerkkarten, die mit vSphere- und NSX-Netzwerken mit DHCP-IP-Zuweisung verbunden sind

resources:
  demo-machine:
    type: Cloud.vSphere.Machine
    properties:
      image: ubuntu
      flavor: small
      networks:
        - network: ${resource["demo-vSphere-Network"].id}
          deviceIndex: 0
        - network: ${resource["demo-NSX-Network"].id}
          deviceIndex: 1
  demo-vSphere-Network:
    type: Cloud.vSphere.Network
    properties:
      networkType: existing
  demo-NSX-Network:
    type: Cloud.NSX.Network
    properties:
      networkType: outbound
     
Privates NSX-Netzwerk unter Verwendung der Eigenschaft vlanIds zur Angabe eines Arrays mit 3 VLANs – 123, 456 und 7
formatVersion: 1
inputs: {}
resources:
  Cloud_Machine_1:
    type: Cloud.Machine
    properties:
      image: test
      flavor: test
      networks:
       - network: '${resource.Cloud_NSX_Network_1.id}'  
  Cloud_NSX_Network_1:
    type: Cloud.NSX.Network
    properties:
      networkType: private
      vlanIds:
         - 123 
         - 456
         - 7
     
Hinzufügen eines privaten Netzwerks mit einer statischen IP-Adresse für die Bereitstellung einer Azure-VM
formatVersion: 1
inputs: {}
resources:
  Cloud_Azure_Machine_1:
    type: Cloud.Machine
    properties:
      image: photon
      flavor: Standard_B1ls
      networks:
        - network: '${resource.Cloud_Network_1.id}'
          assignment: static
          address: 10.0.0.45
          assignPublicIpAddress: false
  Cloud_Network_1:
    type: Cloud.Network
    properties:
      networkType: existing

Sie können eine statische IP-Zuweisung mit vRealize IPAM verwenden (intern, wie im Lieferumfang von vRealize Automation enthalten, oder extern auf Basis des vRA IPAM-SDK, wie z. B. für ein im VMware Marketplace verfügbares Infoblox-Plug-In). Andere Verwendungen von assignment: static werden gemäß der Beschreibung im Abschnitt Zu beachten von Weitere Informationen zu Netzwerkressourcen in vRealize Automation-Cloud-Vorlagen nicht unterstützt.

resources:
  demo_vm:
    type: Cloud.vSphere.Machine
    properties:
      image: 'photon'
      cpuCount: 1
      totalMemoryMB: 1024
      networks:
        - network: ${resource.demo_nw.id}
          assignment: static
  demo_nw:
    type: Cloud.vSphere.Network
    properties:
      networkType: existing
Fügen Sie NAT- und DNAT-Portweiterleitungsregeln in einer Cloud.NSX.NAT-Ressource für eine vorhandene Bereitstellung hinzu oder bearbeiten Sie sie.
resources:
  gw:
    type: Cloud.NSX.Gateway
    properties:
      networks:
        - ${resource.akout.id}
  nat:
    type: Cloud.NSX.Nat
    properties:
      networks:
        - ${resource.akout.id}
      natRules:
        - translatedInstance: ${resource.centos.networks[0].id}
          index: 0
          protocol: TCP
          kind: NAT44
          type: DNAT
          sourceIPs: any
          sourcePorts: 80
          translatedPorts: 8080
          destinationPorts: 8080
          description: edit
        - translatedInstance: ${resource.centos.networks[0].id}
          index: 1
          protocol: TCP
          kind: NAT44
          type: DNAT
          sourceIPs: any
          sourcePorts: 90
          translatedPorts: 9090
          destinationPorts: 9090
          description: add
      gateway: ${resource.gw.id}
  centos:
    type: Cloud.vSphere.Machine
    properties:
      image: WebTinyCentOS65x86
      flavor: small
      customizationSpec: Linux
      networks:
        - network: ${resource.akout.id}
          assignment: static
  akout:
    type: Cloud.NSX.Network
    properties:
      networkType: outbound
      constraints:
        - tag: nsxt-nat-1-M2
        

Public Cloud-Maschine zur Verwendung einer internen IP-Adresse anstelle einer öffentlichen IP-Adresse. In diesem Beispiel wird eine bestimmte Netzwerk-ID verwendet.

Hinweis: Die Option network: wird in der Einstellung networks: verwendet, um eine Zielnetzwerk-ID anzugeben. Die Option name: in der Einstellung networks: ist veraltet und sollte nicht mehr verwendet werden.

resources:
  wf_proxy:
    type: Cloud.Machine
    properties:
      image: ubuntu 16.04
      flavor: small
      constraints:
        - tag: 'platform:vsphere'
      networks:
        - network: '${resource.wf_net.id}'
          assignPublicIpAddress: false

Geroutetes Netzwerk für NSX-V oder NSX-T unter Verwendung des NSX-Netzwerkressourcentyps.

Cloud_NSX_Network_1:
    type: Cloud.NSX.Network
    properties:
      networkType: routed
Fügen Sie der Netzwerkkartenressource einer Maschine in der Cloud-Vorlage ein Tag hinzu.
formatVersion: 1
inputs: {}
resources:
 Cloud_Machine_1:
 type: Cloud.vSphere.Machine
 properties:
  flavor: small
  image: ubuntu
  networks:
     - name: '${resource.Cloud_Network_1.name}'
     deviceIndex: 0
     tags: 
      - key: 'nic0'
        value: null
      - key: internal
        value: true
     - name: '${resource.Cloud_Network_2.name}'
     deviceIndex: 1
     tags: 
      - key: 'nic1'
        value: null
      - key: internal
        value: false

Taggen Sie logische NSX-T-Switches für ein ausgehendes Netzwerk.

Tagging wird für NSX-T und VMware Cloud on AWS unterstützt.

Weitere Informationen zu diesem Szenario finden Sie im Community-Blogbeitrag Erstellen von Tags in NSX mit Cloud Assembly.

Cloud_NSX_Network_1:
    type: Cloud.NSX.Network
    properties:
      networkType: outbound
      tags: 
        - key: app
          value: opencart

Sicherheitsgruppen

Ressourcenszenario Beispiel für den Designcode einer Cloud-Vorlage

Vorhandene Sicherheitsgruppe mit einem Einschränkungs-Tag, das auf eine Maschinen-Netzwerkkarte (NIC) angewendet wurde.

Um eine vorhandene Sicherheitsgruppe zu verwenden, geben Sie Vorhanden für die Eigenschaft securityGroupType ein.

Sie können einer Cloud.SecurityGroup-Ressource Tags zuweisen, um vorhandene Sicherheitsgruppen mithilfe von Tag-Einschränkungen zuzuteilen. Sicherheitsgruppen, die keine Tags enthalten, können im Cloud-Vorlagendesign nicht verwendet werden.

Einschränkungs-Tags müssen für securityGroupType: existing-Sicherheitsgruppenressourcen festgelegt werden. Diese Einschränkungen müssen mit den Tags übereinstimmen, die in den vorhandenen Sicherheitsgruppen festgelegt wurden. Für securityGroupType: new-Sicherheitsgruppenressourcen können keine Einschränkungs-Tags festgelegt werden.

formatVersion: 1
inputs: {}
resources:
  allowSsh_sg:
    type: Cloud.SecurityGroup
    properties:
      securityGroupType: existing
      constraints:
        - tag: allowSsh
  compute:
    type: Cloud.Machine
    properties:
      image: centos
      flavor: small
      networks:
        - network: '${resource.prod-net.id}'
          securityGroups:
            - '${resource.allowSsh_sg.id}'
  prod-net:
    type: Cloud.Network
    properties:
      networkType: existing

Bedarfsgesteuerte Sicherheitsgruppe mit zwei Firewallregeln, die die Zugriffsoptionen Allow und Deny veranschaulichen.

resources:
  Cloud_SecurityGroup_1:
    type: Cloud.SecurityGroup
    properties:
      securityGroupType: new
      rules:
        - ports: 5000
          source: 'fc00:10:000:000:000:56ff:fe89:48b4'
          access: Allow
          direction: inbound
          name: allow_5000
          protocol: TCP
        - ports: 7000
          source: 'fc00:10:000:000:000:56ff:fe89:48b4'
          access: Deny
          direction: inbound
          name: deny_7000
          protocol: TCP
  Cloud_vSphere_Machine_1:
    type: Cloud.vSphere.Machine
    properties:
      image: photon
      cpuCount: 1
      totalMemoryMB: 256
      networks:
        - network: '${resource.Cloud_Network_1.id}'
          assignIPv6Address: true
          assignment: static
          securityGroups:
            - '${resource.Cloud_SecurityGroup_1.id}'
  Cloud_Network_1:
    type: Cloud.Network
    properties:
      networkType: existing
Komplexe Cloud-Vorlage mit 2 Sicherheitsgruppen, einschließlich:
  • 1 vorhandenen Sicherheitsgruppe
  • 1 bedarfsgesteuerte Sicherheitsgruppe mit mehreren Beispielen für Firewallregeln
  • 1 vSphere-Maschine
  • 1 vorhandenen Netzwerks

Dieses Beispiel veranschaulicht verschiedene Kombinationen aus Protokollen und Ports, Dienste, IP-CIDR als Quelle und Ziel, IP-Bereich als Quelle oder Ziel sowie die Optionen für „Beliebig“, „IPv6“ und (::/0).

Für Maschinen-Netzwerkkarten können Sie das verbundene Netzwerk und die Sicherheitsgruppe(n) angeben. Sie können auch den Netzwerkkartenindex oder eine IP-Adresse angeben.

formatVersion: 1
inputs: {}
resources:
  DEMO_ESG : existing security group - security group 1)
    type: Cloud.SecurityGroup
    properties:
      constraints:
        - tag: BlockAll
      securityGroupType: existing (designation of existing for security group 1) 
  DEMO_ODSG: (on-demand security group - security group 2))
    type: Cloud.SecurityGroup
    properties:
      rules: (multiple firewall rules in this section)
        - name: IN-ANY (rule 1)
          source: any
          service: any
          direction: inbound
          access: Deny
        - name: IN-SSH (rule 2)
          source: any
          service: SSH
          direction: inbound
          access: Allow
        - name: IN-SSH-IP (rule 3)
          source: 33.33.33.1-33.33.33.250
          protocol: TCP
          ports: 223
          direction: inbound
          access: Allow
        - name: IPv-6-ANY-SOURCE (rule 4)
          source: '::/0'
          protocol: TCP
          ports: 223
          direction: inbound
          access: Allow
        - name: IN-SSH-IP (rule 5)
          source: 44.44.44.1/24
          protocol: UDP
          ports: 22-25
          direction: inbound
          access: Allow
        - name: IN-EXISTING-SG (rule 6)
          source: '${resource["DEMO_ESG"].id}'
          protocol: ICMPv6
          direction: inbound
          access: Allow
        - name: OUT-ANY (rule 7)
          destination: any
          service: any
          direction: outbound
          access: Deny
        - name: OUT-TCP-IPv6 (rule 8)
          destination: '2001:0db8:85a3::8a2e:0370:7334/64'
          protocol: TCP
          ports: 22
          direction: outbound
          access: Allow
        - name: IPv6-ANY-DESTINATION (rule 9)
          destination: '::/0'
          protocol: UDP
          ports: 23
          direction: outbound
          access: Allow
        - name: OUT-UDP-SERVICE (rule 10)
          destination: any
          service: NTP
          direction: outbound
          access: Allow
      securityGroupType: new (designation of on-demand for security group 2)
  DEMO_VC_MACHINE: (machine resource)
    type: Cloud.vSphere.Machine 
    properties:
      image: PHOTON
      cpuCount: 1
      totalMemoryMB: 1024
      networks: (Machine network NICs)
        - network: '${resource.DEMO_NW.id}'
          securityGroups:
            - '${resource.DEMO_ODSG.id}'
            - '${resource.DEMO_ESG.id}'
  DEMO_NETWORK: (network resource)
    type: Cloud.vSphere.Network
    properties:
      networkType: existing
      constraints:
        - tag: nsx62

Lastausgleichsdienste

Ressourcenszenario Beispiel für den Designcode einer Cloud-Vorlage

Geben Sie die Protokollierungsebene, den Algorithmus und die Größe des Lastausgleichsdiensts an.

NSX-Beispiellastausgleichsdienst, der die Verwendung der Protokollierungsebene, des Algorithmus und der Größe anzeigt:

resources:
  Cloud_LoadBalancer_1:
    type: Cloud.NSX.LoadBalancer
    properties:
      name: myapp-lb
      network: '${appnet-public.name}'
      instances: '${wordpress.id}'
      routes:
       - protocol: HTTP port: '80'
         loggingLevel: CRITICAL 
         algorithm: LEAST_CONNECTION
         type: MEDIUM

Verknüpfen Sie einen Lastausgleichsdienst mit einer benannten Maschine oder Maschinen-Netzwerkkarte. Sie können entweder machine ID oder machine network ID angeben, um die Maschine dem Pool der Lastausgleichsdienste hinzuzufügen. Die Eigenschaft „Instanzen“ unterstützt sowohl Maschinen (machine by ID) als auch Netzwerkkarten (machine by network ID).

Im ersten Beispiel wird in der Bereitstellung die Einstellung machine by ID verwendet, um einen Lastausgleich der Maschine durchzuführen, wenn sie in einem beliebigen Netzwerk bereitgestellt wird.

Im zweiten Beispiel wird in der Bereitstellung die Einstellung machine by network ID verwendet, um nur dann einen Lastausgleich der Maschine durchzuführen, wenn die Maschine auf der benannten Maschinen-Netzwerkkarte bereitgestellt wird.

Das dritte Beispiel zeigt beide Einstellungen, die in derselben instances-Option verwendet werden.

Sie können die Eigenschaft instances zum Definieren einer Maschinen-ID oder einer Maschinennetzwerk-ID verwenden:
  • Maschinen-ID
    Cloud_LoadBalancer_1:
     type: Cloud.LoadBalancer
     properties:
       network: '${resource.Cloud_Network_1.id}'
       instances: '${resource.Cloud_Machine_1.id}'
       
  • Maschinennetzwerk-ID
    Cloud_LoadBalancer_1:
     type: Cloud.LoadBalancer
     properties:
       network: '${resource.Cloud_Network_1.id}'
       instances: '${resource.Cloud_Machine_1.networks[0].id}'
  • Eine für die Einbeziehung in den Lastausgleich angegebene Maschine und eine andere für die Einbeziehung in den Lastausgleich angegebene Maschinen-Netzwerkkarte:
    instances:
      - resource.Cloud_Machine_1.id
      - resource.Cloud_Machine_2.networks[2].id
Fügen Sie einem NSX-Lastausgleichsdienst Einstellungen der Systemstatusprüfung hinzu. Zu den zusätzlichen Optionen gehören httpMethod, requestBody und responseBody.
myapp-lb:
  type: Cloud.NSX.LoadBalancer
  properties:
    name: myapp-lb
    network: '${appnet-public.name}'
    instances: '${wordpress.id}'
    routes:
     - protocol: HTTP
       port: '80'
       algorithm: ROUND_ROBIN
       instanceProtocol: HTTP
       instancePort: '80'
       healthCheckConfiguration:
         protocol: HTTP
         port: '80'
         urlPath: /mywordpresssite/wp-admin/install.php
         intervalSeconds: 60
         timeoutSeconds: 10
         unhealthyThreshold: 10
         healthyThreshold: 2
       connectionLimit: '50'
       connectionRateLimit: '50'
       maxConnections: '500'
       minConnections: ''
     internetFacing: true{code}

Bedarfsgesteuertes Netzwerk mit einem 1-armigen Lastausgleichsdienst.

inputs: {}
resources:
  mp-existing:
    type: Cloud.Network
    properties:
      name: mp-existing
      networkType: existing
  mp-wordpress:
    type: Cloud.vSphere.Machine
    properties:
      name: wordpress
      count: 2
      flavor: small
      image: tiny
      customizationSpec: Linux
      networks:
        - network: '${resource["mp-private"].id}'
  mp-private:
    type: Cloud.NSX.Network
    properties:
      name: mp-private
      networkType: private
      constraints:
        - tag: nsxt
  mp-wordpress-lb:
    type: Cloud.LoadBalancer
    properties:
      name: wordpress-lb
      internetFacing: false
      network: '${resource.mp-existing.id}'
      instances: '${resource["mp-wordpress"].id}'
      routes:
        - protocol: HTTP
          port: '80'
          instanceProtocol: HTTP
          instancePort: '80'
          healthCheckConfiguration:
            protocol: HTTP
            port: '80'
            urlPath: /index.pl
            intervalSeconds: 60
            timeoutSeconds: 30
            unhealthyThreshold: 5
            healthyThreshold: 2

Vorhandenes Netzwerk mit einem Lastausgleichsdienst.

formatVersion: 1
inputs:
  count:
    type: integer
    default: 1
resources:
  ubuntu-vm:
    type: Cloud.Machine
    properties:
      name: ubuntu
      flavor: small
      image: tiny
      count: '${input.count}'
      networks:
        - network: '${resource.Cloud_NSX_Network_1.id}'
  Provider_LoadBalancer_1:
    type: Cloud.LoadBalancer
    properties:
      name: OC-LB
      routes:
        - protocol: HTTP
          port: '80'
          instanceProtocol: HTTP
          instancePort: '80'
          healthCheckConfiguration:
            protocol: HTTP
            port: '80'
            urlPath: /index.html
            intervalSeconds: 60
            timeoutSeconds: 5
            unhealthyThreshold: 5
            healthyThreshold: 2
      network: '${resource.Cloud_NSX_Network_1.id}'
      internetFacing: false
      instances: '${resource["ubuntu-vm"].id}'
  Cloud_NSX_Network_1:
    type: Cloud.NSX.Network
    properties:
      networkType: existing
      constraints:
        - tag: nsxt24prod

Weitere Informationen

Implementierungsszenarien für Netzwerke und Sicherheitsgruppen finden Sie in den folgenden VMware-Blogs: