Per gestire un disco SCSI, è necessario specificarne e conoscerne il controller SCSI e il numero di unità logica (LUN). Per un oggetto disco di vSphere, è possibile utilizzare Cloud Assembly per assegnare entrambi i valori nel modello cloud.

La possibilità di utilizzare controller SCSI diversi è importante per le prestazioni ed è necessaria per alcuni tipi di distribuzione, come i cluster RAC (Real Application Cluster) di Oracle.

Proprietà del controller SCSI e del disco LUN

Per assegnare un controller SCSI e un LUN, aggiungere le seguenti proprietà del modello cloud:

SCSIController

unitNumber

È inoltre possibile omettere le proprietà. In questo caso l'assegnazione segue un'impostazione predefinita prevedibile. Cloud Assembly non distribuisce più i dischi SCSI in ordine casuale, rendendone difficoltosa la gestione.

I dischi e i controller SCSI vengono numerati in ordine iniziando da zero. Ogni controller SCSI può supportare dischi SCSI di numeri di unità da 0 a 15.

Opzione 1: impostazione del controller SCSI e del numero di unità

È possibile specificare entrambe le proprietà, come illustrato nell'esempio seguente. In tal caso, l'assegnazione del controller SCSI e del numero di unità corrispondono ai valori immessi.

resources:
  Cloud_vSphere_Machine_1:
    type: Cloud.vSphere.Machine
    properties:
      image: centos
      cpuCount: 1
      totalMemoryMB: 1024
      attachedDisks:
        - source: '${resource.Cloud_vSphere_Disk_1.id}'
        - source: '${resource.Cloud_vSphere_Disk_2.id}'
        - source: '${resource.Cloud_vSphere_Disk_3.id}'
  Cloud_vSphere_Disk_1:
    type: Cloud.vSphere.Disk
    properties:
      capacityGb: 1
      SCSIController: SCSI_Controller_2
      unitNumber: 0
  Cloud_vSphere_Disk_2:
    type: Cloud.vSphere.Disk
    properties:
      capacityGb: 1
      SCSIController: SCSI_Controller_2
      unitNumber: 1
  Cloud_vSphere_Disk_3:
    type: Cloud.vSphere.Disk
    properties:
      capacityGb: 1
      SCSIController: SCSI_Controller_3
      unitNumber: 4

Opzione 2: impostazione del solo controller SCSI

È possibile specificare il controller SCSI e omettere il numero di unità. In questo caso, l'assegnazione del controller SCSI corrisponde al valore immesso. Il numero di unità viene impostato sul primo numero di unità disponibile in tale controller.

resources:
  Cloud_vSphere_Machine_1:
    type: Cloud.vSphere.Machine
    properties:
      image: centos
      cpuCount: 1
      totalMemoryMB: 1024
      attachedDisks:
        - source: '${resource.Cloud_vSphere_Disk_1.id}'
        - source: '${resource.Cloud_vSphere_Disk_2.id}'
        - source: '${resource.Cloud_vSphere_Disk_3.id}'
  Cloud_vSphere_Disk_1:
    type: Cloud.vSphere.Disk
    properties:
      capacityGb: 1
      SCSIController: SCSI_Controller_0
  Cloud_vSphere_Disk_2:
    type: Cloud.vSphere.Disk
    properties:
      capacityGb: 1
      SCSIController: SCSI_Controller_0
  Cloud_vSphere_Disk_3:
    type: Cloud.vSphere.Disk
    properties:
      capacityGb: 1
      SCSIController: SCSI_Controller_1

Opzione 3: omissione di entrambe le proprietà

È possibile omettere il controller SCSI e il numero di unità. In questo caso, l'assegnazione viene impostata sul primo controller SCSI disponibile e sul primo numero di unità disponibile in tale controller.

resources:
  Cloud_vSphere_Machine_1:
    type: Cloud.vSphere.Machine
    properties:
      image: centos
      cpuCount: 1
      totalMemoryMB: 1024
      attachedDisks:
        - source: '${resource.Cloud_vSphere_Disk_1.id}'
        - source: '${resource.Cloud_vSphere_Disk_2.id}'
        - source: '${resource.Cloud_vSphere_Disk_3.id}'
  Cloud_vSphere_Disk_1:
    type: Cloud.vSphere.Disk
    properties:
      capacityGb: 1
  Cloud_vSphere_Disk_2:
    type: Cloud.vSphere.Disk
    properties:
      capacityGb: 1
  Cloud_vSphere_Disk_3:
    type: Cloud.vSphere.Disk
    properties:
      capacityGb: 1

Opzione non applicabile: solo LUN

Non è possibile omettere il controller SCSI e specificare solo un numero di unità. Questa operazione potrebbe causare una distribuzione in cui più controller SCSI dispongono di un disco con tale numero ma, a scopo di gestione, non si sa di quale disco si tratti.

Utilizzo degli input per impostare il controller SCSI e il LUN

Per rendere la progettazione più dinamica, utilizzare gli input in modo che l'utente possa specificare il controller SCSI e il numero di unità al momento della richiesta o dell'aggiornamento.

inputs:
  diskProperties:
    type: array
    minItems: 1
    maxItems: 10
    items:
      type: object
      properties:
        size:
          type: integer
        SCSIController:
          type: string
          title: SCSI Controller
          enum:
            - SCSI_Controller_0
            - SCSI_Controller_1
            - SCSI_Controller_2
            - SCSI_Controller_3
        unitNumber:
          type: integer
          title: Unit Number
          
resources:
  app:
    type: Cloud.vSphere.Machine
    allocatePerInstance: true
    properties:
      flavor: small
      image: centos
      attachedDisks: '${map_to_object(slice(resource.disk[*].id, 0, 4), ''source'')}'
  disk:
    type: Cloud.vSphere.Disk
    allocatePerInstance: true
    properties:
      capacityGb: '${input.diskProperties[count.index].size}'
      SCSIController: '${input.diskProperties[count.index].SCSIController}'
      unitNumber: '${input.diskProperties[count.index].unitNumber}'
      count: ${length(input.diskProperties)}
URL della CLI Terraform