U kunt resources en instellingen voor netwerken, beveiliging en load balancers gebruiken in cloudsjabloonontwerpen en -implementaties.

Zie vRealize Automation Resource Type Schema voor een samenvatting van de opties voor cloudsjabloonontwerpcode.

Deze voorbeelden tonen de resources voor netwerken, beveiligingsgroepen en load balancers in een standaardontwerp van cloudsjablonen.

Netwerken

Resourcescenario Voorbeeldontwerpcode voor cloudsjabloon

vSphere-machine met meerdere NIC's die zijn gekoppeld aan een NSX-netwerkresource.

resources:
  demo-machine:
    type: Cloud.vSphere.Machine
    properties:
      image: ubuntu
      flavor: small
      networks:
       - network: '${resource.Cloud_vSphere_Network_1.id}'  
  Cloud_vSphere_Network_1:
    type: Cloud.vSphere.Network
    properties:
      networkType: existing
  Cloud_vSphere_Network_2:
    type: Cloud.NSX.Network
    properties:
      networkType: existing
     
Een privénetwerk met een statisch IP-adres voor een Azure VM-implementatie toevoegen
formatVersion: 1
inputs: {}
resources:
  Cloud_Azure_Machine_1:
    type: Cloud.Azure.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
Voeg regels voor NAT en DNAT port mapping toe of bewerk deze in een Cloud.NSX.NAT-resource voor een bestaande implementatie.
resources:
  gw:
    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
  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

Publieke cloudmachine gebruikt een intern IP-adres in plaats van een openbaar IP. In dit voorbeeld wordt een specifieke netwerk-ID gebruikt.

N.b: de optie network: wordt gebruikt in de instelling networks: om een doelnetwerk-ID op te geven. De optie name: in de instelling networks: is verouderd en mag niet worden gebruikt.

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

Gerouteerd netwerk voor NSX-V of NSX-T met behulp van het NSX-netwerkresourcetype.

Cloud_NSX_Network_1:
    type: Cloud.NSX.Network
    properties:
      networkType: routed
Voeg een tag toe aan een machine-NIC-resource in de cloudsjabloon.
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

Tag logische schakelopties van NSX-T voor een uitgaand netwerk.

Taggen wordt ondersteund voor NSX-T en VMware Cloud on AWS.

Voor meer informatie over dit scenario verwijzen we u naar het blogbericht Creating Tags in NSX with Cloud Assembly in de community.

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

Beveiligingsgroepen

Resourcescenario Voorbeeldontwerpcode voor cloudsjabloon

Bestaande beveiligingsgroep met een beperkingstag die wordt toegepast op een machine-NIC.

Als u een bestaande beveiligingsgroep wilt gebruiken, voert u bestaand in voor de eigenschap securityGroupType .

U kunt tags toewijzen aan een Cloud.SecurityGroup-resource om bestaande beveiligingsgroepen toe te wijzen met behulp van tagbeperkingen. Beveiligingsgroepen die geen tags bevatten, kunnen niet worden gebruikt in het cloudsjabloonontwerp.

Beperkingstags moeten worden ingesteld voor securityGroupType: existing-beveiligingsgroepresources. Deze beperkingen moeten overeenstemmen met de tags die zijn ingesteld voor de bestaande beveiligingsgroepen. Beperkingstags kunnen niet worden ingesteld voor securityGroupType: new-beveiligingsgroepresources.

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

Beveiligingsgroep op aanvraag met twee firewallregels die de Allow- en Deny-toegangsopties illustreren.

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
Complexe cloudsjabloon met 2 beveiligingsgroepen, waaronder:
  • 1 bestaande beveiligingsgroep
  • 1 beveiligingsgroep op aanvraag met meerdere voorbeelden van firewallregels
  • 1 vSphere-machine
  • 1 bestaand netwerk

In dit voorbeeld ziet u verschillende combinaties van protocollen en poorten, services, IP CIDR als bron en doel, IP-bereik als bron of bestemming, en de opties voor alle, IPv6 en (::/0).

Voor machine-NIC's kunt u het verbonden netwerk en de beveiligingsgroep(en) opgeven. U kunt ook de NIC-index of een IP-adres opgeven.

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

Load balancers

Resourcescenario Voorbeeldontwerpcode voor cloudsjabloon

Geef een logboekregistratieniveau, algoritme en grootte op voor de load balancer.

Een voorbeeld van een NSX-load balancer met het gebruik van het logboekregistratieniveau, het algoritme en de grootte:

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

Koppel een load balancer aan een benoemde machine of een benoemde machine-NIC. U kunt machine ID of machine network ID opgeven om de machine toe te voegen aan de pool met load balancers. De eigenschap van de instantie ondersteunt zowel machines (machine by ID) als NIC's (machine by network ID).

In het eerste voorbeeld gebruikt de implementatie de machine by ID-instelling om de machine te verdelen wanneer deze op een netwerk wordt geïmplementeerd.

In het tweede voorbeeld gebruikt de implementatie de machine by network ID-instelling om de machine alleen te verdelen wanneer de machine wordt geïmplementeerd op de genoemde machine-NIC.

Het derde voorbeeld toont beide instellingen die worden gebruikt in dezelfde instances-optie.

U kunt de eigenschap instances gebruiken om een machine-ID of een machinenetwerk-ID te definiëren:
  • Machine-ID
    Cloud_LoadBalancer_1:
     type: Cloud.LoadBalancer
     properties:
       network: '${resource.Cloud_Network_1.id}'
       instances: '${resource.Cloud_Machine_1.id}'
       
  • Machinenetwerk-ID
    Cloud_LoadBalancer_1:
     type: Cloud.LoadBalancer
     properties:
       network: '${resource.Cloud_Network_1.id}'
       instances: '${resource.Cloud_Machine_1.networks[0].id}'
  • Er is één machine opgegeven voor het opnemen van de load balancer en een andere machine-NIC die is opgegeven voor het opnemen van de load balancer:
    instances:
      - resource.Cloud_Machine_1.id
      - resource.Cloud_Machine_2.networks[2].id
Voeg instellingen voor statuscontrole toe aan een NSX load balancer. Aanvullende opties zijn httpMethod, requestBody en 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}

Netwerk op aanvraag met een load balancer met 1 arm.

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

Bestaand netwerk met een load balancer.

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

Meer informatie

Voor implementatiescenario's met netwerken en beveiligingsgroepen raadpleegt u VMware-blogs zoals: