В ходе создания инфраструктуры администратор облачных служб может использовать подключаемый модуль Amazon Web Services (AWS) для подготовки экземпляров EC2 на основе подключаемого модуля. Для предоставления логики выделения своим экземплярам можно использовать помощники по выделению.

Чтобы экземпляры EC2 обеспечивали потребности инфраструктуры, их можно легко настроить с помощью новых свойств AWS. Например, чтобы автоматически восстановить экземпляр в случае сбоя проверки состояния, вы можете использовать в шаблоне свойство auto_recovery_enabled во время подготовки.

Дополнительные сведения о подключаемых модулях и выделении в VMware Aria Automation см. в разделе Проекты и развертывания в Automation Assembler на основе подключаемого модуля.

Свойства экземпляров EC2

Для ресурсов экземпляра EC2 на основе подключаемого модуля обязательными являются следующие свойства.

Свойство Описание
name Имя экземпляра.
region Регион, в котором будет развернут экземпляр.
account

Облачная учетная запись AWS, для которой ваша рабочая группа развертывает шаблоны. Дополнительные сведения см. в разделе Создание облачной учетной записи Amazon Web Services в VMware Aria Automation.

image_id Идентификатор AMI-образа, который будет использоваться для экземпляра.

В следующем разделе приведены примеры шаблонов для подготовки экземпляров EC2.

Подготовка простого экземпляра EC2

В следующем шаблоне представлен способ подготовки экземпляра EC2 со статически настроенными значениями для всех его свойств.

formatVersion: 1
inputs: {}
resources:
  Idem_AWS_EC2_INSTANCE_1:
    type: Idem.AWS.EC2.INSTANCE
    properties:
      name: my-instance-1
      region: us-east-1
      account: AWS
      image_id: ami-0aa7d40eeae50c9a9
      availability_zone: us-east-1a
      instance_type: t2.small
      subnet_id: subnet-07d2c529b6336bd0e

Подготовка экземпляра EC2 с помощью помощников по выделению

В следующем шаблоне представлен способ подготовки экземпляра EC2.

Помощники можно использовать в конфигурации «один ко многим», где один помощник предоставляет логику выделения, например размещение в зоне, нескольким ресурсам. Затем ресурсы нужно дополнительно настроить в соответствии с их полным списком свойств, определенных поставщиком облачных служб и поддерживаемых в соответствующем подключаемом модуле.

В этом примере используются помощник по вычислительным ресурсам, помощник по конфигурации ресурсов, помощник по образам и сетевой помощник.

formatVersion: 1
inputs:
  instance_name:
    type: string
resources:
  Allocations_Compute_1:
    type: Allocations.Compute
    properties:
      constraints:
        - tag: env:dev
  Allocations_Flavor_1:
    type: Allocations.Flavor
    properties:
      flavor: small
  Allocations_Image_1:
    type: Allocations.Image
    properties:
      image: ubuntu
  Allocations_Network_1:
    type: Allocations.Network
    properties:
      networkType: existing
      constraints:
        - tag: alternative-net
  Idem_AWS_EC2_INSTANCE_1:
    type: Idem.AWS.EC2.INSTANCE
    properties:
      name: ${input.instance_name}
      region: ${resource.Allocations_Compute_1.selectedRegion.id}
      account: ${resource.Allocations_Compute_1.selectedCloudAccount.name}
      image_id: ${resource.Allocations_Image_1.selectedImageId}
      availability_zone: ${resource.Allocations_Compute_1.selectedPlacementCompute.id}
      instance_type: ${resource.Allocations_Flavor_1.selectedInstanceTypeName}
      subnet_id: ${resource.Allocations_Network_1.selectedSubnet.id}

Подготовка экземпляра EC2 с помощью тома AWS

В следующем шаблоне представлен способ подготовки экземпляра EC2 с подключенным томом. В этом примере подготавливаются два экземпляра на основе подключаемого модуля и том AWS на основе подключаемого модуля. Том AWS подключается к одному из экземпляров и шифруется с помощью классического ключа KMS.

Том AWS и ключ KMS ссылаются на одни и те же помощники по выделению при помощи привязок свойств. Привязки свойств обеспечивают подготовку ресурсов в нужной учетной записи и нужном регионе.

formatVersion: 1
inputs:
  instance_name:
    type: string
  instance2_name:
    type: string
  volume_name:
    type: string
resources:
  Allocations_Compute_1:
    type: Allocations.Compute
    properties:
      constraints:
        - tag: env:dev
  Allocations_Flavor_1:
    type: Allocations.Flavor
    properties:
      flavor: small
  Allocations_Image_1:
    type: Allocations.Image
    properties:
      image: ubuntu
  Allocations_Network_1:
    type: Allocations.Network
    properties:
      networkType: existing
      constraints:
        - tag: alternative-net
  Idem_AWS_EC2_INSTANCE_1:
    type: Idem.AWS.EC2.INSTANCE
    properties:
      name: ${input.instance_name}
      region: ${resource.Allocations_Compute_1.selectedRegion.id}
      account: ${resource.Allocations_Compute_1.selectedCloudAccount.name}
      image_id: ${resource.Allocations_Image_1.selectedImageId}
      availability_zone: ${resource.Allocations_Compute_1.selectedPlacementCompute.id}
      instance_type: ${resource.Allocations_Flavor_1.selectedInstanceTypeName}
      subnet_id: ${resource.Allocations_Network_1.selectedSubnet.id}
  Idem_AWS_EC2_INSTANCE_2:
    type: Idem.AWS.EC2.INSTANCE
    properties:
      name: ${input.instance2_name}
      region: ${resource.Allocations_Compute_1.selectedRegion.id}
      account: ${resource.Allocations_Compute_1.selectedCloudAccount.name}
      image_id: ${resource.Allocations_Image_1.selectedImageId}
      availability_zone: ${resource.Allocations_Compute_1.selectedPlacementCompute.id}
      instance_type: ${resource.Allocations_Flavor_1.selectedInstanceTypeName}
      subnet_id: ${resource.Allocations_Network_1.selectedSubnet.id}
      block_device_mappings:
        - volume_id: ${resource.Idem_AWS_EC2_VOLUME_1.resource_id}
          device_name: /dev/sdb
  Idem_AWS_EC2_VOLUME_1:
    type: Idem.AWS.EC2.VOLUME
    properties:
      name: ${input.volume_name}
      region: ${resource.Allocations_Compute_1.selectedRegion.id}
      account: ${resource.Allocations_Compute_1.selectedCloudAccount.name}
      availability_zone: ${resource.Allocations_Compute_1.selectedPlacementCompute.id}
      size: 10
      volume_type: io2
      iops: 100
      encrypted: true
      kms_key_id: ${resource.Cloud_Service_AWS_KMS_Key_1.key_id}
  Cloud_Service_AWS_KMS_Key_1:
    type: Cloud.Service.AWS.KMS.Key
    properties:
      region: ${resource.Allocations_Compute_1.selectedRegion.id}
      account: ${resource.Allocations_Compute_1.selectedCloudAccount.name}