使用CLI便捷重装和切换弹性云服务器系统
引导式阅读
Others
使用CLI便捷重装和切换弹性云服务器系统
作者
C***
上架时间
2022-02-21 12:25:42

描述

基于华为云CLI,以shell脚本模板形式实现对弹性云服务器进行重装系统、切换系统以及job执行状态查询。

关于华为云CLI更多使用帮助请参考用户指南

场景介绍

本示例以实现切换弹性云服务器(未安装Cloud-Init)为主,同时提供密钥管理、镜像查询、弹性云服务器查询以及重装系统等相关操作,具体如下:

密钥相关:创建和导入SSH密钥、删除SSH密钥、查询SSH密钥列表;

镜像相关:查询公共镜像列表、查询私有镜像列表、查询可以使用的共享镜像列表;

弹性云服务器相关:查询弹性云服务器、重装弹性云服务器操作系统、切换弹性云服务器操作系统、查询任务的执行状态。

前提条件

下载安装HCloud CLI

HCloud CLI的下载安装请参考安装指南

配置(删除配置)HCloud CLI

开发者在配置HCloud CLI前需先获取认证相关的信息。

1.AK/SK 访问密钥

请在华为云控制台“我的凭证-访问密钥”页面上创建和查看您的AK/SK。更多信息请查看访问密钥

2.region 当前可调用的区域

华为云各服务应用区域和各服务的终端节点请查看地区和终端节点

3.project-id 云服务所在项目ID

根据需要操作的项目所属区域选择对应的项目ID 。

配置和删除配置HCloud CLI的命令如下:

hcloud configure set --profile=cliProfile --project-id={project_id} --region={region} --mode=AKSK --access-key={AK} --secret-key={SK} --read-timeout=60 --connect-timeout=30

hcloud configure delete --profile=cliProfile

目标弹性云服务器

弹性云服务器ECS购买相关的操作可参考《使用CLI便捷管理弹性云服务器ECS》模板。

获取切换或重装弹性云服务器操作系统相关的参数

在切换操作系统过程中需获取如下参数:serverId、imageId、adminPass(keyname、userid)。

1.serverId:标服务器的ID

可通过执行hcloud ECS NovaListServers --name={ecs_name} --json-filter="servers[].id | [0]"命令获取;或可通过”华为云控制台-弹性云服务器ECS“页面,选取指定ECS查看其ID。

2.imageId:镜像ID

可通过执行hcloud IMS GlanceListImages --__imagetype="gold" --protected=true --visibility="public" --__platform="Ubuntu" --__os_type="Linux" --__os_bit="64" --__isregistered=true --status="active" --json-filter="images[?name=='{image_name}'].id | [0]"命令获取;或可通过“华为云控制台-弹性云服务器ECS-镜像服务”页面,选取指定镜像,查看其ID。 如下所示,选取Ubuntu 18.04 server 64bit版本镜像。

3.adminPass:标服务器的管理员密码。

4.keyname:密钥名称。

使用秘钥方式切换操作系统,则该字段为必选字段。密钥可以通过执行hcloud ECS NovaCreateKeypair --keypair.name={your key name}命令进行创建,或执行hcloud ECS NovaListKeypairs 命令查询已有的密钥。

5.userid:用户ID。

使用秘钥方式切换操作系统,则该字段为必选字段。

在重装系统过程中需获取如下参数:serverId、adminPass(keyname、userid)。

1.serverId:标服务器的ID。

可通过执行hcloud ECS NovaListServers --name={ecs_name} --json-filter="servers[].id | [0]"命令获取;或可通过”华为云控制台-弹性云服务器ECS“页面,选取指定ECS查看其ID。

2.adminPass:标服务器的管理员密码。

3.keyname:密钥名称。

使用秘钥方式切换操作系统,则该字段为必选字段。密钥可以通过执行hcloud ECS NovaCreateKeypair --keypair.name={your key name}命令进行创建,或执行hcloud ECS NovaListKeypairs 命令查询已有的密钥。

4.userid:用户ID。

使用秘钥方式切换操作系统,则该字段为必选字段。

开发说明

本模板默认使用密钥方式切换弹性云服务器操作系统,您也可参考模板中提供的使用密码方式切换弹性云服务器操作系统。使用时请根据实际需要注释或修改部分参数内容。

示例代码

使用如下代码管理密钥,调用前请根据实际情况修改或替换部分参数内容。

# Querying SSH Key Pairs hcloud ECS NovaListKeypairs --limit=20 # Importing an SSH Key Pair hcloud ECS NovaCreateKeypair --keypair.public_key={public_key} --keypair.type="ssh" --keypair.user_id={user ID of the key} --keypair.name={key_name} # Creating an SSH Key Pair hcloud ECS NovaCreateKeypair --keypair.name={key_name} # Deleting an SSH Key Pair hcloud ECS NovaDeleteKeypair --keypair_name={key_name}

使用如下代码查询镜像信息,调用前请根据实际情况修改或替换部分参数内容。

# Querying Private Images hcloud IMS GlanceListImages --owner={project_id} # Querying Available shared Images hcloud IMS GlanceListImages --__imagetype="shared" --visibility="shared" --member_status="accepted" # Querying Public Images (when you don't know the image name) hcloud IMS GlanceListImages --__imagetype="gold" --visibility="public" --protected=true --json-filter="images[].{id:id,name:name,status:status}" # Querying Public Images (when you know the image name) hcloud IMS GlanceListImages --__imagetype="gold" --protected=true --visibility="public" --__platform="Ubuntu" --__os_type="Linux" --__os_bit="64" --__isregistered=true --status="active" --json-filter="images[?name=='{image_name}'].id | [0]"

使用如下代码查询弹性云服务器,调用前请根据实际情况修改部分参数内容。

# Querying ECSs hcloud ECS NovaListServers --name={ecs_name} --json-filter="servers[].id | [0]"

使用如下代码切换弹性云服务器操作系统,调用前请根据实际情况修改部分参数内容。

# Changing an ECS OS with Cloud-Init(Using a Password) hcloud ECS ChangeServerOsWithCloudInit --server_id={server_id} --os-change.imageid={image_id} --os-change.adminpass={adminpass} [--os-change.mode="withStopServer"] # Changing an ECS OS with Cloud-Init(Using a Key) hcloud ECS ChangeServerOsWithCloudInit --server_id={server_id} --os-change.imageid={image_id} --os-change.keyname={key_pair_name} --os-change.userid={user_id} [--os-change.mode="withStopServer"] # Changing an ECS OS without Cloud-Init(Using a Password) hcloud ECS ChangeServerOsWithoutCloudInit --server_id={server_id} --os-change.imageid={image_id} --os-change.adminpass={adminpass} [--os-change.mode="withStopServer"] # Changing an ECS OS without Cloud-Init(Using a Key) hcloud ECS ChangeServerOsWithoutCloudInit --server_id={server_id} --os-change.imageid={image_id} --os-change.keyname={key_pair_name} --os-change.userid={user_id} --os-change.mode="withStopServer" --json-filter=job_id

使用如下代码重装弹性云服务器操作系统,调用前请根据实际情况修改部分参数内容。

# Reinstalling an ECS OS with Cloud-Init(Using a Password) hcloud ECS ReinstallServerWithCloudInit --server_id={server_id} --os-reinstall.adminpass={adminpass} [--os-change.mode="withStopServer"] # Reinstalling an ECS OS with Cloud-Init(Using a Key) hcloud ECS ReinstallServerWithCloudInit --server_id={server_id} --os-reinstall.keyname={key_pair_name} --os-reinstall.userid={user_id} [--os-change.mode="withStopServer"] # Reinstalling an ECS OS without Cloud-Init(Using a Password) hcloud ECS ReinstallServerWithoutCloudInit --server_id={server_id} --os-reinstall.adminpass={adminpass} [--os-change.mode="withStopServer"] # Reinstalling an ECS OS without Cloud-Init(Using a Key) hcloud ECS ReinstallServerWithoutCloudInit --server_id={server_id} --os-reinstall.keyname={key_pair_name} --os-reinstall.userid={user_id} [--os-change.mode="withStopServer"]

使用如下代码查询任务的执行状态,调用前请根据实际情况修改部分参数内容。

# Querying Task Execution Status hcloud ECS ShowJob --job_id={job_id}

运行示例

运行时首先通过sudo ln -s CLI工具所在目录 /usr/local/bin/命令配置华为云CLI工具环境变量,或将脚本模板放置在华为云CLI工具所在目录,并在hcloud开头的相关命令前加“./”。其次,根据实际情况修改部分参数内容、或注释无关的命令,最后执行sh reinstall_or_change_an_ecs_os.sh image_name ecs_name key_pair_name user_id命令运行脚本。

运行结果

脚本执行成功后,控制台打印云服务器详情列表信息。

{ "job_id": "ff8080xxxxxxxxxxxxxxxxxxx7453e4c", "job_type": "changeOS", "begin_time": "2021-08-17T02:08:26.430Z", "end_time": "2021-08-17T02:16:55.498Z", "status": "SUCCESS", "error_code": null, "fail_reason": null, "entities": { "server_id": "a3985dbb-xxxx-xxxx-xxxx-xxxxdab21fe0" } }

参考

关于华为云CLI的更多信息请参考:https://support.huaweicloud.com/productdesc-hcli/hcli_01.html

修订记录

发布日期 文档版本 修订说明
2021-08-17 1.0 文档首次发布