作为云管理员,您可以在构建基础架构时利用 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 实例。
可以通过一对多配置使用帮助程序,即一个帮助程序为多个资源提供分配逻辑,例如区域放置。之后,可以根据由云提供商定义并由关联插件支持的完整属性列表进一步自定义资源。
在此示例中,您使用计算帮助程序、特定实例帮助程序、映像帮助程序以及网络帮助程序。
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 实例。在此示例中,您将置备两个基于插件的实例和一个基于插件的 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}