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}