更新时间:2024-10-22 GMT+08:00
分享

重装裸金属服务器操作系统

功能介绍

重装裸金属服务器的操作系统。快速发放裸金属服务器支持裸金属服务器数据盘不变的情况下,使用原镜像重装系统盘。重装操作系统支持密码或者密钥注入。

确定裸金属服务器是否为快速发放,请参考查询规格详情和规格扩展信息列表API。

重装操作系统属于异步API,接口调用成功只表示请求下发成功,任务执行结果请通过查询Job状态API获取。

约束

  • 使用私有镜像创建的裸金属服务器,请确保已经安装了Cloud-init(Linux镜像)或Cloudbase-init(Windows镜像)。如使用未安装Cloud-init或Cloudbase-init的镜像,该接口不能注入密钥或密码。公共镜像默认已安装Cloud-init或Cloudbase-init。
  • 执行重装操作系统任务时,请勿并行执行其他任务,否则可能会引起重装操作系统失败。
  • 关机状态或者重装操作系统失败的裸金属服务器,才能执行重装操作。
  • 目前Windows镜像不支持注入密码,Linux镜像的user_data为加密后的密码。

调试

您可以在API Explorer中调试该接口。

URI

POST /v1/{project_id}/baremetalservers/{server_id}/reinstallos

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

参数

是否必选

描述

project_id

项目ID。

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

server_id

裸金属服务器ID。

可以从裸金属服务器控制台查询,或者通过调用查询裸金属服务器列表(废弃)获取。

请求参数

参数

是否必选

参数类型

描述

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. 生成加密盐值
    1
    2
    [root@test linux]# python -c "import crypt, getpass, pwd;print crypt.mksalt()" 
    $6$V6azyeLwcD3CHlpY
    
  2. 根据盐值生成密文密码
    1
    2
    [root@test linux]# python -c "import crypt, getpass, pwd;print crypt.crypt('Cloud.1234','\$6\$V6azyeLwcD3CHlpY')" 
     $6$V6azyeLwcD3CHlpY$BN3VVq18fmCkj66B4zdHLWevqcxlig/GpOkLcOhab9smJoLKYm/Tf9Hcwa6DpiPDhdHfGEAPajFmLZa0YDd910
    
  3. 密文生成之后,修改密码脚本需经base64编码方式编码。

请求示例

重装操作系统,裸金属服务器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"
        }
    }
}

响应参数

表4 正常响应要素说明

名称

参数类型

说明

job_id

String

提交任务成功后返回的任务ID,用户可以使用该ID对任务执行情况进行查询。

如何根据job_id来查询Job的执行状态,请参考查询Job状态

表5 异常响应要素说明

名称

参数类型

说明

error

字典数据结构

提交任务异常时返回的异常信息,详情请参见表6

表6 error数据结构

名称

参数类型

说明

message

String

任务异常错误信息描述。

code

String

任务异常错误信息编码。

响应示例

  • 正常响应
{ 
    "job_id": "70a599e0-31e7-49b7-b260-868f441e862b" 
} 

返回值

正常返回值:

返回值

说明

200

服务器已成功处理了请求。

其他返回值请参考状态码

错误码

请参考错误码

相关文档