L'amministratore del cloud può utilizzare il plug-in Amazon Web Services (AWS) per eseguire il provisioning delle risorse delle istanze EC2 basate su plug-in durante la creazione dell'infrastruttura. È inoltre possibile utilizzare gli helper di allocazione per specificare la logica di allocazione per le risorse delle istanze.

È possibile configurare facilmente le istanze di EC2 per supportare le esigenze dell'infrastruttura utilizzando le proprietà di AWS più recenti. Ad esempio, se si desidera ripristinare automaticamente un'istanza se il controllo dello stato non riesce, è possibile utilizzare la proprietà auto_recovery_enabled nel modello durante il provisioning.

Per ulteriori informazioni sui plug-in e sull'allocazione in VMware Aria Automation, vedere Progettazioni e distribuzioni basate su plug-in in Automation Assembler.

Proprietà dell'istanza di EC2

Per le risorse delle istanze di EC2 basate su plug-in, sono necessarie le proprietà seguenti.

Proprietà Descrizione
name Il nome dell'istanza.
region La regione in cui verrà distribuita l'istanza di.
account

Account cloud di AWS in cui il team distribuisce i modelli. Per ulteriori informazioni, vedere Creazione di un account cloud di Amazon Web Services in VMware Aria Automation.

image_id ID dell'AMI da utilizzare per l'istanza.

La sezione seguente contiene modelli di esempio per il provisioning delle istanze di EC2.

Provisioning di un'istanza di EC2 semplice

Il modello seguente illustra come eseguire il provisioning di un'istanza di EC2 con valori configurati staticamente per tutte le relative proprietà.

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

Provisioning di un'istanza di EC2 con gli helper di allocazione

Il modello seguente illustra come eseguire il provisioning di un'istanza di EC2 utilizzando gli helper di allocazione.

È possibile utilizzare helper in una configurazione one-to-many in cui un helper fornisce la logica di allocazione, ad esempio il posizionamento della zona, per diverse risorse. È quindi possibile personalizzare ulteriormente le risorse in base all'elenco completo delle proprietà definite dal provider di cloud e supportate dal plug-in associato.

In questo esempio, viene utilizzato un helper di elaborazione, un helper di caratteristiche, un helper di immagini e un helper di rete.

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}

Provisioning di un'istanza di EC2 con un volume AWS

Il modello seguente illustra come eseguire il provisioning di un'istanza di EC2 con un volume collegato. In questo esempio viene eseguito il provisioning di due istanze basate su plug-in e un volume AWS basato su plug-in. Il volume AWS è collegato a una delle istanze e viene crittografato con una chiave KMS classica.

Il volume AWS e la chiave KMS fanno entrambi riferimento agli stessi helper di allocazione tramite l'uso di binding di proprietà. L'utilizzo di binding di proprietà garantisce che le risorse vengano sottoposte a provisioning nell'area di accesso e nella regione corrette.

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}