快速创建ECS实例
创建了安全组之后,就可以来创建ECS的实例了。
ROS提供了两种资源可以生成ECS的实例,一种资源是ALIYUN::ECS::InstanceClone
, 它支持快速的从已有的ECS实例克隆一个资源,另外一种是ALIYUN::ECS::Instance
支持按照配置生成一个ECS资源。
下面通过简单的介绍如何创建一个ECS实例。
通过已有的ECS实例进行克隆
通过ALIYUN::ECS::InstanceClone
的属性定义。只有一个必选参数就是SourceInstanceId
,这个资源将会拷贝源实例:
- 实例规格
- 镜像ID
- 安全组ID
- 系统盘类型,名称,描述
- 数据盘类型,名称,描述,如果从快照创建,则从快照拷贝
- 网络配置,网络付费类型,网络带宽
- VPC类型的拷贝VSwitch
除了上面的属性,依然支持指定下面的属性,如果指定下面的属性就会覆盖默认属性的配置:
- 实例名称
- 实例描述
- 安全组ID
- 实例密码
- Tags配置
对于密码属性,设置NoEcho
为True,则显示为密码。
{
"ROSTemplateFormatVersion": "2015-09-01",
"Parameters": {
"Password": {
"Description": "实例的密码。8-30个字符,必须同时包含三项(大、小写字母,数字和特殊符号)。支持以下特殊字符:( ) ` ~ ! @ # $ % ^ & * - + = | { } [ ] : ; ' < > , . ? /",
"NoEcho": true,
"Type": "String"
},
"SourceInstanceId": {
"Description": "源ECS InstanceId拷贝",
"Type": "String"
}
},
"Resources": {
"InstanceClone": {
"Properties": {
"Password": {
"Ref": "Password"
},
"SourceInstanceId": {
"Ref": "SourceInstanceId"
}
},
"Type": "ALIYUN::ECS::InstanceClone"
}
},
"Outputs": {
"InnerIp": {
"Description": "Inner IP address of the specified instance. Only for classical instance.",
"Value": {
"Fn::GetAtt": [
"InstanceClone",
"InnerIp"
]
}
},
"InstanceId": {
"Description": "The instance id of created ecs instance",
"Value": {
"Fn::GetAtt": [
"InstanceClone",
"InstanceId"
]
}
},
"PrivateIp": {
"Description": "Private IP address of created ecs instance. Only for VPC instance.",
"Value": {
"Fn::GetAtt": [
"InstanceClone",
"PrivateIp"
]
}
},
"PublicIp": {
"Description": "Public IP address of created ecs instance.",
"Value": {
"Fn::GetAtt": [
"InstanceClone",
"PublicIp"
]
}
},
"ZoneId": {
"Description": "Zone id of created instance.",
"Value": {
"Fn::GetAtt": [
"InstanceClone",
"ZoneId"
]
}
}
}
}
使用模板创建一个ECS实例
创建一个ECS实例,有几个必选属性:
- SecurityGroupId: 安全组Id
- InstanceType: 实例规格, 参考ROS控制台的
关键帮助 -> ECS实例规格
- ImageId: 镜像Id, 参考ROS控制台的
关键帮助 -> ECS镜像
- VpcId: 当前实例所属的VPC
- VSwitchId: 当前实例所属的VSwitchId
下面的模板将创建一个ECS的实例,本样例中限制了实例的规格为ecs.t1.xsmall
和ecs.t1.small
, 您也可以添加 "ecs.s3.large" 到AllowedValues中,新添加一种实例的规格来创建,或者您可以直接删除AllowedValues
, 直接选用期望的实例规格
{
"ROSTemplateFormatVersion" : "2015-09-01",
"Description": "一个简配的ecs实例,包括一个安全组,用户只需要指定imageId",
"Parameters" : {
"ImageId": {
"Type" : "String",
"Description": "镜像文件 ID,表示启动实例时选择的镜像资源"
},
"InstanceType": {
"Type": "String",
"Description": "实例的资源规格",
"AllowedValues": [
"ecs.t1.xsmall",
"ecs.t1.small"
]
},
"SecurityGroupId": {
"Type": "String",
"Description": "安全组Id"
}
},
"Resources" : {
"WebServer": {
"Type": "ALIYUN::ECS::Instance",
"Properties": {
"ImageId" : {"Ref": "ImageId"},
"InstanceType": {"Ref": "InstanceType"},
"SecurityGroupId": {"Ref": "SecurityGroupId"}
}
}
},
"Outputs": {
"InstanceId": {
"Value" : {"Fn::GetAtt": ["WebServer","InstanceId"]}
},
"PublicIp": {
"Value" : {"Fn::GetAtt": ["WebServer","PublicIp"]}
}
}
}