클라우드 관리자는 AWS(Amazon Web Services) 플러그인을 활용하여 인프라를 구축할 때 플러그인 기반 EC2 인스턴스를 프로비저닝할 수 있습니다. 할당 도우미를 사용하여 인스턴스에 대한 할당 논리를 제공할 수도 있습니다.

최신 AWS 속성을 사용하여 인프라 요구 사항을 지원하도록 EC2 인스턴스를 쉽게 구성할 수 있습니다. 예를 들어 상태 점검에 실패할 경우 인스턴스를 자동으로 복구하려면 프로비저닝 중에 템플릿에서 auto_recovery_enabled 속성을 사용할 수 있습니다.

VMware Aria Automation의 플러그인 및 할당에 대한 자세한 내용은 Automation Assembler의 플러그인 기반 설계 및 배포의 내용을 참조하십시오.

EC2 인스턴스 속성

플러그인 기반 EC2 인스턴스 리소스에는 다음 속성이 필요합니다.

속성 설명
name 인스턴스의 이름입니다.
region 인스턴스가 배포될 지역입니다.
account

팀에서 템플릿을 배포하는 AWS 클라우드 계정입니다. 자세한 내용은 VMware Aria Automation에서 Amazon Web Services 클라우드 계정 생성 항목을 참조하십시오.

image_id 인스턴스에 사용할 AMI의 ID입니다.

다음 섹션에는 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 인스턴스를 프로비저닝하는 방법을 보여줍니다.

도우미 1개로 여러 리소스에 할당 논리(예: 영역 배치)를 제공하는 일대다 구성으로 도우미를 사용할 수 있습니다. 그런 다음에는 클라우드 제공자가 정의하고 연결된 플러그인에서 지원하는 속성의 전체 목록에 따라 리소스를 추가로 사용자 지정합니다.

이 예에서는 계산 도우미, 버전 도우미, 이미지 도우미 및 네트워크 도우미를 사용합니다.

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}

AWS 볼륨을 사용하여 EC2 인스턴스 프로비저닝

다음 템플릿은 볼륨이 연결된 EC2 인스턴스를 프로비저닝하는 방법을 보여줍니다. 이 예에서는 플러그인 기반 인스턴스 2개와 플러그인 기반 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}