【ArchSummit架构师峰会】探讨数据与人工智能相互驱动的关系>>> 了解详情
写点什么

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

评论

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

iPhone手机维护推荐 PhoneRescue for iOS 最新中文激活

mac大玩家j

Mac软件 手机助手

如何从构建到运营?数科公司数智创新研讨会成功举办

用友BIP

数科公司

原料所属权管理领先实践,助力造币厂来料加工原料管理降本增效

用友BIP

领先实践 原料所属权管理

DevOps2023现状报告|注重文化、以用户为中心是成功的关键

SEAL安全

人工智能 DevOps DORA 企业号10月PK榜 技术报告

英语学习工具:Eudic欧路词典 for Mac增强版

展初云

Mac 欧路词典 英语学习工具

QSpace Pro for Mac(多窗文件管理器)

展初云

文件管理 Mac软件

使用流量管理工具保护 Kubernetes 的六种方法

NGINX开源社区

Kubernetes DOS攻击 Web应用防火墙 原生云

Linux之进程掩码umask详解。

百度搜索:蓝易云

云计算 Linux 运维 云服务器 umask

List.of() Vs Arrays.asList()

越长大越悲伤

Java

商用显示设备包括哪些?

Dylan

企业 设备 显示器 LED显示屏

使用 ChaosBlade 验证 DLRover 的弹性和容错的稳定性

AI Infra

人工智能 开源 开发者 云原生 大模型

李彦宏:我们即将进入一个AI原生的时代|百度世界2023

飞桨PaddlePaddle

百度 大模型 文心一言

图文结合丨Prometheus+Grafana+GreatSQL性能监控系统搭建指南(下)

GreatSQL

greatsql

玩转MaxCompute SQL训练营! 数据分析挖掘迅速出师

阿里云大数据AI技术

大数据 数据分析

2024北京国际物联网展览会(物联网展)

AIOTE智博会

物联网展览会 物联网展会 物联网博览会 物联网展 世亚智博会

PaddleX解决分类、检测两大场景问题?实战精讲教程来了!

飞桨PaddlePaddle

AI 飞桨 套件

新晋技术管理者如何推动组织变革?

LigaAI

团队管理 研发管理 进阶 技术管理 企业号10月PK榜

Servlet、HTTP详细解释!

百度搜索:蓝易云

Java Linux Web HTTP Servlet

我与极客时间的故事

穿过生命散发芬芳

我和极客时间的故事

Sentinel源码改造,实现Nacos双向通信!

王磊

Java

小巧高效的音频录制 Piezo 最新激活版

胖墩儿不胖y

Mac软件 音频处理器 音频录制

SoundSource for mac(音量控制工具)

展初云

Mac软件 音量调节

用友 Fast by BIP引领专业技术服务企业快速迈向数智化创新

用友BIP

Fast by BIP

小程序技术在信创操作系统里的应用趋势

没有用户名丶

全面解析内存泄漏检测与修复技术

华为云开发者联盟

程序员 开发 内存 华为云 华为云开发者联盟

LAS Spark+云原生:数据分析全新解决方案

字节跳动数据平台

数据库 大数据 数据中台 数据研发 企业号10月PK榜

Youtrack Linux 安装

HoneyMoose

百度世界大会2023重磅发布进行时,小度全新智能音箱重构家居美学新乐章

新消费日报

校源行 | 开放原子开源社团(西北工业大学)授牌仪式成功举行

开放原子开源基金会

以烟草行业为例,聊聊如何基于 PLC + OPC + TDengine,快速搭建工业生产监测系统

TDengine

tdengine 时序数据库

代码的艺术 - Writing Code Like a Pianist | 京东云技术团队

京东科技开发者

代码质量 整洁代码 企业号10月PK榜 系统质量

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