クラウド管理者は、Amazon Web Services (AWS) プラグインを利用して、インフラストラクチャの構築時にプラグイン ベースの 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 対多で設定でき、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 つのプラグイン ベースの インスタンスと 1 つのプラグイン ベースの AWS ボリュームをプロビジョニングします。AWS ボリュームはインスタンスの 1 つに接続され、従来の 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}