為 Terraform 插上 CLI 的翅膀
如今的雲端計算已經不再是那個僅僅只會計算、只會儲存、只會連線的機器的集合,網際網路業務的敏捷化、智慧化、複雜化不斷推動著雲端計算變得更加自動和智慧。
從DevOps到IaC,從公有云、私有云到多雲管理,Terraform 在基礎設施管理領域的地位已經變的越來越舉足輕重,使用者對Terraform的喜愛也在日益增強。
目前阿里雲對 Terraform 的支援已經超過了50個resource,將近20個data source,但這遠遠無法滿足使用者複雜多樣的業務場景,給使用者一種意猶未盡的感覺。
面對 Terraform 暫時還未來得及支援的 resource,使用者如何藉助 Terraform 繼續對資源進行自動化管理呢?這裡就要用到一款幾乎已經覆蓋了所有的阿里雲資源的萬能管理工具 Aliyun CLI(https://github.com/aliyun/aliyun-cli/blob/master/README.md)。Terraform 基於阿里雲 CLI 的全面覆蓋,可幫助使用者基於 Terraform 實現對全阿里雲資源的自動化管理。
本文是 CLI+Terraform簡化資源管理的模板編寫 的延伸,有關 Terraform 的使用和介紹可在雲棲社群搜尋相關文件,如 [雲生態下的基礎架構資源管理利器Terraform
],有關 CLI 的使用和安裝,可詳見 aliyun-cli,本文不再贅述。
Terraform 如何實現對阿里雲 CLI 的有效呼叫呢?
Terraform 如何實現對阿里雲 CLI 的自動化呼叫呢?這裡就要用到 Terraform 自身的一個 resource null_resource 和 provisioner local-exec。local-exec 是一個本地命令的執行器,它既可以被應用到已有資源,如 alicloud_instance 中,也可以在獨立的 resource null_resource 中實現對其他資源的管理。目前,阿里雲 Terraform Provider 尚未實現對阿里云云監控的支援,本文將以雲監控的報警規則為例,向大家展示如何基於 terraform 為一臺 ECS 例項新增一條雲監控報警規則。
建立演示例項 ECS
首先,基於 terraform 建立一臺 VPC 型別的 ECS,模板如下:
建立報警規則
由於 Terraform 暫時不支援對報警規則的建立,因此先使用 CLI 代替。
首先,開啟建立報警規則的 Open API 頁面。接著,根據API引數要求和請求例項,拼接 CLI 建立命令:
aliyun cms CreateAlarm --access-key-id${var.access_key}--access-key-secret${var.secret_key}--region${var.region}--Name tf-alarm --Namespace acs_ecs_dashboard --MetricName vm.MemoryUtilization --Dimensions [{\"instanceId\":\"${alicloud_instance.main.id}\"] --Statistics Average --Period 900 --ComparisonOperator "<=" --Threshold 35 --EvaluationCount 2 --ContactGroups [\"test-group\"] --EndTime 20 --StartTime 6 --NotifyType 1
CLI命令拼接好以後,利用 null_resource 和 local_exec 來執行:
resource"null_resource""main"{
provisioner"local-exec"{
command= <<EOF
aliyun cms ListAlarm --access-key-id ${var.access_key} --access-key-secret ${var.secret_key} --region ${var.region} --Name tf-alarm --Namespace acs_ecs_dashboard --Dimension [{\"instanceId\":\"${alicloud_instance.main.id}\"}]
EOF
}
}
如何簡化 CLI Command
為了更方便的管理和變更資源屬性,可以使用environment 來存放 CLI Command 中的引數值,如下所示:
值得注意的是,environment 要求 terraform version >= v0.11.4
更近一步,由於 API 的引數相對固定不變,為了提高 CLI Command 命令的可重用性,可以將 Command 存放在 Shell Script 中,如 “create_cloudmonitor.sh”,然後直接在模板中執行 “create_cloudmonitor.sh” 即可:
寫在最後
本文主要講述了 Terraform 如何 CLI 來管理自身缺失的 resource。通過本文的介紹,我們可以發現,只要阿里雲產品提供了 Open API,都可以利用 Terraform 來實現對該資源的有效管理,避免了因 Terraform resource 提供不及時而帶來的不便。
本文作者:簫竹aron
相關文章
- 為 Serverless Devs 插上 Terraform 的翅膀,實現企業級多環境部署(上)ServerdevORM
- 為Spring Cloud Config插上管理的翅膀SpringCloud
- 華為:讓精益生產插上智慧化的翅膀
- 為 Serverless Devs 插上 Terraform 的翅膀,解耦程式碼和基礎設施,實現企業級多環境部署(下)ServerdevORM解耦
- 英特爾BigDL:為大資料插上人工智慧的翅膀大資料人工智慧
- 華為雲DevCloud為虛擬模擬插上網際網路的翅膀devCloud
- 看天翼雲如何為實體工業插上“數字翅膀”
- 為人工智慧插上翅膀——北大人工智慧成果綜述人工智慧
- 世紀華通總裁謝斐:為文化傳承插上想象的翅膀
- Sophon Base 3.1 推出MLOps功能,為企業AI能力運營插上翅膀AI
- 企業數字化轉型要插上翅膀
- netty系列之:給ThreadLocal插上夢想的翅膀,詳解FastThreadLocalNettythreadAST
- 環保遙感監測,需要插上一雙AI的翅膀AI
- 空間智慧技術賦能CIM平臺,為數字住建插上翅膀
- 插上資料的翅膀,開啟我升職加薪的夢想之旅
- 民建李漢宇:運用大資料為監察體制改革插上科技翅膀大資料
- 為資料庫效能調優插上 AI 的翅膀 | 調優測試框架 Matrix 團隊訪談資料庫AI框架
- 實在智慧牽手「國貨之光」納愛斯,為中國智造插上數字化翅膀!
- 通義靈碼:體驗 AI 程式設計新技能-@workspace 和 @terminal 為你的程式設計插上一雙翅膀AI程式設計
- 澳鵬Appen:自動駕駛浪潮下,如何給技術迭代插上資料的“翅膀”?APP自動駕駛
- 頭一回見!提升10倍效率,阿里給業務校驗平臺插上了AI的翅膀阿里AI
- 將協作帶到HashiCorp Terraform CLI:介紹遠端操作ORM
- 國貿股份 x 袋鼠雲:推進全鏈業務深度數字化,為產業綜合服務插上數字化翅膀產業
- Terraform 系列-Terraform 簡介ORM
- Terraform 系列-Terraform Cloud 比 Terraform OSS 有哪些增強?ORMCloud
- Terraform - 初解Terraform - 變數ORM變數
- TerraformORM
- Terraform入門 – 1. 安裝TerraformORM
- 不為人知的easy-mock-cliMock
- Terraform使用案例ORM
- Terraform中的for_each和countORM
- Terraform初探:遷移本地專案到Terraform Cloud執行ORMCloud
- 《Terraform 101 從入門到實踐》 Terraform在公有云GCP上的應用ORMGC
- Ansible vs. TerraformORM
- vijos1237-隱形的翅膀【離散化】
- 為Vue-Cli添磚加瓦Vue
- Azure Terraform(十二)利用 Terraform 將檔案上傳到 Azure Blob StorageORM
- Azure Terraform(六)Common ModuleORM