SCSI ディスクを管理するには、その SCSI コントローラと論理ユニット番号 (LUN) を指定し、把握しておく必要があります。vSphere のディスク オブジェクトに対しては、どちらの値もクラウド テンプレートで Cloud Assembly を使用して割り当てることができます。

複数の SCSI コントローラを使用する機能はパフォーマンスにとって重要であり、Oracle Real Application Clusters (RAC) などの一部の展開タイプでは必須です。

SCSI コントローラと LUN ディスクのプロパティ

SCSI コントローラと LUN を割り当てるには、次のクラウド テンプレート プロパティを追加します。

SCSIController

unitNumber

プロパティを省略することもできます。その場合、割り当ては予測可能なデフォルト値に従います。管理のしにくさを招いていた、Cloud Assembly による SCSI ディスクのランダムな展開は行われなくなりました。

SCSI コントローラとディスクには、ゼロから始まる番号が順番に付けられます。各 SCSI コントローラは、ユニット番号 0 ~ 15 の SCSI ディスクをサポートできます。

オプション 1:SCSI コントローラとユニット番号の両方を設定

次の例に示すように、両方のプロパティを全面的に指定できます。この場合、SCSI コントローラとユニット番号の割り当ては、入力された値と一致します。

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

オプション 2:SCSI コントローラのみを設定

SCSI コントローラを指定して、ユニット番号は省略することができます。この場合、SCSI コントローラの割り当ては、入力された値と一致します。ユニット番号は、そのコントローラで最初に使用可能なユニット番号に設定されます。

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

オプション 3:両方のプロパティを省略

SCSI コントローラとユニット番号を省略することもできます。この場合、割り当ては最初に使用可能な SCSI コントローラと、そのコントローラで最初に使用可能なユニット番号に設定されます。

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

許可されないオプション:LUN のみ

SCSI コントローラを省略してユニット番号のみを指定することはできません。このように指定すると、展開に含まれる複数の SCSI コントローラがその番号のディスクを持つことになり、管理の際にディスクを区別できなくなります。

入力を使用して SCSI コントローラと LUN を設定する

デザインをより動的にするには、入力を使用してユーザーが申請時または更新時に SCSI コントローラとユニット番号を指定できるようにします。

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)}
Terraform CLI の URL