文档首页 > > API参考> API> 裸金属服务器状态管理> 重装裸金属服务器操作系统

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

分享
更新时间: 2019/12/31 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为加密后的密码。

URI

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

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

参数

是否必选

描述

project_id

项目ID。

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

server_id

裸金属服务器ID。

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

请求消息

  • 请求参数

    参数

    是否必选

    参数类型

    描述

    os-reinstall

    Object

    标记为重装裸金属服务器操作。详情请参见表2

    表2 os-reinstall字段数据结构说明

    参数

    是否必选

    参数类型

    描述

    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)和特殊字符(!@$%^-_=+[{}]:,./?)中的三种。

    示例:

    • 使用明文密码(存在安全风险),以密码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. 生成加密盐值
      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编码方式编码。
  • 请求样例
    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": "KeyPair-350b", 
            "userid": "7e25b1da389f4697a79df3a0e5bd494e", 
            "metadata": {
                  "user_data":  "IyEvYmluL2Jhc2gKZWNobyAncm9vdDokNiR0Y0pZamUkNGhhUHlNZFR4VWVHc2dTMWFmL1NsMm4vbXZzdy5wSFdjbTVBc084OWFhUFhGNXUvVnJ5OXJiYmZZSW45SmZac2k3SlRmd2Z6djJPbTBHRFZUZTd6RDEnIHwgY2hwYXNzd2QgLWU7"
            }
        }
    }
    

响应消息

请参考任务Id的响应

返回值

正常返回值:

返回值

说明

200

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

其他返回值请参考状态码

错误码

请参考错误码

分享:

    相关文档

    相关产品

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

提交成功!

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

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

*必选

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

字符长度不能超过200

提交反馈 取消

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

跳转到云社区