Les conceptions de modèles Cloud Assembly peuvent déployer un cluster de machines et associer un cluster de disques.

Pour déployer des clusters de machines et de disques, utilisez l'indicateur de ressource allocatePerInstance et map_to_object la syntaxe d'expression count.index dans vos modèles de cloud.

Les exemples de code de modèle de cloud suivants peuvent servir de directives pour les conceptions qui déploient des clusters.

Deux machines qui partagent un cluster de disques

resources:
  app0:
    type: Cloud.Machine
    allocatePerInstance: true
    properties:
      image: ubuntu
      flavor: small
      attachedDisks: '${map_to_object(slice(resource.disk[*].id, 0,2), "source")}'
  app1:
    type: Cloud.Machine
    allocatePerInstance: true
    properties:
      image: ubuntu
      flavor: small
      attachedDisks: '${map_to_object(slice(resource.disk[*].id, 2,4), "source")}'
  disk:
    type: Cloud.Volume
    allocatePerInstance: true
    properties:
      count: 4
      capacityGb: 5

Nombre variable de machines avec un disque chacune

inputs:
  count:
    type: integer
    default: 2
resources:
  Cloud_Machine_1:
    type: Cloud.Machine
    allocatePerInstance: true
    properties:
      image: ubuntu
      flavor: small
      count: '${input.count}'
      attachedDisks: '${map_to_object(slice(resource.disk[*].id, count.index, count.index + 1), "source")}'
  disk:
    type: Cloud.Volume
    allocatePerInstance: true
    properties:
      count: '${input.count}'
      capacityGb: 5

Nombre variable de machines avec deux disques chacune

inputs:
  count:
    type: integer
    default: 2
resources:
  Cloud_Machine_1:
    type: Cloud.Machine
    allocatePerInstance: true
    properties:
      image: ubuntu
      flavor: small
      count: ${input.count}
      attachedDisks: '${map_to_object(slice(resource.disk[*].id, 2*count.index, 2*(count.index + 1)), "source")}'
  disk:
    type: Cloud.Volume
    allocatePerInstance: true
    properties:
      count: ${2*input.count}
      capacityGb: 5

Définir les tailles de disque au moment de la demande

inputs:
  disksize:
    type: array
    minItems: 2
    maxItems: 2
    items:
      type: object
      properties:
        size:
          type: integer
resources:
  app:
    type: Cloud.Machine
    allocatePerInstance: true
    properties:
      flavor: small
      image: ubuntu
      attachedDisks: ${map_to_object(slice(resource.disk[*].id, 0, 2), 'source')}
  disk:
    type: Cloud.Volume
    allocatePerInstance: true
    properties:
      count: 2
      capacityGb: ${input.disksize[count.index].size}