云服务器内容精选
-
注意事项 该接口可以使用合作伙伴自身的AK/SK或者Token调用,也可以用合作伙伴子客户的AK/SK或者Token来调用。 如果使用AK/SK认证方式,示例代码中的region请参考地区和终端节点中“裸金属服务器 BMS”下“区域”的内容,serviceName(英文服务名称缩写)请指定为BMS。 Endpoint请参考地区和终端节点中“裸金属服务器 BMS”下“终端节点(Endpoint)”的内容。 请保证账户余额充足,此接口无法使用优惠券支付,若余额不足会报“BMS.0216”错误码。若想使用优惠券,请将request请求中的isAutoPay字段设置为false,然后在华为云官网页面使用优惠券进行支付或者调用“查询订单可用优惠券”和“支付包周期产品订单”接口进行支付。
-
请求示例 创建一个裸金属服务器,镜像ID为766a545a-02e1-433e-b1d1-733b5dc95e94,规格为physical.s3.large,计费模式为包年包月,使用密码方式远程登录。 1 POST https://{BMS Endpoint}/v1/{project_id}/baremetalservers 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 { "server": { "availability_zone": "az1", "name": "bms-75c7", "imageRef": "766a545a-02e1-433e-b1d1-733b5dc95e94", "flavorRef": "physical.s3.large", "data_volumes": [ { "volumetype": "SAS", "size": 10, "shareable": false } ], "vpcid": "8df83bf2-fd2e-4ee0-9692-c0b7736513fb", "nics": [ { "subnet_id": "c6bb8788-4fd1-4a8f-adab-7eba3bed8616", "ip_address": "" } ], "count": 1, "schedulerHints": { "dec_baremetal": "share" }, "extendparam": { "chargingMode": "prePaid", "periodType": "month", "periodNum": 1, "isAutoRenew": "true", "isAutoPay": "true", "regionID": "region01" }, "metadata": { "op_svc_userid": "59781460e9e54886a7d03df7d3f3fc81", "BYOL": "false", "admin_pass": "$ADMIN_PASS" }, "publicip": { "id": "1b036bce-26b4-465c-acea-99fdbb0573a3" }, "user_data": "$USER_DATA", "security_groups": [ { "id": "993f2916-5bad-4f24-bc3c-db539f1a6d19" } ] } } 创建一个包年包月的Linux裸金属服务器,可用区为az1,名称为bms-3b91,镜像ID为766a545a-02e1-433e-b1d1-733b5dc95e94规格为physical.o2.large且使用密钥方式远程登录。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 { "server": { "availability_zone": "az1", "name": "bms-3b91", "imageRef": "766a545a-02e1-433e-b1d1-733b5dc95e94", "flavorRef": "physical.o2.large", "data_volumes": [ { "volumetype": "SAS", "size": 10, "shareable": true } ], "vpcid": "8df83bf2-fd2e-4ee0-9692-c0b7736513fb", "nics": [ { "subnet_id": "c6bb8788-4fd1-4a8f-adab-7eba3bed8616", "ip_address": "" }, { "subnet_id": "2b8bcf33-33f2-4a63-aa9c-b1e17ff0ed7f", "ip_address": "" } ], "count": 1, "schedulerHints": { "dec_baremetal": "share" }, "extendparam": { "chargingMode": "prePaid", "periodType": "month", "periodNum": 1, "isAutoRenew": "true", "isAutoPay": "true", "regionID": "region01" }, "metadata": { "op_svc_userid": "59781460e9e54886a7d03df7d3f3fc81", "BYOL": "false" }, "publicip": { "eip": { "iptype": "5_bpg", "bandwidth": { "chargemode": "", "name": "bms-3b91-bandwidth", "size": 1, "sharetype": "PER" }, "extendparam": { "chargingMode": "prePaid" } } }, "security_groups": [ { "id": "993f2916-5bad-4f24-bc3c-db539f1a6d19" } ], "key_name": "$key_name" } } Java语言生成user_data示例如下: 1 2 3 String userData_org = "#!/bin/bash \r\n echo 'root:xxxxx' | chpasswd ;"; byte[] userData_byte = userData_org.getBytes(); String userData = new BASE64Encoder().encode(userData_byte); 创建包年包月的Windows操作系统的裸金属服务器,可用区为az1,名称为bms-6a1e,镜像ID为fd04041a-5f35-45ae-a27c-bf30f921c6b5,规格为physical.s3.large且使用密钥方式远程登录。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 { "server": { "availability_zone": "az1", "name": "bms-6a1e", "imageRef": "fd04041a-5f35-45ae-a27c-bf30f921c6b5", "flavorRef": "physical.s3.large", "data_volumes": [ { "volumetype": "SAS", "size": 10, "shareable": false } ], "vpcid": "0adc2847-c160-4263-be1f-e03d36e93e32", "nics": [ { "subnet_id": "4f1cf6cc-4cc3-41d3-8192-625293dccce0", "ip_address": "" } ], "count": 1, "schedulerHints": { "dec_baremetal": "share" }, "extendparam": { "chargingMode": "prePaid", "periodType": "month", "periodNum": 1, "isAutoRenew": "true", "isAutoPay": "true", "regionID": "region1" }, "metadata": { "op_svc_userid": "8a74baed155b47e8b59fbca853d6cb48", "BYOL": "false" }, "publicip": { "id": "db9c4f39-fabd-4cc2-8685-82e7715d099f" }, "user_data": "$USER_DATA", "security_groups": [ { "id": "33cf5e40-0b65-4e03-867d-4c67947c49be" } ], "key_name": "$key_name" } }
-
背景信息(设置登录鉴权方式) 裸金属服务器的登录鉴权方式包括两种:密钥对、密码。为安全起见,推荐使用密钥对方式。 密钥对 指使用密钥对作为裸金属服务器的鉴权方式。 接口调用方法:使用key_name字段,指定裸金属服务器登录时使用的密钥文件。key_name字段的使用方法请参见表2。 密码 指使用设置初始密码方式作为裸金属服务器的鉴权方式,此时,您可以通过用户名密码方式登录裸金属服务器,Linux操作系统时为root用户的初始密码。 接口调用方法: 方法一(推荐):使用adminPass字段,指定管理员账号的初始登录密码,adminPass字段的使用方法请参见表2。 此时,对于安装了Cloud-init镜像的Linux裸金属服务器,若指定user_data字段,则该adminPass字段无效。 方法二: 对于镜像已安装Cloud-init的Linux裸金属服务器:使用user_data字段进行注入,具体请参见表2。 公共镜像默认已安装Cloud-init或者Cloudbase-init,私有镜像需要您自行确认是否安装。
-
授权项说明 在BMS服务中,OpenStack原生API授权项和授权项作用域与弹性云服务器的一致,具体请参考《弹性云服务器API参考》“API授权项列表”章节。 在 IAM 中自定义BMS的用户策略时,需要给BMS的用户策略中加入ecs:*:get和ecs:*:list两个权限,否则可能会因为权限不足导致部分云服务页面使用异常。 高速网络和自定义网络当前不支持企业项目,请用主账号使用这两个功能。 企业项目的子账号需要在IAM中给子账号授予vpc:ports:get权限,否则在裸金属服务器详情中弹性公网IP和安全组会显示异常。
-
支持的授权项 策略包含系统策略和自定义策略,如果系统策略不满足授权要求,管理员可以创建自定义策略,并通过给用户组授予自定义策略来进行精细的访问控制。策略支持的操作与API相对应,授权项列表说明如下: 权限:允许或拒绝某项操作。 对应API接口:自定义策略实际调用的API接口。 授权项:自定义策略中支持的Action,在自定义策略中的Action中写入授权项,可以实现授权项对应的权限功能。 依赖的授权项:部分Action存在对其他Action的依赖,需要将依赖的Action同时写入授权项,才能实现对应的权限功能。 IAM项目(Project)/企业项目(Enterprise Project):自定义策略的授权范围,包括IAM项目与企业项目。授权范围如果同时支持IAM项目和企业项目,表示此授权项对应的自定义策略,可以在IAM和企业管理两个服务中给用户组授权并生效。如果仅支持IAM项目,不支持企业项目,表示仅能在IAM中给用户组授权并生效,如果在企业管理中授权,则该自定义策略不生效。关于IAM项目与企业项目的区别,详情请参见:IAM与企业管理的区别。 “√”表示支持,“x”表示暂不支持。 BMS服务支持的自定义策略授权项如下所示: 生命周期管理:包含裸金属服务器所有生命周期接口对应的授权项,例如:创建裸金属服务器、查询裸金属服务器详情等接口。 状态管理:包含裸金属服务器状态管理接口对应的授权项,例如:批量关闭、批量重启、批量启动裸金属服务器等。 密码管理:包含裸金属服务器密码相关接口对应的授权项,例如:查询裸金属服务器是否支持重置密码、重置裸金属服务器密码等接口。 规格查询:包含裸金属服务器规格相关接口对应的授权项,例如:查询裸金属服务器规格详情和扩展信息列表接口。 网卡管理:包含裸金属服务器网卡相关接口对应的授权项,例如:查询裸金属服务器网卡信息接口。 磁盘管理:包含裸金属服务器磁盘相关接口对应的授权项,例如:向指定裸金属服务器挂载磁盘、卸载指定裸金属服务器的磁盘等接口。 元数据管理:包含裸金属服务器元数据相关接口对应的授权项,例如:更新裸金属服务器元数据接口。 租户配额管理:包含租户配额相关接口对应的授权项,例如:查询租户配额接口。
-
请求示例 重装操作系统,裸金属服务器ID为cf2a8b97-b5c6-47ef-9714-eb27adf26e5b,密钥信息为KeyPair-350b,用户ID为7e25b1da389f4697a79df3a0e5bd494e。 1 POST https://{BMS Endpoint}/v1/bbf1946d374b44a0a2a95533562ba954/baremetalservers/cf2a8b97-b5c6-47ef-9714-eb27adf26e5b/reinstallos 1 2 3 4 5 6 7 8 9 { "os-reinstall": { "keyname": "$key_name", "userid": "7e25b1da389f4697a79df3a0e5bd494e", "metadata": { "user_data": "$USER_DATA" } } }
-
约束 使用私有镜像创建的裸金属服务器,请确保已经安装了Cloud-init(Linux镜像)或Cloudbase-init(Windows镜像)。如使用未安装Cloud-init或Cloudbase-init的镜像,该接口不能注入密钥或密码。公共镜像默认已安装Cloud-init或Cloudbase-init。 执行重装操作系统任务时,请勿并行执行其他任务,否则可能会引起重装操作系统失败。 关机状态或者重装操作系统失败的裸金属服务器,才能执行重装操作。 目前Windows镜像不支持注入密码,Linux镜像的user_data为加密后的密码。
-
请求参数 参数 是否必选 参数类型 描述 os-reinstall 是 Object 标记为重装裸金属服务器操作。详情请参见表2。 表2 os-reinstall字段数据结构说明 参数 是否必选 参数类型 描述 adminpass 否 String 裸金属服务器管理员账号的初始登录密码。 其中,Linux管理员账户为root,Windows管理员账户为Administrator。 建议密码复杂度如下: 长度为8-26位。 密码至少必须包含大写字母、小写字母、数字和特殊字符(!@$%^-_=+[{}]:,./?)中的三种。 密码不能包含用户名或用户名的逆序。 说明: 对于Windows裸金属服务器,不能包含用户名中超过两个连续字符的部分。 对于Linux裸金属服务器也可使用user_data字段实现密码注入,此时adminpass字段无效。 adminpass和keyname不能同时有值。 adminpass和keyname如果同时为空,此时,metadata中的user_data属性必须有值。 keyname 否 String 密钥名称。 密钥可以通过创建和导入SSH密钥(OpenStack原生)API创建,或者使用查询SSH密钥列表(OpenStack原生)API查询已有的密钥。 userid 否 String 用户ID(登录管理控制台,进入我的凭证,即可看到“用户ID”)。 metadata 否 Object 重装裸金属服务器的元数据。详情请参见表3。 表3 metadata字段数据结构说明 参数 是否必选 参数类型 描述 user_data 否 String 重装裸金属服务器过程中待注入的Linux镜像root密码,用户自定义初始化密码。 注:修改密码脚本需经base64编码。 建议密码复杂度如下: 长度为8-26位。 密码至少必须包含大写字母(A-Z)、小写字母(a-z)、数字(0-9)和特殊字符(!@$%^-_=+[{}]:,./?)中的三种。 示例: 1 2 #!/bin/bash echo 'root:$6$V6azyeLwcD3CHlpY$BN3VVq18fmCkj66B4zdHLWevqcxlig/GpOkLcOhab9smJoLKYm/Tf9Hcwa6DpiPDhdHfGEAPajFmLZa0YDd910' | chpasswd -e 此脚本需经base64编码方式编码。 其中,$6$V6azyeLwcD3CHlpY$BN3VVq18fmCkj66B4zdHLWevqcxlig为密文密码,生成方法如下: 生成加密盐值 1 2 [root@test linux]# python -c "import crypt, getpass, pwd;print crypt.mksalt()" $6$V6azyeLwcD3CHlpY 根据盐值生成密文密码 1 2 [root@test linux]# python -c "import crypt, getpass, pwd;print crypt.crypt('Cloud.1234','\$6\$V6azyeLwcD3CHlpY')" $6$V6azyeLwcD3CHlpY$BN3VVq18fmCkj66B4zdHLWevqcxlig/GpOkLcOhab9smJoLKYm/Tf9Hcwa6DpiPDhdHfGEAPajFmLZa0YDd910 密文生成之后,修改密码脚本需经base64编码方式编码。 __system__encrypted 否 String metadata中表示加密功能的字段,0代表不加密,1代表加密。 该字段不存在时,系统盘默认为不加密。 该字段值为0时,__system__cmkid不生效。 __system__cmkid 否 String 用户主密钥ID,是metadata中表示加密功能的字段,与__system__encrypted配合使用。 说明: 请参考查询密钥列表,通过HTTPS请求获取密钥ID。
-
请求示例 1 POST https://{BMS Endpoint}/v1/bbf1946d374b44a0a2a95533562ba954/baremetalservers/cf2a8b97-b5c6-47ef-9714-eb27adf26e5b/changeos 1 2 3 4 5 6 7 8 9 10 { "os-change": { "keyname": "$key_name", "imageid": "04dc740a-5820-4ab6-9d01-8cd3a6577296", "userid": "7e25b1da389f4697a79df3a0e5bd494e", "metadata": { "user_data": "$USER_DATA" } } }
-
响应参数 正常响应要素 表4 正常响应要素说明 名称 参数类型 说明 jobId String 提交任务成功后返回的任务ID,用户可以使用该ID对任务执行情况进行查询。 如何根据job_id来查询Job的执行状态,请参考查询Job状态。 异常响应要素 表5 异常响应要素说明 名称 参数类型 说明 error 字典数据结构 提交任务异常时返回的异常信息,详情请参见表6。 表6 error数据结构 名称 参数类型 说明 message String 任务异常错误信息描述。 code String 任务异常错误信息编码。
-
请求参数 参数 是否必选 参数类型 描述 os-change 是 Object 标记为切换裸金属服务器OS操作。详情请参见表2。 表2 os-change字段数据结构说明 参数 是否必选 参数类型 描述 adminpass 否 String 裸金属服务器管理员账号的初始登录密码。 其中,Linux管理员账户为root,Windows管理员账户为Administrator。 建议密码复杂度如下: 长度为8-26位。 密码至少必须包含大写字母、小写字母、数字和特殊字符(!@$%^-_=+[{}]:,./?)中的三种。 密码不能包含用户名或用户名的逆序。 说明: 对于Windows裸金属服务器,不能包含用户名中超过两个连续字符的部分。 对于Linux裸金属服务器也可使用user_data字段实现密码注入,此时adminpass字段无效。 adminpass和keyname不能同时有值。 adminpass和keyname如果同时为空,此时,metadata中的user_data属性必须有值。 keyname 否 String 密钥名称。 密钥可以通过创建和导入SSH密钥(OpenStack原生)API创建,或者使用查询SSH密钥列表(OpenStack原生)API查询已有的密钥。 userid 否 String 用户ID(登录管理控制台,进入我的凭证,即可看到“用户ID”)。 imageid 是 String 镜像ID。 镜像ID可以从 镜像服务 控制台获取,或者参考《镜像服务API参考》的“查询镜像列表”章节查询。 在使用“查询镜像列表”API查询时,可以添加过滤字段“?virtual_env_type=Ironic”来筛选裸金属服务器镜像。 metadata 否 Object 切换裸金属服务器的元数据。详情请参见表3。 表3 metadata字段数据结构说明 参数 是否必选 参数类型 描述 user_data 否 String 切换裸金属服务器过程中待注入的Linux镜像root密码,用户自定义初始化密码。 注:修改密码脚本需经base64编码。 建议密码复杂度如下: 长度为8-26位。 密码至少必须包含大写字母(A-Z)、小写字母(a-z)、数字(0-9)和特殊字符(!@$%^-_=+[{}]:,./?)中的三种。 示例: 使用明文密码(存在安全风险),以密码cloud.1234为例: 1 2 #!/bin/bash echo 'root:Cloud.1234' | chpasswd ; 使用密码: 1 2 #!/bin/bash echo 'root:$6$V6azyeLwcD3CHlpY$BN3VVq18fmCkj66B4zdHLWevqcxlig/GpOkLcOhab9smJoLKYm/Tf9Hcwa6DpiPDhdHfGEAPajFmLZa0YDd910' | chpasswd -e 此脚本需经base64编码方式编码。 其中,$6$V6azyeLwcD3CHlpY$BN3VVq18fmCkj66B4zdHLWevqcxlig为密文密码,生成方法如下: 生成加密盐值 1 2 [root@test linux]# python -c "import crypt, getpass, pwd;print crypt.mksalt()" $6$V6azyeLwcD3CHlpY 根据盐值生成密文密码 1 2 [root@test linux]# python -c "import crypt, getpass, pwd;print crypt.crypt('Cloud.1234','\$6\$V6azyeLwcD3CHlpY')" $6$V6azyeLwcD3CHlpY$BN3VVq18fmCkj66B4zdHLWevqcxlig/GpOkLcOhab9smJoLKYm/Tf9Hcwa6DpiPDhdHfGEAPajFmLZa0YDd910 密文生成之后,修改密码脚本需经base64编码方式编码。 __system__encrypted 否 String metadata中表示加密功能的字段,0代表不加密,1代表加密。 该字段不存在时,系统盘默认为不加密。 该字段值为0时,__system__cmkid不生效。 __system__cmkid 否 String 用户主密钥ID,是metadata中表示加密功能的字段,与__system__encrypted配合使用。 说明: 请参考查询密钥列表,通过HTTPS请求获取密钥ID。
-
URI POST /v1/{project_id}/baremetalservers/{server_id}/changeos 参数说明请参见表1。 表1 参数说明 参数 是否必选 描述 X-Auth-Token 是 用户Token。通过调用IAM服务获取用户Token接口获取(响应消息头中X-Subject-Token的值) project_id 是 项目ID。 获取方式请参见获取项目ID。 server_id 是 裸金属服务器ID。 可以从裸金属服务器控制台查询,或者通过调用查询裸金属服务器列表(废弃)获取。
-
约束 关机状态或者切换操作系统失败的裸金属服务器,才能执行切换操作。 使用私有镜像创建的裸金属服务器,请确保已经安装了Cloud-init(Linux镜像)或Cloudbase-init(Windows镜像)。如使用未安装Cloud-init或Cloudbase-init的镜像,该接口不能注入密钥或密码。公共镜像默认已安装Cloud-init或Cloudbase-init。 执行切换操作系统任务时,请勿并行执行其他操作,否则可能会引起切换操作系统失败。 目前Windows镜像不支持注入密码,Linux镜像的user_data为加密后的密码。
-
请求示例 创建裸金属服务器,其中镜像ID为1a6635d8-afea-4f2b-abb6-27a202bad319,规格为physical.o2.medium,名称为bms_name01,可用区为az-dc-1,网络UUID为8470310b-bfa2-4edf-8f64-d15196b2b2c9。 1 POST https://{E CS Endpoint}/v2.1/bbf1946d374b44a0a2a95533562ba954/servers 1 2 3 4 5 6 7 8 9 10 11 12 13 { "server": { "imageRef": "1a6635d8-afea-4f2b-abb6-27a202bad319", "flavorRef": "physical.o2.medium", "name": "bms_name01", "availability_zone": "az-dc-1", "networks": [ { "uuid": "8470310b-bfa2-4edf-8f64-d15196b2b2c9" } ] } }
-
响应参数 参数 参数类型 描述 server Object 裸金属服务器信息。详情请参见表6。 表6 server字段数据结构说明 参数 参数类型 描述 security_groups Array of objects 裸金属服务器安全组信息。详情请参见表7。 OS-DCF:diskConfig String 磁盘配置,取值为以下两种: MANUAL:API使用镜像中的分区方案和文件系统创建裸金属服务器。如果目标flavor磁盘较大,则API不会对剩余磁盘空间进行分区。 AUTO:API使用与目标flavor磁盘大小相同的单个分区创建裸金属服务器,API会自动调整文件系统以适应整个分区。 id String 裸金属服务器ID。 links Array of objects 裸金属服务器相关快捷链接信息。详情请参见表8。 adminPass String 裸金属服务器管理员账户初始登录密码。 表7 security_groups字段数据结构说明 参数 参数类型 描述 name String 裸金属服务器对应的安全组名称。 表8 links字段数据结构说明 参数 参数类型 描述 rel String 快捷链接标记名称。取值为: self:包含版本号的资源链接,需要立即跟踪时使用此类链接。 bookmark:提供了适合长期存储的资源链接。 href String 对应快捷链接。