Для управления диском SCSI необходимо указать и запомнить его SCSI-контроллер и логический том (LUN). Для жесткого диска vSphere можно использовать Cloud Assembly для назначения обоих значений в облачном шаблоне.

Возможность использования различных SCSI-контроллеров имеет большое значение для производительности и требуется для некоторых типов развертываний, таких как Oracle Real Application Clusters (RAC).

Свойства диска: SCSI-контроллер и LUN

Чтобы назначить контроллер SCSI и LUN, добавьте следующие свойства облачного шаблона:

SCSIController

unitNumber

Можно не использовать эти свойства. В этом случае назначаются элементы по умолчанию. Cloud Assembly больше не развертывает диски SCSI произвольным образом, так как это затрудняет управление ими.

Контроллеры и диски SCSI нумеруются по порядку, начиная с 0. Каждый SCSI-контроллер может поддерживать диски SCSI с номерами томов 0–15.

Вариант 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)}
URL-адрес интерфейса командной строки Terraform