您好,登錄后才能下訂單哦!
截止目前,UCloud已提供Python/Java/Golang等不同語言的API SDK。為進一步降低用戶的運維人力投入,又推出了基于Golang SDK的命令行工具CLI(Command Line Interface),提供輕量化的API命令行調用方式,并在GitHub開源(https://github.com/ucloud/ucloud-cli)。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
cdn.xitu.io/2019/8/16/16c99c5ff0df8c87?w=640&h=279&f=jpeg&s=19030">
(圖:控制臺頁面主機創建一次性最多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也將在更多的使用場景下幫助運維者擺脫操作難題,歡迎大家點擊閱讀原文鏈接下載試用并提出反饋意見。(安裝使用指南:https://docs.ucloud.cn/software/cli/intro)。
巧用命令行工具UCloud CLI,輕量操作API管理云資源
活動推薦:8月17日在上海原境界美術館,【UCan下午茶—云原生Kubernetes的開發和運維】技術沙龍將邀請六位資深技術專家進行深入的技術探討和實踐案例分享。歡迎掃描下方二維碼報名參加!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。