通过资源编排创建一个ECS实例

快速创建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.xsmallecs.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"]}
    }
  }
}
上一篇:PHP技术分享--获取图片宽度高度


下一篇:PHP技术分享-浙备号自动提取数字