更新时间:2024-04-17 GMT+08:00

ECS.CloudServer

模型说明

ECS.CloudServer用于部署IaaS层的弹性云服务器,由CPU、内存、镜像、云硬盘组成的一种可随时获取、弹性可扩展的计算云服务器。

模型属性

表1 模型定义属性说明

属性

是否必选

描述

vpcId

云服务器所属VPC的ID

参数类型:Cloud.VPC.VPC.Id

取值说明:支持使用已有或新建虚拟私有云的ID。若使用新建的,需在模板中定义VPC对象并建立依赖关系。建议拖拽元素到VPC内自动生成。

取值约束:满足UUID规则,最大64位

使用建议:1. 将该字段通过get_input函数传入,通过在AOS界面创建堆栈填写输入参数时可自动选择2. 通过get_reference获取由本堆栈创建的VPC.VPC元素 3. 在VPC服务界面获取已经创建好的VPC的ID。

mountedVolumes

共享磁盘批量挂载到弹性云服务器,但是非共享盘只能挂载一个。

参数类型:ECS.MountedVolumes数组

取值说明:ECS.MountedVolumes类型数组

取值约束:满足ECS.MountedVolumes类型定义

imageId

云服务器使用的镜像ID

参数类型:Cloud.ECS.Image.Id

取值说明:待创建云服务器的系统镜像,需要指定已创建镜像的ID,ID格式为UUID。

取值约束:满足UUID规则,最大64位

使用建议:1. 建议通过get_input方式定义以便在使用模板时可以选择2. 查阅ECS服务资料获取

serverTags

弹性云服务器的标签

参数类型:ECS.ServerTags数组

取值约束:最多可以添加10个标签,标签的key值只能包含大写字母(A~Z)、小写字母(a~z)、数字(0-9)、下划线(_)、中划线(-)。标签的value值只能包含大写字母(A~Z)、小写字母(a~z)、数字(0-9)、下划线(_)、中划线(-)、小数点(.)。

instances

创建云服务器数量

参数类型:integer

取值说明:实例数当前支持1-500

默认值:1

取值约束:范围在[1, 500]之间

使用建议:根据规格按需选择

securityGroups

云服务器所使用的安全组id的数组

参数类型:ECS.SecurityGroup数组

取值说明:ECS.SecurityGroup类型数组

取值约束:满足ECS.SecurityGroup类型定义

flavor

云服务器的规格

参数类型:Cloud.ECS.Flavor.Name

取值说明:待创建云服务器的系统规格的ID

取值约束:满足flavor格式定义

使用建议:建议通过get_input方式定义以便在使用模板时可以选择或者查阅ECS服务资料获取

serverGroupId

主机所属的云服务器组ID

参数类型:Cloud.ECS.ServerGroup.Id

取值说明:当前租户下已存在的云服务器组ID

取值约束:当前租户下已存在的云服务器组ID

使用建议:添加到已有组的,直接使用云服务器组ID;如果是在同一个编排文件中新建云服务器组再添加的,使用get_reference来自动获取

nics

云服务器对应的网卡信息

参数类型:ECS.NICS数组

取值说明:ECS.NICS类型数组

取值约束:满足ECS.NICS类型定义,数组长度最小为1,最大为12

rootVolume

云服务器对应系统盘相关配置。

参数类型:ECS.RootVolume

取值说明:ECS.RootVolume类型

默认值:{u'volumeType': u'unset', u'size': 40}

取值约束:满足ECS.RootVolume类型定义

userData

创建云服务器过程中待注入用户数据。支持注入文本、文本文件或gzip文件。

参数类型:string

取值说明:用户自定义

取值约束:注入内容,需要进行base64格式编码。注入内容(编码之前的内容)最大长度32KB。当key_name没有指定时,user_data注入的数据默认为云服务器root账号的登录密码。创建密码方式鉴权的Linux弹性云服务器时为必填项,为root用户注入自定义初始化密码。

使用建议:根据规格按需选择,更多关于待注入用户数据的信息,请参见《弹性云服务器 用户指南》的“用户数据注入”章节。

availabilityZone

云服务器对应可用区信息

参数类型:Cloud.ECS.AvailabilityZone.Name

取值说明:待创建云服务器所在的可用区,需要指定可用区(AZ)的名称。

取值约束:根据所属区域选择。

使用建议:将该字段通过get_input函数传入,通过在AOS界面创建堆栈填写输入参数时可自动选择。

dataVolumes

云服务器对应数据盘相关配置。

参数类型:ECS.DataVolume数组

取值说明:ECS.DataVolume类型数组

取值约束:满足ECS.DataVolume类型定义

name

云服务器名称

参数类型:string

取值说明:用户自定义,如myvm

取值约束:长度限制:1-64,租户唯一,正则规范要求:{"regex":"^[a-zA-Z][0-9a-zA-Z-_]*$","min_length":1,"max_length":64}

使用建议:自定义

publicIP

配置云服务器的弹性IP信息。

参数类型:ECS.PublicIP

取值说明:ECS.PublicIP类型

默认值:{}

取值约束:满足ECS.PublicIP类型定义

adminPwd

指定云服务器管理员账户初始登录密码。

参数类型:password

取值说明:Linux管理员账户为root,Windows管理员账户为Administrator。密钥登录与密码登录只能选择其中一种。

取值约束:1. 长度为8-26位。密码至少必须包含大写字母、小写字母、数字和特殊字符(!@$%^-_=+[{}]:,./?)中的三种。2. 密码不能包含用户名或用户名的逆序。3. Windows系统密码不能包含用户名或用户名的逆序,不能包含用户名中超过两个连续字符的部分。

使用建议:建议通过get_input方式输入

sshKeyName

登录使用的ssh密钥对

参数类型:Cloud.ECS.KeyPair.Name

取值说明:需要在ECS服务界面提前创建,密钥登录与密码登录只能选择其中一种。

取值约束:长度限制:1-64,租户唯一,正则规范要求:{"regex":"^[a-zA-Z][0-9a-zA-Z-_]*$","min_length":1,"max_length":64}

使用建议:1. 建议通过get_input方式定义以便在使用模板时可以选择 2. 在ECS界面查询后输入

关联关系

表2 关联关系说明

关系说明

关联节点

被包含关系

VPC.VPC

关联关系

VPC.SecurityGroup

关联关系

VPC.Subnet

关联关系

ECS.KeyPair

关联关系

VPC.EIP

输出

属性

参数类型

描述

publicIps

string

云服务器实例的弹性IP数组

privateIps

string

云服务器实例的私网IP数组

floatingIpIds

string

云服务器实例的弹性IP的ID数组

refID

数组

创建的所有弹性云服务器实例ID列表

refName

数组

创建的所有弹性云服务器实例名称列表

blueprint样例

以编排CloudServer资源的blueprint为例:

  • 在现有的VPC、Subnet下创建subnet
    tosca_definitions_version: cloud_tosca_version_1_0
    inputs:
      ecs-name:
        default: "my-cloudserver"
      ecs-image:
        default: "327946b5-e954-42c3-949a-3312688c9269"
      ecs-flavor:
        default: "c2.large"
      vpc-id:
        default: "ba6e4347-99d2-4649-b114-85c28d3d71b0"
      az:
        default: "az1.dc1"
      subnet-vpcid:
        default: "3be61f68-9bfc-41bf-8f5e-66c57122f270"
      ecs-volumetype:
        default: "SATA"
      ecs-sshKeyName:
        default: "KeyPair-magento"
    node_templates:
      my-ecs:
        type: Cloud.ECS.CloudServer
        properties:
          name: {get_input: ecs-name}
          instances: 2
          imageId: {get_input: ecs-image}
          flavor: {get_input: ecs-flavor}
          vpcId: {get_input: vpc-id}
          availabilityZone: {get_input: az}
          nics:
            - subnetId: {get_input: subnet-vpcid}
          rootVolume: 
            volumeType: {get_input: ecs-volumetype}
          dataVolumes:
            - volumeType: SATA
              size: 100
          sshKeyName: {get_input: ecs-sshKeyName}
  • 与VPC、Subnet联动,在新创建的VPC、Subnet下自动创建CloudServer

    如果您没有创建过VPC、Subnet,或不需要使用已有的VPC、Subnet,那么可以通过一个blueprint文件,同时创建VPC、Subnet和CloudServer,创建CloudServer时可以自动关联新创建的VPC和Subnet。如下示例所描述:

    • 在Subnet中加入依赖关系requirements,这样在blueprint执行时,会先创建Subnet所依赖的对象。
    • 在Subnet中的vpcId字段,取值,使用了get_attribute函数,来获取所创建的VPC(my-vpc)的响应属性refID。
    • 在CloudServer中的vpcId、nics的subnetId字段,取值,使用了get_attribute函数,来获取所创建的subnet(my-subnet)的响应属性refID。
    tosca_definitions_version: cloud_tosca_version_1_0
    inputs:
      ecs-name:
        default: "my-cloudserver"
      ecs-image:
        default: "327946b5-e954-42c3-949a-3312688c9269"
      ecs-flavor:
        default: "c2.large"
      ecs-volumetype:
        default: "SATA"
      az:
        default: "az1.dc1"
      subnet-name:
        default: "my-ecs-subnet2"
      subnet-cidr:
        default: "192.168.1.0/24"
      subnet-gateway:
        default: "192.168.1.1"
      vpc-name:
        default: "my-ecs-vpc2"
      vpc-cidr:
        default: "192.168.0.0/16"
    node_templates:
      my-ecs:
        type: Cloud.ECS.CloudServer
        properties:
          name: {get_input: ecs-name}
          instances: 1
          imageId: {get_input: ecs-image}
          flavor: {get_input: ecs-flavor}
          vpcId: {get_attribute: [my-vpc, refID]}
          availabilityZone: {get_input: az}
          nics:
            - subnetId: {get_attribute: [my-subnet, refID]}
          rootVolume: 
            volumeType: {get_input: ecs-volumetype}
          dataVolumes:
            - volumeType: SATA
              size: 100
        requirements:
          - nics.subnetId:
              node: my-subnet
        my-subnet:
        type: Cloud.VPC.Subnet
        properties:
          name: {get_input: subnet-name}
          cidr: {get_input: subnet-cidr}
          gateway: {get_input: subnet-gateway}
          dnsList: [114.114.114.115,114.114.114.114]
          vpcId: {get_attribute: [my-vpc, refID]}
          availabilityZone: {get_input: az}
        requirements:
          - vpcId:
              node: my-vpc
      my-vpc:
        type: Cloud.VPC.VPC
        properties:
          name: {get_input: vpc-name}
          cidr: {get_input: vpc-cidr}