Vous pouvez utiliser les ressources et les paramètres de mise en réseau, de sécurité et d'équilibrage de charge dans les conceptions et les déploiements de modèles de cloud.

Pour obtenir un résumé des options de code de conception de modèle de cloud, consultez Schéma de type de ressource de vRealize Automation.

Ces exemples présentent des ressources de réseau, de groupe de sécurité et d'équilibrage de charge dans des conceptions de modèle de cloud de base.

Scénario de ressources Exemple de code de conception de modèle de cloud

Machine vSphere incluant plusieurs cartes réseau associées à une ressource réseau NSX

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
     
Activez le transfert de port NAT à l'aide d'une ressource de modèle de cloud Cloud.NSX.Gateway sur un réseau sortant.
...
  gateway:
    type: Cloud.NSX.Gateway
    properties:
      networks:
       - ${resource.out.id}  
  natRules:
    - index: 1
      translatedInstance: ${resource.jumpbox.networks[0].id}
      destinationPorts: 2200
      translatedPorts: 22
      description: inbound ssh
    - index: 2
         ...
     

Spécifiez un niveau, un algorithme et une taille de journalisation de l'équilibrage de charge.

Exemple d'équilibrage de charge NSX illustrant l'utilisation du niveau, de l'algorithme et de la taille de journalisation :

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

Associez un équilibrage de charge à une machine nommée ou à une carte réseau de machine nommée. Vous pouvez spécifier machine ID ou machine network ID pour ajouter la machine au pool d'équilibrage de charge. La propriété Instances prend en charge à la fois les machines (machine by ID) et les cartes réseau (machine by network ID).

Dans le premier exemple, le déploiement utilise le paramètre machine by ID pour équilibrer la charge de la machine lorsqu'elle est déployée sur un réseau.

Dans le second exemple, le déploiement utilise le paramètre machine by network ID pour équilibrer la charge de la machine uniquement lorsque la machine est déployée sur la carte réseau de la machine nommée.

Le troisième exemple montre les deux paramètres utilisés dans la même option instances.

Vous pouvez utiliser la propriété instances pour définir un ID de machine ou un ID réseau de machine :
  • ID de machine
    Cloud_LoadBalancer_1:
     type: Cloud.LoadBalancer
     properties:
       network: '${resource.Cloud_Network_1.id}'
       instances: '${resource.Cloud_Machine_1.id}'
       
  • ID réseau de machine
    Cloud_LoadBalancer_1:
     type: Cloud.LoadBalancer
     properties:
       network: '${resource.Cloud_Network_1.id}'
       instances: '${resource.Cloud_Machine_1.networks[0].id}'
  • Une machine spécifiée pour l'inclusion de l'équilibrage de charge et une autre carte réseau de machine spécifiée pour l'inclusion de l'équilibrage de charge :
    instances:
      - resource.Cloud_Machine_1.id
      - resource.Cloud_Machine_2.networks[2].id

Une machine de cloud public utilise une adresse IP interne au lieu d'une adresse IP publique Cet exemple utilise un ID réseau spécifique.

Remarque : l'option network: est utilisée dans le paramètre networks: pour spécifier un ID réseau cible. L'option name: du paramètre networks: a été désapprouvée et ne doit pas être utilisée.

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

Réseau routé pour NSX-V ou NSX-T à l'aide du type de ressource réseau NSX.

Cloud_NSX_Network_1:
    type: Cloud.NSX.Network
    properties:
      networkType: routed
Ajoutez une balise à une ressource de carte réseau de machine dans le modèle de cloud.
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

Balisez les commutateurs logiques NSX-T pour un réseau sortant.

Le balisage est pris en charge pour NSX-T et VMware Cloud on AWS.

Pour plus d'informations sur ce scénario, reportez-vous à l'article de blog de la communauté Creating Tags in NSX with Cloud Assembly (Création de balises dans NSX avec Cloud Assembly).

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

Groupe de sécurité existant avec une balise de contrainte appliquée à la carte réseau d'une machine.

Pour utiliser un groupe de sécurité existant, entrez existant pour la propriété securityGroupType .

Vous pouvez attribuer des balises à une ressource de Cloud.SecurityGroup pour allouer des groupes de sécurité existants en utilisant des contraintes de balise. Les groupes de sécurité qui ne contiennent aucune balise ne peuvent pas être utilisés dans la conception du modèle de cloud.

Les balises de contrainte doivent être définies pour des ressources de groupes de sécurité securityGroupType: existing. Ces contraintes doivent correspondre aux balises définies sur les groupes de sécurité existants. Les balises de contrainte ne peuvent pas être définies pour les ressources de groupe de sécurité securityGroupType: new.

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

Groupe de sécurité à la demande incluant deux règles de pare-feu illustrant les options d'accès Allow et Deny.

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
Modèle de cloud complexe incluant 2 groupes de sécurité, notamment :
  • 1 groupe de sécurité existant
  • 1 groupe de sécurité à la demande incluant plusieurs exemples de règles de pare-feu
  • 1 machine vSphere
  • 1 réseau existant

Cet exemple illustre différentes combinaisons de protocole et de ports, de services, de CIDR IP en tant que source et destination, de plages d'adresses IP en tant que source ou destination, et les options pour tous, IPv6 et (::/0).

Pour les cartes réseau de machine, vous pouvez spécifier le réseau connecté, ainsi que le ou les groupes de sécurité. Vous pouvez également spécifier l'index de la carte réseau ou une adresse IP.

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

Réseau à la demande avec un équilibrage de charge à un bras.

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

Réseau existant avec un équilibrage de charge.

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

En savoir plus

Pour des scénarios de mise en œuvre de réseau et de sécurité, consultez les blogs VMware tels que ceux-ci :