巧用命令行工具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的開發和運維】技術沙龍將邀請六位資深技術專家進行深刻的技術探討和實踐案例分享。歡迎掃描下方二維碼報名參加!

相關文章
相關標籤/搜索