# 重装裸金属服务器操作系统 - ReinstallBaremetalServerOs
#### 功能介绍
重装裸金属服务器的操作系统。快速发放裸金属服务器支持裸金属服务器数据盘不变的情况下，使用原镜像重装系统盘。重装操作系统支持密码或者密钥注入。
![](https://support.huaweicloud.com/api-bms/public_sys-resources/note_3.0-zh-cn.png)
确定裸金属服务器是否为快速发放，请参考[查询规格详情和规格扩展信息列表 - ListBaremetalFlavorDetailExtends](https://support.huaweicloud.com/api-bms/bms_api_0619.html)API。
重装操作系统属于异步API，接口调用成功只表示请求下发成功，任务执行结果请通过[查询Job状态 - ShowJobInfos](https://support.huaweicloud.com/api-bms/bms_api_0640.html)API获取。
#### 约束
- 使用私有镜像创建的裸金属服务器，请确保已经安装了Cloud-init（Linux镜像）或Cloudbase-init（Windows镜像）。如使用未安装Cloud-init或Cloudbase-init的镜像，该接口不能注入密钥或密码。公共镜像默认已安装Cloud-init或Cloudbase-init。
- 执行重装操作系统任务时，请勿并行执行其他任务，否则可能会引起重装操作系统失败。
- 关机状态或者重装操作系统失败的裸金属服务器，才能执行重装操作。
- 目前Windows镜像不支持注入密码，Linux镜像的user_data为加密后的密码。
 
#### 调试
您可以在[API Explorer](https://console.huaweicloud.com/apiexplorer/#/openapi/BMS/doc?api=ReinstallBaremetalServerOs)中调试该接口。
#### 授权信息
账号具备所有API的调用权限，如果使用账号下的IAM用户调用当前API，该IAM用户需具备调用API所需的权限。
- 如果使用角色与策略授权，具体权限要求请参见[权限和授权项](https://support.huaweicloud.com/api-bms/bms_api_0900.html)。
- 如果使用身份策略授权，需具备如下身份策略权限。
  
  | 授权项                      | 访问级别   | 资源类型（\*为必须） | 条件键                                                                                                                                                                                                                                                                                                                                                                                                                                          | 别名 | 依赖的授权项 |
  |:---|:---|:---|:---|:---|:---|
  | bms:servers:reInstallOS | write | instance\* | - g:EnterpriseProjectId  - g:ResourceTag/\<tag-key\>  - bms:KmsKeyId  - evs:Encrypted  - bms:SSHKeyPairName   | - | -      |
     
  
 
#### URI
POST /v1/{project_id}/baremetalservers/{server_id}/reinstallos
参数说明请参见[表1]。
 表1参数说明 
| 参数             | 是否必选    | 描述                                                                                                                                                                   |
|:---|:---|:---|
| project_id     | 是     | 项目ID。 获取方式请参见[获取项目ID](https://support.huaweicloud.com/api-bms/bms_api_appendix_03.html)。                                          |
| server_id | 是 | 裸金属服务器ID。 可以从裸金属服务器控制台查询，或者通过调用[查询裸金属服务器详情列表 - ListBareMetalServers](https://support.huaweicloud.com/api-bms/bms_api_0609.html)获取。 |
   
#### 请求参数
| 参数      | 是否必选 | 参数类型 | 描述                                                |
|:---|:---|:---|:---|
| os-reinstall | 是         | Object     | 标记为重装裸金属服务器操作。详情请参见[表2]。 |
   
 表2os-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原生）](https://support.huaweicloud.com/api-bms/bms_api_0740.html)API创建，或者使用[查询SSH密钥列表（OpenStack原生）](https://support.huaweicloud.com/api-bms/bms_api_0738.html)API查询已有的密钥。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
| userid      | 否   | String  | 用户ID（登录管理控制台，进入我的凭证，即可看到"用户ID"）。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
| metadata   | 否 | Object | 重装裸金属服务器的元数据。详情请参见[表3]。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
   
 表3metadata字段数据结构说明 
| 参数                                  | 是否必选    | 参数类型         | 描述                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
|:---|:---|:---|:---|
| user_data                     | 否 | String | 重装裸金属服务器过程中待注入的Linux镜像root密码，用户自定义初始化密码。 注：修改密码脚本需经base64编码。 建议密码复杂度如下： - 长度为8-26位。  - 密码至少必须包含大写字母（A-Z）、小写字母（a-z）、数字（0-9）和特殊字符（!@$%\^-_=+\[{}\]:,./?）中的三种。   示例： base64编码前： - Linux服务器： ``` #!/bin/bash echo user_test > /home/user.txt ```   - Windows服务器： ``` rem cmd echo 111 > c:\aaa.txt ```    base64编码后： - Linux服务器： ``` IyEvYmluL2Jhc2gKZWNobyB1c2VyX3Rlc3QgPiAvaG9tZS91c2VyLnR4dA== ```   - Windows服务器： ``` cmVtIGNtZAplY2hvIDExMSA+IGM6XGFhYS50eHQ= ```    |
| __system__encrypted           | 否  | String  | metadata中表示加密功能的字段，0代表不加密，1代表加密。 该字段不存在时，系统盘默认为不加密。 该字段值为0时，__system__cmkid不生效。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              |
| __system__cmkid                | 否   | String  | 用户主密钥ID，是metadata中表示加密功能的字段，与__system__encrypted配合使用。 说明： 请参考[查询密钥列表](https://support.huaweicloud.com/api-dew/ListKeys.html)，通过HTTPS请求获取密钥ID。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              |
| __system__encryption_algorithm | 否   | String   | 创建加密卷支持指定加密算法。 取值范围： - AES_256：通用的高级加密算法。  - SM4：国密算法。   说明： - __system__encrypted、__system__cmkid均有效才支持设置。  - 如果不设置，默认值为AES_256。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
   
#### 请求示例
重装操作系统，裸金属服务器ID为cf2a8b97-b5c6-47ef-9714-eb27adf26e5b，密钥信息为KeyPair-350b，用户ID为7e25b1da389f4697a79df3a0e5bd494e。
```
POST https://{BMS Endpoint}/v1/bbf1946d374b44a0a2a95533562ba954/baremetalservers/cf2a8b97-b5c6-47ef-9714-eb27adf26e5b/reinstallos
```
```
{
    "os-reinstall": {
        "keyname": "$key_name", 
        "userid": "7e25b1da389f4697a79df3a0e5bd494e", 
        "metadata": {
              "user_data": "$USER_DATA"
        }
    }
}
```
#### 响应参数
表4正常响应要素说明 
| 名称    | 参数类型  | 说明                                                                                                                                                                                |
|:---|:---|:---|
| job_id | String | 提交任务成功后返回的任务ID，用户可以使用该ID对任务执行情况进行查询。 如何根据job_id来查询Job的执行状态，请参考[查询Job状态 - ShowJobInfos](https://support.huaweicloud.com/api-bms/bms_api_0640.html)。 |
   
表5异常响应要素说明 
| 名称    | 参数类型   | 说明                                                           |
|:---|:---|:---|
| error | 字典数据结构 | 提交任务异常时返回的异常信息，详情请参见[表6]。 |
   
 表6error数据结构 
| 名称       | 参数类型   | 说明          |
|:---|:---|:---|
| message | String | 任务异常错误信息描述。 |
| code     | String | 任务异常错误信息编码。 |
   
#### 响应示例
- 正常响应
```
{ 
    "job_id": "70a599e0-31e7-49b7-b260-868f441e862b" 
}
```
#### 返回值
正常返回值：
| 返回值 | 说明              |
|:---|:---|
| 200 | 服务器已成功处理了请求。 |
   
其他返回值请参考[状态码](https://support.huaweicloud.com/api-bms/bms_api_0801.html)。
#### 错误码
请参考[错误码](https://support.huaweicloud.com/api-bms/bms_api_0802.html)。
