10 月 23 - 25 日,QCon 上海站即将召开,现在购票,享9折优惠 了解详情
写点什么

巧用命令行工具 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:30885

评论

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

YashanDB数据库的事务隔离级别与性能平衡解析

数据库砖家

YashanDB数据库的事务一致性模型及实现方法

数据库砖家

Docker部署Jellyfin,没有公网IP如何使用内网穿透远程访问?

贝锐

内网穿透 Docker 镜像

YashanDB数据库的可扩展性架构设计技巧

数据库砖家

YashanDB数据库的内存管理及优化技巧

数据库砖家

YashanDB数据库的容错机制:确保数据安全与一致性

数据库砖家

YashanDB数据库的日志管理与审计功能介绍

数据库砖家

YashanDB数据库的事务隔离与并发控制机制

数据库砖家

活动回顾|Apache Cloudberry™ (Incubating) Meetup·2025 北京站

酷克数据HashData

YashanDB数据库的扩展性探索:如何支持大规模应用

数据库砖家

YashanDB数据库的内存管理与性能影响因素

数据库砖家

YashanDB数据库的日志管理与故障排除技巧

数据库砖家

YashanDB数据库的扩展性与可维护性分析

数据库砖家

YashanDB数据库的全面架构评估与比较

数据库砖家

YashanDB数据库的容错能力与恢复策略

数据库砖家

YashanDB数据库的数据分布与负载均衡策略

数据库砖家

合并报表——现代财务管理的重要工具

智达方通

全面预算管理 预算软件

YashanDB数据库的事务日志管理及故障恢复实务指南

数据库砖家

YashanDB数据库的事务日志及恢复机制详解

数据库砖家

YashanDB数据库的数据加密与访问控制策略

数据库砖家

YashanDB数据库的数据导入与导出最佳实践

数据库砖家

YashanDB数据库的快速数据查询及优化方法

数据库砖家

YashanDB数据库的快照与恢复功能详解

数据库砖家

YashanDB数据库的模式设计及规范介绍

数据库砖家

YashanDB数据库的事务回滚与恢复策略解析

数据库砖家

不追求完美主义了,先做个垃圾出来!

Immerse

图片 图片裁剪

YashanDB数据库的实时数据处理能力探讨

数据库砖家

YashanDB数据库的事务日志管理与恢复策略

数据库砖家

YashanDB数据库的内存管理优化策略

数据库砖家

YashanDB数据库的日志管理与分析工具

数据库砖家

YashanDB数据库的日志管理与审计功能解析

数据库砖家

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