NVIDIA 初创加速计划,免费加速您的创业启动 了解详情
写点什么

巧用命令行工具 UCloud CLI,轻量操作 API 管理云资源

  • 2019-11-10
  • 本文字数:2619 字

    阅读完需:约 9 分钟

巧用命令行工具UCloud CLI,轻量操作API管理云资源

截止目前,UCloud 已提供 Python/Java/Golang 等不同语言的 API SDK。为进一步降低用户的运维人力投入,又推出了基于 Golang SDK 的命令行工具 CLI(Command Line Interface),提供轻量化的 API 命令行调用方式,并在GitHub开源。CLI 的命令行交互方式更符合研发运维的操作习惯,并且一些典型使用场景通过 CLI 也更容易代码化的沉淀和维护。


下面是一些用户遇到的实际场景, 用 CLI 都能更好地解决,在此总结并给出使用示例。

场景一:大批量创建和删除主机

PingCAP 作为一家专业的分布式数据库供应商,使用 UCloud 时需要一次性批量创建 300 台云主机,进行分布式业务测试。而 UCloud 控制台一次最多允许创建 10 台云主机,因此需要用户进行傻瓜式操作 30 次。但是,主机 API 实际可以支持最多 1000 台并发创建。对于一次性 API 操作,花时间用 SDK 编写创建脚本的投入产出比很低。此类场景 PingCAP 便是通过 CLI 解决。


该场景的示例命令如下:


$ ucloud uhost create —cpu 1 —memory-gb 2 —image-id uimage-xxx —password test123 —count 300
复制代码



(图:控制台页面主机创建一次性最多 10 台并发)

场景二:集中化管理/清理资源,不易遗漏

用户经常购买多种产品,每种的数量不一,部分应临时需求而创建的资源,结束使用后常忘记及时删除,因为分布零散不易管理,不知不觉中花了不少钱。如 X.D. GLOBAL 等用户,则善于利用 CLI 快速创建并及时清理不用的资源。


示例命令如下:


$ ucloud uhost delete --uhost-id `ucloud uhost list --uhost-id-only --page-off`
复制代码



(图:控制台零散的产品资源)

场景三:全球动态加速 PathX 实例大量端口管理

海外游戏发行商为了提高玩家体验,经常使用 UCloud 全球动态加速服务 PathX 实现各地区玩家就近接入,有效规避跨国网络拥塞导致的响应慢、丢包等问题。


某游戏公司也使用了 PathX,但其单条线路需要管理的端口数量超过 60 个。方法一,产品首先得在控制台非标支持 60 个端口管理,然后用户在页面对所有端口逐一添加配置。方法二是架构师编写脚本,用户通过参数更新调整端口。不过,伴随产品迭代、API 调整,脚本的升级成为一个问题,强依赖双方配合。



(图:控制台 PathX 支持 9 个端口协议管理)


CLI 通过沉淀这样的场景,直接支持了 PathX 多端口管理,示例代码如下:


# 给PathX指定的线路实例资源添加80个TCP端口 $ ucloud pathx uga add-port --uga-id uga-kjkxxx --protocol tcp --port 3000-3079,8080
复制代码

场景四:频繁批量切换 EIP

某资讯行业用户由于业务场景需要,会频繁触发其服务切换外网 IP。投入研发人力以脚本实现该需求,已是行业内非常通用的做法。而使用 UCloud CLI 能以轻量的方式完成目标。


示例代码如下:


# 创建eip并绑定,然后解绑释放之前已绑定的eip$ ucloud ext uhost switch-eip --create-eip-bandwidth-mb 2 --uhost-id xxx --unband-all --release-all
复制代码



(图:控制台先解绑再绑定新 EIP)

UCloud CLI 的便捷之处

1.多维度支持命令补全功能

在命令补全方面,通常每次发布新版本都需要终端用户再次生成补全脚本,功能局限并且使用成本较高。因此,UCloud CLI 扩展了 spf13/cobra 框架的功能(相关代码已开源https://github.com/lixiaojun629/cobra),把命令补全功能集成到命令行工具内部,用户只需要一次配置,日后版本升级都不必再重新生成补全脚本,使用方便。


补全功能包括:支持命令补全、命令参数补全、命令参数值静态补全以及命令参数值动态补全等。针对命令参数值动态补全,为了减少调用 API 次数、避免卡顿,UCloud CLI 还添加了动态补全本地缓存特性。


命令参数值静态补全以及命令参数值动态补全的代码示例见下图所示,其中参数 line 的可选值 BGP 和 International 是固定在代码里的静态枚举值,参数 eip-id 的可选值是由 Tab 键触发的 API 请求得到的。



(图:命令参数值静态补全)



(图:命令参数动态补全)

2.命令编写更简单高效

UCloud CLI 批量操作资源时原生支持并发、UI 多线程渲染等,相比开启多进程执行命令行,占用系统资源更少,而且命令编写更加简单,降低运维代码成本。例如批量删除主机命令:


命令 1


$ ucloud uhost list --uhost-id-only | xargs -P 32 -I {} ucloud uhost delete --yes  --uhost-id {}
复制代码


命令 2


$ ucloud uhost delete --uhost-id  `ucloud uhost list --uhost-id-only --page-off`
复制代码


很明显命令 2 更加简单,可以有效减少运维人员的代码操作。



(图:并发创建主机时,UI 多线程渲染)

3.稳定可靠

由于 UCloud CLI 使用了 spf13/cobra 命令行开发框架,它也是 Docker、Kubernetes 和 etcd 等著名开源项目的 CLI 使用框架,久经考验,稳定可靠。

4.丰富的产品支持

在产品支持方面,目前 UCloud CLI 已经支持主机、网络、存储和数据库等常用云产品服务,基本能够满足用户大部分使用场景下的日常操作需求,支持产品列表见下图所示:



(图:CLI 支持产品)

在 Docker 中运行 UCloud CLI

在 Docker 中也可以快速地使用 UCloud CLI,按下面的操作步骤示例,就可以体验了。


1.首先安装 Docker,拉取我们为你准备好的镜像:


uhub.service.ucloud.cn/ucloudcli/ucloud-cli:0.1.20


$ docker pull uhub.service.ucloud.cn/ucloudcli/ucloud-cli:0.1.20
复制代码


此镜像的构建脚本如下:


FROM ubuntu:18.04RUN apt-get update && apt-get install wget -yRUN wget https://github.com/ucloud/ucloud-cli/releases/download/0.1.20/ucloud-cli-linux-0.1.20-amd64.tgzRUN tar -zxf ucloud-cli-linux-0.1.20-amd64.tgz -C /usr/local/bin/RUN echo "complete -C $(which ucloud) ucloud" >> ~/.bashrc #配置自动补全
复制代码


2.执行以下命令,以 uhub.service.ucloud.cn/ucloudcli/ucloud-cli:0.1.20 为镜像启动一个容器,容器名字为 ucloud-cli:


$ docker run --name ucloud-cli -it -d uhub.service.ucloud.cn/ucloudcli/ucloud-cli:0.1.20
复制代码


3.执行如下命令连接到容器 ucloud-cli,连接成功后即可开始使用 ucloud-cli,建议先执行 ucloud init 命令初始化配置。


$ docker exec -it ucloud-cli bash
复制代码

总结

UCloud CLI 的一个重要意义在于能够将 API、事务等有机组合,场景化支持用户的需求,把耗费人力的资源管理以标准化形式呈现,给用户提供便捷灵活的产品解决方案。未来,UCloud CLI 也将在更多的使用场景下帮助运维者摆脱操作难题,欢迎大家点击阅读原文链接下载试用并提出反馈意见。


本文转载自公众号 UCloud 技术(ID:ucloud_tech)。


原文链接:


https://mp.weixin.qq.com/s/wSmbsMKZ-qVK1jajPWrsNQ


2019-11-10 23:30608

评论

发布
暂无评论
发现更多内容

详述 IntelliJ IDEA 遇到 java -source 1.3 中不支持某某操作的解决方法

南屿

IntelliJ IDEA IntelliJ IDEA 2023最新 IntelliJ IDEA密钥

SD-WAN组网方式详解

Ogcloud

网络 SD-WAN 组网 组网网络

macOS 14 Sonoma(最新MacOS系统) pkg完整安装包 14.2正式版

南屿

苹果系统下载 macOS 14 Sonoma

营销创意素材如何秒级智能生成?即时创意白皮书来了!

京东科技开发者

技术文档指南:版本说明、网站文案、FAQ、案例研究与内容优化

小万哥

程序人生 软件工程 后端开发 技术写作 文档指南

强大的数据库管理工具:DBeaver破解版

南屿

数据库 DBeaverEE 破解软件

商智C店H5性能优化实战

京东科技开发者

前端

简单两步,轻松卸载AlDente Pro,来围观~~

南屿

AlDente Pro破解版 AlDente Pro mac mac电池保护 AlDente Pro卸载 苹果电池助手

使用 Parallels Desktop 彻底改变您的开发和测试工作流程

南屿

Mac虚拟机 Parallels Desktop 18破解 Parallels Desktop 19

苹果Mac版交互式原型设计 Axure RP 8 汉化激活版

mac大玩家j

Mac软件 原型设计工具 交互原型设计

支持M/Intel mac的Netflix 奈飞客户端 v2.13.0激活版

南屿

Netflix Mac激活版 macOS 播放客户端 网飞

SVN客户端 smartsvn mac破解版 附许可文件 兼容M/intel

南屿

svn Mac软件 SmartSVN mac破解版 SmartSVN下载

2024-01-03:用go语言,给你两个长度为 n 下标从 0 开始的整数数组 cost 和 time, 分别表示给 n 堵不同的墙刷油漆需要的开销和时间。你有两名油漆匠, 一位需要 付费 的油漆匠

福大大架构师每日一题

福大大架构师每日一题

智能工厂:为制造业的数字化转型奠定基础

3D建模设计

3D场景建模 3D数字孪生场景编辑器 3D场布工具

什么是制造业中的数字孪生?

3D建模设计

3D场景应用 3D场景建模 3D数字孪生场景编辑器 3D场布工具

京东商品评论数据接口(JD.item_review)丨京东API接口

tbapi

京东商品评论数据接口 京东商品评价接口 京东商品评论API 京东商品评价API 京东评论API

数字孪生开发:基础知识、类型、优势和成本

3D建模设计

3D数字孪生场景编辑器 3D场布工具 3D场景搭建

好用的视频下载和转换器:YT Saver 中文直装版

胖墩儿不胖y

视频处理 Mac软件 视频处理工具

JAVA开发工具Eclipse和MyEclipse

小魏写代码

为何 DevOps 会给开发人员带来压力和倦怠?

不在线第一只蜗牛

架构 DevOps 开发

小程序如何帮助在线教育打造业务新引擎

Geek_2305a8

Beyond Compare4 for Mac怎么使用?Beyond Compare功能特点详解

南屿

Mac软件 Beyond Compare 4 注册版 Beyond Compare注册码 文件夹比较工具

【介绍篇】Supabase与Firebase的关系和区别

张文平

数据库 云服务 Baas Supabase firebase

【原理篇】Supabase关联查询:内联、外联及外键约束

张文平

外键 Function 关联查询 Supabase Postgrest

程序员会不会被人工智能取代?

ZA技术社区

程序员 #人工智能

用友BIP全球司库助力陕西建工控股集团打造世界一流司库体系

用友BIP

全球司库

2024你好!

鲸品堂

Microsoft 365 (原office365) Mac版 v16.80正式破解版下载

南屿

Office Microsoft 365 office许可证 office365破解版

【原理篇】Supabase应用开发为什么要配置RLS

张文平

权限 PgSQL Supabase 访问权限 Postgrest

数字孪生技术详解

3D建模设计

3D数字孪生场景编辑器 3D场布工具

在智能制造中使用数字孪生的优势

3D建模设计

3D数字孪生 3D数字孪生场景编辑器 3D场布工具 3D场景搭建

巧用命令行工具UCloud CLI,轻量操作API管理云资源_文化 & 方法_CLI团队_InfoQ精选文章