文档首页 > > API参考> API(推荐)> 生命周期管理> 创建云服务器(按需)

创建云服务器(按需)

分享
更新时间: 2019/09/12 GMT+08:00

功能介绍

创建一台或多台按需付费方式的云服务器。

调用接口前,您需要了解API认证鉴权

调用接口前,您需要提前获取到地区和终端节点

弹性云服务器的登录鉴权方式包括两种:密钥对、密码。为安全起见,推荐使用密钥对方式。

  • 密钥对

    指使用密钥对作为弹性云服务器的鉴权方式。

    接口调用方法:使用key_name字段,指定弹性云服务器登录时使用的密钥文件。

  • 密码

    指使用设置初始密码方式作为弹性云服务器的鉴权方式,此时,您可以通过用户名密码方式登录弹性云服务器,Linux操作系统时为root用户的初始密码,Windows操作系统时为Administrator用户的初始密码。

    接口调用方法:

    • 方法一(推荐):使用adminPass字段,指定管理员帐号的初始登录密码,adminPass字段的使用方法请参见表3
      说明:

      此时,对于安装Cloud-init镜像的Linux云服务器,若指定user_data字段,则该adminPass字段无效;对于安装Cloudbase-init镜像的windows云服务器,若指定元数据metadata字段中的admin_pass,则该adminPass字段无效。

    • 方法二:
      • 对于镜像已安装Cloud-init的Linux云服务器:使用user_data字段进行注入,具体请参见表3
      • 对于镜像已安装Cloudbase-init的Windows云服务器:使用元数据metadata字段中的admin_pass进行注入,具体请参见表11
      • 对于镜像未安装Cloud-init或Cloudbase-init的云服务器:同方法一,使用adminPass字段进行注入,具体请参见表3

URI

POST /v1/{project_id}/cloudservers

参数说明请参见 表1
表1 参数说明

参数

是否必选

描述

project_id

项目ID。

获取方法请参见获取项目ID

请求消息

请求参数

请求参数如表2所示。

表2 请求参数

参数

是否必选

参数类型

描述

server

Object

弹性云服务器信息,请参见表3

表3 创建云服务器请求参数说明

参数

是否必选

参数类型

描述

imageRef

String

待创建云服务器的系统镜像,需要指定已创建镜像的ID,ID格式为通用唯一识别码(Universally Unique Identifier,简称UUID)。

flavorRef

String

待创建云服务器的系统规格的ID。

已上线的规格请参见《弹性云服务器产品介绍》的“实例类型与规格”章节。

name

String

云服务器名称。

取值范围:

  • 只能由中文字符、英文字母、数字及“_”、“-”、“.”组成,且长度为[1-64]个字符。
  • 创建的云服务器器数量(count字段对应的值)大于1时,为区分不同云服务器,创建过程中系统会自动在名称后加“-0000”的类似标记。故此时名称的长度为[1-59]个字符。
    说明:

    云服务器虚拟机内部(hostname)命名规则遵循 RFC 952RFC 1123命名规范,建议使用a-zA-z或0-9以及中划线"-"组成的名称命名,"_"将在弹性云服务器内部默认转化为"-"。

user_data

String

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

更多关于待注入用户数据的信息,请参见《弹性云服务器用户指南 》的“用户数据注入”章节。

约束:

  • 注入内容,需要进行base64格式编码。注入内容(编码之前的内容)最大长度32KB。
  • 创建密码方式鉴权的Linux弹性云服务器时,该字段可为root用户注入自定义初始化密码,具体注入密码的使用方法请参见功能介绍

示例(base64编码前):

  • Linux弹性云服务器
    #! /bin/bash
    echo user_test >> /home/user.txt 
  • Windows弹性云服务器
    rem cmd
    echo 111 > c:\aaa.tx

adminPass

String

如果需要使用密码方式登录云服务器,可使用adminPass字段指定云服务器管理员帐户初始登录密码。其中,Linux管理员帐户为root,Windows管理员帐户为Administrator。

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

key_name

String

如果需要使用SSH密钥方式登录云服务器,请指定已创建密钥的名称。

密钥可以通过密钥创建接口进行创建 创建和导入SSH密钥(请参见),或使用SSH密钥查询接口查询已有的密钥(请参见查询SSH密钥列表 )。

vpcid

String

待创建云服务器所属虚拟私有云(简称VPC),需要指定已创建VPC的ID,UUID格式。

nics

Array of Object

待创建云服务器的网卡信息。详情请参见表4

约束:

  • 网卡对应的子网(subnet)必须属于vpcid对应的VPC。
  • 当前单个云服务器支持最多挂载12张网卡。

publicip

Object

配置云服务器的弹性IP信息,弹性IP有三种配置方式。

  • 不使用(无该字段)
  • 自动分配,需要指定新创建弹性IP的信息
  • 使用已有,需要指定已创建弹性IP的信息

详情请参见表1

count

Integer

创建云服务器数量。

约束:

  • 不传该字段时默认取值为1。
  • 租户的配额足够时,最大值为500。

isAutoRename

Boolean

当批量创建弹性云服务器时,云服务器名称是否允许重名,当count大于1的时候该参数生效。默认为True。

  • True,表示允许重名。
  • False,表示不允许重名。

root_volume

Object

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

详情请参见表5

data_volumes

Array of Object

云服务器对应数据盘相关配置。每一个数据结构代表一块待创建的数据盘。

约束:目前新创建的弹性云服务器最多可挂载23块数据盘。

详情请参见表6

security_groups

Array of Object

云服务器对应安全组信息。

约束:当该值指定为空时,默认给云服务器绑定default安全组。

详情请参见表2

availability_zone

String

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

请参考地区和终端节点获取。也可参考接口 查询可用区列表 获取。

extendparam

Object

创建云服务器附加信息。

详情请参见表8

metadata

Object

创建云服务器元数据。

详情请参见表11

os:scheduler_hints

Object

云服务器调度信息。

详情请参见表12

tags

Array of String

弹性云服务器的标签。

标签的格式为“key.value”。其中,key的长度不超过36个字符,value的长度不超过43个字符。

标签命名时,需满足如下要求:

  • 标签的key值只能包含大写字母(A~Z)、小写字母(a~z)、数字(0-9)、下划线(_)、中划线(-)以及中文字符。
  • 标签的value值只能包含大写字母(A~Z)、小写字母(a~z)、数字(0-9)、下划线(_)、中划线(-)、小数点(.)以及中文字符。
说明:
  • 创建弹性云服务器时,一台弹性云服务器最多可以添加10个标签。
  • 公有云新增server_tags字段,该字段与tags字段功能相同,支持的key、value取值范围更广,建议使用server_tags字段。

server_tags

Array of String

弹性云服务器的标签。详情请参见表13

说明:
  • 创建弹性云服务器时,一台弹性云服务器最多可以添加10个标签。
  • 公有云新增server_tags字段,该字段与tags字段功能相同,支持的key、value取值范围更广,建议使用server_tags字段。

description

String

云服务器描述信息,默认为空字符串。

  • 长度最多允许85个字符。
  • 不能包含“<” 和 “>”。
表4 nics字段数据结构说明

参数

是否必选

参数类型

描述

subnet_id

String

待创建云服务器所在的子网信息。

需要指定vpcid对应VPC下已创建的子网(subnet)的网络ID,UUID格式。

ip_address

String

待创建云服务器网卡的IP地址,IPv4格式。

约束:

  • 不填或空字符串,默认在子网(subnet)中自动分配一个未使用的IP作网卡的IP地址。
  • 若指定IP地址,该IP地址必须在子网(subnet)对应的网段内,且未被使用。

ipv6_enable

Boolean

是否支持ipv6。

取值为true时,标识此网卡支持ipv6。

ipv6_bandwidth

字典数据结构

绑定的共享带宽ID。

表5 root_volume字段数据结构说明

参数

是否必选

参数类型

描述

volumetype

String

云服务器系统盘对应的磁盘类型,需要与系统所提供的磁盘类型相匹配。

  • SATA:普通IO磁盘类型。
  • SAS:高IO磁盘类型。
  • SSD:超高IO磁盘类型。
  • co-p1:高IO (性能优化Ⅰ型)
  • uh-l1:超高IO (时延优化)
说明:

对于HANA云服务器、HL1型云服务器、HL2型云服务器,需使用co-p1和uh-l1两种磁盘类型。对于其他类型的云服务器,不能使用co-p1和uh-l1两种磁盘类型。

size

Integer

系统盘大小,容量单位为GB, 输入大小范围为[1,1024]。

约束:

  • 系统盘大小取值应不小于镜像支持的系统盘的最小值(镜像的min_disk属性)。
  • 若该参数没有指定或者指定为0时,系统盘大小默认取值为镜像中系统盘的最小值(镜像的min_disk属性)。
    说明:

    镜像系统盘的最小值(镜像的min_disk属性)可在控制台中点击镜像详情查看。或通过调用“查询镜像详情(OpenStack原生)”API获取,详细操作请参考《镜像服务API参考》中“查询镜像详情(OpenStack原生)”章节。

extendparam

字典数据结构

磁盘的产品信息。

详情请参见创建磁盘的extendparam字段数据结构说明

hw:passthrough

Boolean

使用SDI规格创建虚拟机时请关注该参数,如果该参数值为true,说明创建的为scsi类型的卷

说明:

此参数为boolean类型,若传入非boolean类型字符,程序将按照false方式处理。

表6 data_volumes字段数据结构说明

参数

是否必选

参数类型

描述

volumetype

String

云服务器数据盘对应的磁盘类型,需要与系统所提供的磁盘类型相匹配。

磁盘类型枚举值:

  • SATA:普通IO磁盘类型。
  • SAS:高IO磁盘类型。
  • SSD:超高IO磁盘类型。
  • co-p1:高IO (性能优化Ⅰ型)
  • uh-l1:超高IO (时延优化)磁盘类型。
说明:

对于HANA云服务器、HL1型云服务器、HL2型云服务器,需使用co-p1和uh-l1两种磁盘类型。对于其他类型的云服务器,不能使用co-p1和uh-l1两种磁盘类型。

size

Integer

数据盘大小,容量单位为GB,输入大小范围为[10,32768]。

shareable

Boolean

是否为共享磁盘。true为共享盘,false为普通云硬盘。

说明:

该字段已废弃,请使用multiattach。

multiattach

Boolean

创建共享磁盘的信息。

  • true:创建的磁盘为共享盘。
  • false:创建的磁盘为普通云硬盘。
说明:

shareable当前为废弃字段,如果确实需要同时使用shareable字段和multiattach字段,此时,请确保两个字段的参数值相同。当不指定该字段时,系统默认创建普通云硬盘。

hw:passthrough

Boolean

数据卷是否使用SCSI锁。

  • true表示云硬盘的设备类型为SCSI类型,即允许ECS操作系统直接访问底层存储介质。支持SCSI锁命令。
  • false表示云硬盘的设备类型为VBD (虚拟块存储设备 , Virtual Block Device)类型,即为默认类型,VBD只能支持简单的SCSI读写命令。
  • 该字段不存在时,云硬盘默认为VBD类型。
说明:

此参数为boolean类型,若传入非boolean类型字符,程序将按照【false】方式处理。

extendparam

Object

磁盘的产品信息。

详情请参见表7

data_image_id

String

数据镜像的ID,UUID格式。

如果使用数据盘镜像创建数据盘,则data_image_id为必选参数,且不支持使用metadata。

metadata

Object

创建云硬盘的metadata信息,metadata中的key和value长度不大于255个字节。

仅在创建加密盘时使用metadata字段。

如果使用数据盘镜像创建数据盘,不支持使用metadata。

详情请参见创建磁盘的metadata字段数据结构说明

响应消息

参数

是否必选

参数类型

描述

job_id

String

提交任务成功后返回的任务ID,用户可以使用该ID对任务执行情况进行查询。如何根据job_id来查询Job的执行状态,请参考5.8 查询Job状态。

serverIds

Array of String

云服务器ID列表。

说明:

通过云服务器ID查询云服务器详情 ,若返回404 可能云服务器还在创建或者已经创建失败。

message

String

出现错误时,返回的错误消息。

code

String

出现错误时,返回的错误码。

details

列表数据结构

任务异常时错误详情,请参见表7

该信息主要包含任务异常时的细化错误编码和错误描述信息,便于开发者读取该字段信息处理任务异常。

表7 details数据结构说明

参数

是否必选

参数类型

描述

message

String

出现错误时,返回的错误消息。

code

String

出现错误时,返回的错误码。

请求示例

公有云平台提供了丰富的云服务器类型,不同类型、不同规格的云服务器“规格名称/ID”不同。使用接口方式创建不同规格的云服务器时,请求体是相同的,您只需根据请求消息中的参数说明,更换如下请求示例中的参数值即可。

  • 假设需要创建规格ID为“s3.xlarge.2”的云服务器,其中,镜像ID为“1189efbf-d48b-46ad-a823-94b942e2a000”、磁盘类型为“SATA”、VPC ID为“0dae26c9-9a70-4392-93f3-87d53115d171”,请求示例参考如下:
    {
        "server": {
            "availability_zone":"az1-dc1",
            "name": "newserver", 
            "imageRef": "1189efbf-d48b-46ad-a823-94b942e2a000", 
            "root_volume": {
                "volumetype": "SATA"
            }, 
            "data_volumes": [
                {
                    "volumetype": "SATA", 
                    "size": 100,
                    "extendparam":{
                        "snapshotId": "ef020653-9742-4d24-8672-10af42c9702b"
                    }
                }, 
                {
                    "volumetype": "SSD", 
                    "size": 100,
                    "multiattach": true,
                    "hw:passthrough": "true"
                }
            ], 
            "flavorRef": "s3.xlarge.2", 
            "vpcid": "0dae26c9-9a70-4392-93f3-87d53115d171", 
            "security_groups": [
                {
                    "id": "507ca48f-814c-4293-8706-300564d54620"
                }
            ], 
            "nics": [
                {
                    "subnet_id": "157ee789-03ea-45b1-a698-76c92660dd83"
                }
            ], 
            "publicip": {
                "id": "publicip_123", 
                "eip": {
                    "iptype": "5_bgp",
                    "bandwidth": {
                        "size": 10, 
                        "sharetype": "PER"
                    }
                }
            }, 
            "key_name": "sshkey-123", 
            "count": 1, 
            "extendparam": { 
                    "enterprise_project_id": "f8e0ecc8-3825-4ee8-9596-fb4258ffdcbb"
            },
            "server_tags": [
                {
                    "key": "key1",
                    "value": "value1"
                }
            ],
            "metadata": {
                   "op_svc_userid": "8ea65f4099ba412883e2a0da72b96873",
                   "agency_name": "test"
            }
        }
    }

响应示例

{
    "job_id": "93c82933d6b7827d3016b8771f2070873"
}

{
    "error": {
        "message": "request body is illeagal.", 
        "code": "Ecs.0005"
    }
}

{
    "error": {
        "message": "privateIp [%s] is not in this subnet [%s]",
        "code": "Ecs.0005",
        "details": [
            {
                "code": "Ecs.0039"
            }
        ]
    }
}

返回值

请参考通用请求返回值

错误码

请参考错误码说明

分享:

    相关文档

    相关产品

文档是否有解决您的问题?

提交成功!

非常感谢您的反馈,我们会继续努力做到更好!

反馈提交失败,请稍后再试!

*必选

请至少选择或填写一项反馈信息

字符长度不能超过200

提交反馈 取消

如您有其它疑问,您也可以通过华为云社区问答频道来与我们联系探讨

跳转到云社区