创建云服务器
功能介绍
创建一台按需弹性云服务器。
该接口在云服务器创建失败后不支持自动回滚。若需要自动回滚能力,可以调用POST /v1/{project_id}/cloudservers接口,具体使用请参见创建云服务器(按需)。
华为云不再提供Windows操作系统类型的镜像,该接口不支持指定Windows镜像创建弹性云服务器,包括公共镜像、私有镜像、共享镜像以及云市场镜像。
URI
POST /v2.1/{project_id}/servers
创建弹性云服务器接口别名:/v2/{project_id}/os-volumes_boot,该调用方式仅在OpenStack Client中使用,用户不推荐使用。
接口约束
- 该接口为原生接口,不支持整机镜像创建弹性云服务器功能。如需使用整机镜像创建弹性云服务器,请使用创建云服务器(按需)。
- 该接口为原生接口,不支持创建竞价实例。如需创建竞价实例请使用创建云服务器、创建云服务器(按需)。
- 该接口为原生接口,不支持创建包年/包月计费模式的实例。如需创建包年/包月计费模式的云服务器请使用创建云服务器。
- 使用该接口创建的云服务器,不支持在创建过程中绑定弹性公网IP,推荐使用创建云服务器(按需)创建云服务器并绑定弹性公网IP。
- 网络的三个参数(port、uuid和fixed_ip)中,port优先级最高;指定fixed_ip时必须指明uuid。
- 注入文件失败,将导致创建弹性云服务器失败。
- 使用镜像创建弹性云服务器时,存在下面约束:
- 不支持指定Host创建弹性云服务器。
- 租户如果对弹性云服务器中的卷进行了备份,则需要租户自行删除该卷所对应的快照等数据后,才能删除卷。
- 调整镜像创建的弹性云服务器规格时,不支持resource_type不同的flavor之间的规格调整。
- 云服务平台提供的原生接口/v2/{project_id}/servers 和 /v2.1/{project_id}/servers 是基于社区版OpenStack原生接口加固而成的,兼容社区版OpenStack原生接口。
较之社区版的OpenStack原生接口,在使用指定镜像的方式创建弹性云服务器时存在如下差异:
- 社区OpenStack原生接口:默认使用服务器本地磁盘创建弹性云服务器。
- 云服务平台提供的原生接口:为了保障可靠性,使用共享存储作为系统盘创建弹性云服务器。
该差异的具体表现为,当您使用提供的原生接口创建云服务器时:- 可以查询到云服务器挂载的系统盘信息。
- 云服务器的系统盘会占用云硬盘的配额。
- 不支持使用image过滤查询指定镜像方式创建的弹性云服务器。
- 指定卷创建弹性云服务器场景下,指定的卷与创建的弹性云服务器必须处于相同的AZ(availability_zone)。
- 用户创建弹性云服务器时在block_device_mapping_v2设置的device_name字段不会生效,系统会默认生成一个device_name。
- 请勿使用“provider:network_type”为“geneve”的网络来创建弹性云服务器。
“provider:network_type”为“geneve”时,表示裸金属服务器使用的内部高速网络。
- 如果使用密钥方式远程登录云服务器,请使用key_name参数。如果使用密码方式远程登录云服务器,可使用adminPass参数;对于Linux云服务器,还可使用user_data进行注入,对于Windows云服务器,还可通过元数据admin_pass进行注入。
请求消息
请求参数如表2所示。
参数 |
是否必选 |
参数类型 |
描述 |
---|---|---|---|
server |
是 |
Object |
弹性云服务器信息,参见表3。 |
os:scheduler_hints |
否 |
Object |
弹性云服务器调度信息,参见表8。裸金属服务器场景不支持。 |
参数 |
是否必选 |
参数类型 |
描述 |
---|---|---|---|
imageRef |
否 |
String |
镜像ID或者镜像资源的URL。
|
flavorRef |
是 |
String |
规格ID或URL。 规格ID示例:c3.2xlarge |
name |
是 |
String |
弹性云服务器名称。 取值范围:
|
metadata |
否 |
Map<String,String> |
弹性云服务器元数据。参见表4。
|
adminPass |
否 |
String |
如果需要使用密码方式登录云服务器,可使用adminPass字段指定云服务器管理员账户初始登录密码。其中,Linux管理员账户为root,Windows管理员账户为Administrator。 |
block_device_mapping_v2 |
否 |
Array of objects |
扩展属性,指定弹性云服务器存储设备的v2接口。是存储资源的新版本接口,指定卷场景不能批创弹性云服务器。参见表5。裸金属服务器场景不支持。 |
config_drive |
否 |
String |
扩展属性,开启后在弹性云服务器创建时挂载config_drive向弹性云服务器内部传递信息。 当前不支持该功能。 |
security_groups |
否 |
Array of objects |
扩展属性,指定弹性云服务器的安全组,默认为default。 指定network创建弹性云服务器时该字段有效。对于已存在端口,安全组请求无效。具体请参见表6。 |
networks |
是 |
Array of objects |
扩展属性,指定弹性云服务器的网卡信息。有多个租户网络时必须指定。参照表7。 |
key_name |
否 |
String |
扩展属性,指定keypair的名称。 |
user_data |
否 |
String |
创建云服务器过程中待注入实例自定义数据。支持注入文本、文本文件。
说明:
更多关于注入用户数据的信息,请参见《弹性云服务器用户指南 》的“用户数据注入”章节。 示例: base64编码前:
base64编码后:
|
availability_zone |
否 |
String |
扩展属性,指定弹性云服务器所在的AZ。 建议您在创建弹性云服务器时填入该参数,否则系统将选择默认的可用区。 |
return_reservation_id |
否 |
Boolean |
扩展属性,是否支持返回批量创建弹性云服务器的reservation_id。通过返回的reservation_id,可以过滤查询到本次创建的弹性云服务器。
|
min_count |
否 |
Integer |
扩展属性,表示创建弹性云服务器最小数量。 默认值为1。
说明:
指定镜像创建弹性云服务器时,支持使用该字段。 |
max_count |
否 |
Integer |
表示创建弹性云服务器最大数量。 默认值与min_count的取值一致。 约束:
说明:
指定镜像创建弹性云服务器时,支持使用该字段。 |
OS-DCF:diskConfig |
否 |
String |
diskConfig的方式,取值为AUTO、MANUAL。
当前不支持该功能。 |
description |
否 |
String |
扩展属性,表示弹性云服务器描述信息,默认为空字符串。 微版本2.19及以上版本支持。
|
auto_terminate_time |
否 |
String |
定时删除时间。 按照ISO8601标准表示,并使用UTC +0时间,格式为yyyy-MM-ddTHH:mm:ssZ。 如果秒(ss)取值不是 00,则自动取为当前分钟(mm)开始时。 最短定时删除时间为当前时间半小时之后。 最长定时删除时间不能超过当前时间三年。 示例:2020-09-25T12:05:00Z |
参数 |
是否必选 |
参数类型 |
描述 |
---|---|---|---|
admin_pass |
否 |
String |
Windows弹性云服务器Administrator用户的密码。
说明:
创建密码方式鉴权的Windows弹性云服务器时为必选字段。 |
参数 |
参数类型 |
是否必选 |
描述 |
---|---|---|---|
source_type |
String |
是 |
卷设备的源头类型,当前只支持volume、image、snapshot、blank类型。 当使用卷创建云服务器时,source_type设置为volume;当使用镜像创建云服务器时,source_type设置为image;当使用快照创建云服务器时,source_type设置为snapshot;当创建空数据卷时,source_type设置为blank。
说明:
当卷设备的源头类型为snapshot时,且boot_index为0,则该快照对应的云硬盘必须为系统盘。 |
destination_type |
String |
否 |
卷设备的目标类型,当前仅支持volume类型。
|
guest_format |
String |
否 |
local文件系统格式,例如:swap, ext4。 当前不支持该功能。 |
device_name |
String |
否 |
卷设备名称。
说明:
该字段已经废弃。 用户指定的device_name不会生效,系统会默认生成一个device_name。 |
delete_on_termination |
Boolean |
否 |
删除弹性云服务器时,是否删除卷,默认值false。
|
boot_index |
String |
否 |
启动标识,“0”代表启动盘,“-1”代表非启动盘。 不传该字段时默认取值为“-1”。
说明:
当卷设备的源头类型全为volume时,boot_index的值有一个为0。 |
uuid |
String |
否 |
|
volume_size |
Integer |
否 |
卷大小,整数,在source_type是image或blank,destination_type是volume的时候必选。 单位为GB。 |
volume_type |
String |
否 |
卷类型,在source_type是image,destination_type是volume时建议填写。 卷类型取值范围请参考 EVS 服务 磁盘类型介绍 。 |
参数 |
是否必选 |
参数类型 |
描述 |
---|---|---|---|
port |
否 |
String |
网络port uuid。 没有指定网络uuid时必须指定。 |
uuid |
否 |
String |
网络uuid。 没有指定网络port时必须指定。 |
fixed_ip |
否 |
String |
指定的IP地址。网络的三个参数(port、uuid和fixed_ip)中,port优先级最高;指定fixed_ip时必须指明uuid。 |
参数 |
是否必选 |
参数类型 |
描述 |
---|---|---|---|
group |
否 |
String |
反亲和性组信息。 UUID格式。
说明:
请确保云服务器组使用的是反亲和性anti-affinity策略,不推荐使用其他策略。 |
different_host |
否 |
Array of strings |
预留字段,当前不支持该功能。 |
same_host |
否 |
Array of strings |
预留字段,当前不支持该功能。 |
cidr |
否 |
String |
预留字段,当前不支持该功能。 |
build_near_host_ip |
否 |
String |
预留字段,当前不支持该功能。 |
tenancy |
否 |
String |
在专属主机或共享池中创建弹性云服务器。默认为在共享池创建。 值为: shared或dedicated。
创建与查询此值均有效。 |
dedicated_host_id |
否 |
String |
专属主机ID。 此属性仅在tenancy值为dedicated时有效。 不指定此属性,系统将自动分配租户可自动放置弹性云服务器的专属主机。 创建与查询此值均有效。 |
响应消息
响应参数如表9所示。
参数 |
参数类型 |
描述 |
---|---|---|
id |
String |
弹性云服务器ID,UUID格式。 |
links |
Array of objects |
弹性云服务器URI自描述信息,详情参见表11。 |
security_groups |
Array of objects |
弹性云服务器所在安全组,详情参见表12。 |
OS-DCF:diskConfig |
String |
diskConfig方式。
|
reservation_id |
String |
reservation_id:通过返回的reservation_id,可以过滤查询到本次创建的弹性云服务器。
说明:
批量创建弹性云服务器时,支持使用该字段。 |
adminPass |
String |
Windows弹性云服务器Administrator用户的密码。 |
请求示例
- 通过block_device_mapping_v2扩展属性使用镜像创建一台云服务器,采用密钥方式登录鉴权。
POST https://{endpoint}/v2.1/9c53a566cb3443ab910cf0daebca90c4/servers { "server": { "flavorRef": "s3.xlarge.2", "name": "wjvm48", "metadata": { "name": "name_xx1", "id": "id_xxxx1" }, "block_device_mapping_v2": [{ "source_type": "image", "destination_type": "volume", "uuid": "b023fe17-11db-4efb-b800-78882a0e394b", "delete_on_termination": "False", "boot_index": "0", "volume_type": "SAS", "volume_size": "40" }], "security_groups": [{ "name": "name_xx5_sg" }], "networks": [{ "uuid": "fd40e6f8-942d-4b4e-a7ae-465287b02a2c", "port": "e730a11c-1a19-49cc-8797-cee2ad67af6f", "fixed_ip": "10.20.30.137" }], "key_name": "test", "user_data": "ICAgICAgDQoiQSBjbG91ZCBkb2VzIG5vdCBrbm93IHdoeSBpdCBtb3ZlcyBpbiBqdXN0IHN1Y2ggYSBkaXJlY3Rpb24gYW5kIGF0IHN1Y2ggYSBzcGVlZC4uLkl0IGZlZWxzIGFuIGltcHVsc2lvbi4uLnRoaXMgaXMgdGhlIHBsYWNlIHRvIGdvIG5vdy4gQnV0IHRoZSBza3kga25vd3MgdGhlIHJlYXNvbnMgYW5kIHRoZSBwYXR0ZXJucyBiZWhpbmQgYWxsIGNsb3VkcywgYW5kIHlvdSB3aWxsIGtub3csIHRvbywgd2hlbiB5b3UgbGlmdCB5b3Vyc2VsZiBoaWdoIGVub3VnaCB0byBzZWUgYmV5b25kIGhvcml6b25zLiINCg0KLVJpY2hhcmQgQmFjaA==", "availability_zone":"az1-dc1" } }
- 通过block_device_mapping_v2扩展属性使用快照创建一台云服务器,其中,boot_index为0,且该快照对应的云硬盘必须为系统盘。
POST https://{endpoint}/v2.1/9c53a566cb3443ab910cf0daebca90c4/servers { "server":{ "name":"wjvm48", "availability_zone":"az1-dc1", "block_device_mapping_v2": [ { "source_type":"snapshot", "boot_index":"0", "uuid":"df51997d-ee35-4fb3-a372-e2ac933a6565", // snapshot id,创建snapshot接口会返回id "destination_type":"volume" } ], "flavorRef":"s3.xlarge.2", "max_count":1, "min_count":1, "networks": [ { "uuid":"79a68cef-0936-4e21-b1f4-b800ecb70246" } ] } }
- 通过block_device_mapping_v2使用卷创建一台弹性云服务器。
POST https://{endpoint}/v2.1/9c53a566cb3443ab910cf0daebca90c4/servers { "server": { "flavorRef": "s3.xlarge.2", "name": "wjvm48", "metadata": { "name": "name_xx1", "id": "id_xxxx1" }, "block_device_mapping_v2": [{ "source_type": "volume", "destination_type": "volume", "uuid": "bd7e4f86-b004-4745-bea2-a55b1085f107", "delete_on_termination": "False", "boot_index": "0", "volume_type": "dsware", "volume_size": "40" }], "security_groups": [{ "name": "name_xx5_sg" }], "networks": [{ "uuid": "fd40e6f8-942d-4b4e-a7ae-465287b02a2c", "port": "e730a11c-1a19-49cc-8797-cee2ad67af6f", "fixed_ip": "10.20.30.137" }], "key_name": "test", "user_data": "ICAgICAgDQoiQSBjbG91ZCBkb2VzIG5vdCBrbm93IHdoeSBpdCBtb3ZlcyBpbiBqdXN0IHN1Y2ggYSBkaXJlY3Rpb24gYW5kIGF0IHN1Y2ggYSBzcGVlZC4uLkl0IGZlZWxzIGFuIGltcHVsc2lvbi4uLnRoaXMgaXMgdGhlIHBsYWNlIHRvIGdvIG5vdy4gQnV0IHRoZSBza3kga25vd3MgdGhlIHJlYXNvbnMgYW5kIHRoZSBwYXR0ZXJucyBiZWhpbmQgYWxsIGNsb3VkcywgYW5kIHlvdSB3aWxsIGtub3csIHRvbywgd2hlbiB5b3UgbGlmdCB5b3Vyc2VsZiBoaWdoIGVub3VnaCB0byBzZWUgYmV5b25kIGhvcml6b25zLiINCg0KLVJpY2hhcmQgQmFjaA==", "availability_zone":"az1-dc1" } }
- 使用imageRef创建一台弹性云服务器,建议将密码在配置文件或者环境变量中密文存放,使用时解密,确保安全。
POST https://{endpoint}/v2.1/9c53a566cb3443ab910cf0daebca90c4/servers { "server": { "flavorRef": "s3.xlarge.2", "name": "wjvm48", "metadata": { "name": "name_xx1", "id": "id_xxxx1" }, "adminPass": "$ADMIN_PASS", "imageRef": "6b344c54-d606-4e1a-a99e-a7d0250c3d14", "security_groups": [{ "name": "name_xx5_sg" }], "networks": [{ "uuid": "fd40e6f8-942d-4b4e-a7ae-465287b02a2c", "port": "e730a11c-1a19-49cc-8797-cee2ad67af6f", "fixed_ip": "10.20.30.137" }], "key_name": "test", "user_data": "ICAgICAgDQoiQSBjbG91ZCBkb2VzIG5vdCBrbm93IHdoeSBpdCBtb3ZlcyBpbiBqdXN0IHN1Y2ggYSBkaXJlY3Rpb24gYW5kIGF0IHN1Y2ggYSBzcGVlZC4uLkl0IGZlZWxzIGFuIGltcHVsc2lvbi4uLnRoaXMgaXMgdGhlIHBsYWNlIHRvIGdvIG5vdy4gQnV0IHRoZSBza3kga25vd3MgdGhlIHJlYXNvbnMgYW5kIHRoZSBwYXR0ZXJucyBiZWhpbmQgYWxsIGNsb3VkcywgYW5kIHlvdSB3aWxsIGtub3csIHRvbywgd2hlbiB5b3UgbGlmdCB5b3Vyc2VsZiBoaWdoIGVub3VnaCB0byBzZWUgYmV5b25kIGhvcml6b25zLiINCg0KLVJpY2hhcmQgQmFjaA==", "availability_zone":"az1-dc1" } }
- 批量创建弹性云服务器,最小数量为2,最大数量为3。
POST https://{endpoint}/v2.1/9c53a566cb3443ab910cf0daebca90c4/servers { "server": { "availability_zone":"az1.dc1", "name": "test", "imageRef": "10ff4f01-35b6-4209-8397-359cb4475fa0", "flavorRef": "s3.xlarge.2", "return_reservation_id": "true", "networks": [ { "uuid": "51bead38-d1a3-4d08-be20-0970c24b7cab" } ], "min_count": "2", "max_count": "3" } }
响应示例
创建弹性云服务器:
{ "server": { "security_groups": [ { "name": "name_xx5_sg" } ], "OS-DCF:diskConfig": " MANUAL", "id": "567c1557-0eca-422c-bfce-149d6b8f1bb8", "links": [ { "href": "http://xxx/v2/dc4059e8e7994f2498b514ca04cdaf44/servers/567c1557-0eca-422c-bfce-149d6b8f1bb8", "rel": "self" }, { "href": "http://xxx/dc4059e8e7994f2498b514ca04cdaf44/servers/567c1557-0eca-422c-bfce-149d6b8f1bb8", "rel": "bookmark" } ], "adminPass": "*********" } }
批量创建弹性云服务器:
{ "reservation_id": "r-3fhpjulh" }
返回值
请参考通用请求返回值。