文档首页/ 弹性云服务器 ECS/ API参考(安卡拉区域)/ API(推荐)/ 状态管理/ 切换弹性云服务器操作系统(安装Cloud-init)
更新时间:2024-04-16 GMT+08:00

切换弹性云服务器操作系统(安装Cloud-init)

功能介绍

切换弹性云服务器操作系统。支持弹性云服务器数据盘不变的情况下,使用新镜像重装系统盘。

本接口为异步接口,当前切换弹性云服务器操作系统请求下发成功后会返回job_id,此时切换弹性云服务器操作系统并没有立即完成,需要通过调用查询任务的执行状态查询job状态,当Job状态为 SUCCESS 时代表云服务器操作系统切换成功。

调用该接口后,系统将卸载系统盘,然后使用新镜像重新创建系统盘,并挂载至弹性云服务器,实现切换操作系统功能。

接口约束

  • 该接口仅支持安装了Cloud-init或Cloudbase-init的镜像。如果镜像未安装Cloud-init或者Cloudbase-init,请使用 切换弹性云服务器操作系统(未安装Cloud-init)接口。
  • 不包含系统盘的弹性云服务器不能切换操作系统。
  • 执行切换操作系统任务时,请勿并行执行其他任务,否则可能会引起切换操作系统失败。

URI

POST /v2/{project_id}/cloudservers/{server_id}/changeos

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

参数

是否必选

描述

project_id

项目ID。

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

server_id

弹性云服务器ID。

请求消息

请求参数如表2所示。
表2 请求参数

参数

是否必选

参数类型

描述

os-change

Object

切换弹性云服务器操作系统,详情参见表3

表3 os-change字段数据结构说明

参数

是否必选

参数类型

描述

keyname

String

密钥名称。

userid

String

用户ID。当传入keyname参数时,优先使用本参数设置的userid,若userid为空,默认使用当前token中的userid。

imageid

String

切换系统所使用的新镜像的ID,格式为UUID。

镜像的ID可以从控制台或者参考《镜像服务接口参考》的“查询镜像列表”的章节获取。

metadata

Object

切换云服务器的元数据。

更多信息,请参见表4

mode

String

取值为withStopServer ,支持开机状态下切换弹性云服务器操作系统。

mode取值为withStopServer时,对开机状态的弹性云服务器执行切换操作系统操作,系统自动对云服务器先执行关机,再切换操作系统。

表4 metadata字段数据结构说明

参数

是否必选

参数类型

描述

BYOL

String

用户是否拥有镜像的license文件。

  • 配置为“true”时,表示镜像使用自带的License文件,即使用BYOL功能。
  • 配置为其他值(即非“true”)时,表示不使用BYOL功能,需使用云服务提供的License文件。

系统默认为非“true”的场景,即不使用BYOL。

user_data

String

创建云服务器过程中待注入实例自定义数据。支持注入文本、文本文件。

说明:
  • user_data的值为base64编码之后的内容。
  • 注入内容(编码之前的内容)最大长度为32K。

了解更多实例自定义数据注入请参考《弹性云服务器用户指南》中“实例自定义数据注入”。

示例:

base64编码前:

  • Linux服务器:
    #!/bin/bash
    echo user_test > /home/user.txt
  • Windows服务器:
    rem cmd
    echo 111 > c:\aaa.txt

base64编码后:

  • Linux服务器:
    IyEvYmluL2Jhc2gKZWNobyB1c2VyX3Rlc3QgPiAvaG9tZS91c2VyLnR4dA==
  • Windows服务器:
    cmVtIGNtZAplY2hvIDExMSA+IGM6XGFhYS50eHQ=

响应消息

请参考响应(任务类)

请求示例

  • 切换云服务器操作系统,切换后采用密码方式登录鉴权,建议将密码在配置文件或者环境变量中密文存放,使用时解密,确保安全。
    POST https://{endpoint}/v2/{project_id}/cloudservers/{server_id}/changeos
    
    {
        "os-change": {
            "userid": "7e25b1da389f4697a79df3a0e5bd494e", 
            "imageid": "e215580f-73ad-429d-b6f2-5433947433b0",
            "mode": "withStopServer"
        }
    }
  • 切换云服务器操作系统,切换后采用密钥方式登录鉴权。
    POST https://{endpoint}/v2/{project_id}/cloudservers/{server_id}/changeos
    
    {
        "os-change": {
            "keyname": "KeyPair-350b", 
            "userid": "7e25b1da389f4697a79df3a0e5bd494e", 
            "imageid": "e215580f-73ad-429d-b6f2-5433947433b0"
        }
    }

响应示例

请参考响应(任务类)

{      
    "job_id": "ff80808288d41e1b018990260955686a" 
}

返回值

请参考通用请求返回值

错误码

请参考错误码