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

截止目前,UCloud已提供Python/Java/Golang等不一样语言的API SDK。为进一步下降用户的运维人力投入,又推出了基于Golang SDK的命令行工具CLI(Command Line Interface),提供轻量化的API命令行调用方式,并在GitHub开源(github.com/ucloud/uclo…linux

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

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

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

该场景的示例命令以下:数据库

$ ucloud uhost create —cpu 1 —memory-gb 2 —image-id uimage-xxx —password test123 —count 300 ubuntu

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

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

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

示例命令以下:网络

$ 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 github.com/ucloud/uclo… 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也将在更多的使用场景下帮助运维者摆脱操做难题,欢迎你们点击阅读原文连接下载试用并提出反馈意见。(安装使用指南:docs.ucloud.cn/software/cl…

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

活动推荐:8月17日在上海原境界美术馆,【UCan下午茶—云原生Kubernetes的开发和运维】技术沙龙将邀请六位资深技术专家进行深刻的技术探讨和实践案例分享。欢迎扫描下方二维码报名参加!

相关文章
相关标签/搜索