若要管理 SCSI 磁碟,您必須指定並瞭解其 SCSI 控制器和邏輯單元編號 (LUN)。對於 vSphere 磁碟物件,您可以使用 Automation Assembler 在雲端範本中同時指派這兩個值。

使用不同 SCSI 控制器的功能對於效能至關重要,並且對於某些部署類型 (例如 Oracle Real Application Clusters (RAC)) 來說十分必要。

備註: Automation Assembler 僅處理設定了 SCSI 控制器的虛擬裝置。

SCSI 控制器和 LUN 磁碟內容

若要指派 SCSI 控制器和 LUN,請新增下列雲端範本內容:

SCSIController

unitNumber

此外,還可以選擇略過內容,在此情況下指派會遵循可預測的預設值。Automation Assembler 不再以隨機順序部署 SCSI 磁碟,使得這些磁碟難以管理。

SCSI 控制器和磁碟按順序進行編號,第一個是 0。每個 SCSI 控制器可支援單元編號為 0–15 的 SCSI 磁碟。

備註: 如果 SCSI 控制器類型為 VMware 半虛擬化,則 VMware Aria Automation 8.18.1 或更新版本連線至 vCenter 6.7 或更新版本時,每個控制器最多支援 64 個磁碟,單元編號為 0-64。如需 SCSI 控制器類型的相關資訊,請參閱 vSphere 虛擬機器可用的虛擬機器硬體

選項 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