Terraform中DataSource的深度分析
一、DataSource功能介紹
DataSource是Terraform官方提供的插件功能,各個Provider可以實現自己的DataSource能力,目的是通過DataSource中的定義過濾需要的數據,一是簡化模板編寫時數據過濾的複雜性,二是各個資源對Data源的引用保持一致,比如想要知道“華北2”下CPU為1核,內存為1G的ECS實例類型是什麼,就可以用DataSource,如果想引用這個數據源,就可以這樣使用"${data.alicloud_instance_types.1c1g.instance_types.0.id}"。
二、阿裏雲DataSource的功能增強
阿裏雲的DataSource在Terraform原生的功能上做了增強:
- 不僅可以作為資源引用過濾使用,還支持導出過濾結果;
- 並且在"plan"時就可以看到文件(原生的功能隻能在實"apply"時才可使用,很不方便);
- 更強大的是在過濾ECS實例類型時如果入參沒有可選的資源,會提示支持的類型都有哪些;
DataSource目前支持Region、可用區、鏡像、ECS實例類型、VPC、keyPair,如果有用戶想知道都有哪些鏡像ID,就可以通過DataSource執行後查看導出的文件獲取數據,即便是不用於Terraform中也可以做為一個小工具使用。源碼詳見 https://github.com/alibaba/terraform-provider/tree/master/alicloud 中以data_source開頭的文件。
三、例子
下麵以ECS實例類型為例,深度講解如何使用:
需求場景:想要創建一台ECS,條件:Region是華北2,CPU為1核,內存1G,想要知道有哪些實例類型可用。
datasource的代碼如下:
data "alicloud_instance_types" "1c1g" {
cpu_core_count = 1
memory_size = 1
"output_file" = "instance_type.json" //重點是這句,指明導出的文件名
}
執行“terraform plan”,即可看到輸出的文件 instance_type.json的文件,我們查看文件內容如下:
返回字段說明如下:
- 除了入參"cpu_core_count"和"memory_size"外,我們看到還有兩個返回參數,一個是family,一個是id,family即是ECS實例類型家族,id即是具體的實例類型。
怎麼樣,是不是很簡單?
如果你曾經被阿裏雲的ECS複雜約束而困擾,如果你不知道去哪裏找實例類型、鏡像、可用區,如果你輸入的實例類型不符合要求,但又不知道怎麼寫是正確的,快快用起DataSource功能吧。
最後更新:2017-07-21 15:02:43
上一篇:
首款基於 DynamIQ 的高性能 嵌入式處理器Cortex-A75
下一篇:
物聯網普而不及 仍缺殺手級應用
重慶首輛“免費WiFi公交”上街
QString和string類型相互轉換
周鴻禕:集中優勢兵力,單點突破
java.text.format 將字符串“060503”轉化為06:05:03或者將"20081002102030“轉化為2008-10-02 10:00:30
靜態局部變量
MSSQL 2000 錯誤823恢複
java 企業網站源碼 後台 springmvc SSM 前台freemaker 靜態化 代碼生成器
ImageView控件開發效果總結(邊框效果,濾鏡效果)
物聯網時代將至 安全問題的思與變
《麵向機器智能的TensorFlow實踐》TensorFlow與機器學習基礎