Terraform

如何避免重複使用 Terraform?

  • December 15, 2021

我剛剛開始使用 Terraform,作為起點,我從我們的 vSphere 集群中導入資源 - 只是我設置的一個簡單的測試環境來玩一些 Ansible 的東西。

我發現自己重複了很多次,想知道是否有更好的方法來做到這一點。我不確定模組是否適合我所追求的,我重複的資源也不相同,所以我不確定直接循環是否有效。

實際上,我正在尋找設置資源預設值,然後我可以在需要時擴展/覆蓋。一個簡短的虛構範例,展示了我想要實現的目標:

resource_defaults "vsphere_virtual_machine" {
 resource_pool_id = "${data.vsphere_resource_pool.pool.id}"
 datastore_id     = "${data.vsphere_datastore.datastore.id}"

 num_cpus = 2
 memory   = 1024                                                                                                      guest_id = "other3xLinux64Guest"                                                                                   
 network_interface {
   network_id = "${data.vsphere_network.network.id}"                                                                  }

 disk {
   label = "disk0"
   size  = 20
 }
}

resource "vsphere_virtual_machine" "node1" {
 name             = "terraform-test"
}

resource "vsphere_virtual_machine" "doublenet" {
 name             = "terraform-test-2"
 network_interface {
   network_id = "${data.vsphere_network.other_network.id}"
 }                                                                                                                  
}

resource "vsphere_virtual_machine" "bigdisk" {
 name             = "terraform-test-3"
 disk {
   label = "disk0"
   size  = 100
 }
}

有誰知道我怎樣才能實現我想要做的事情?

更新:現在我對 Terraform 有了更多的經驗,模組正是我想做的。我只是不知道我可以傳入參數!有機會我會盡量詳細說明。我最近做了類似的事情,通過將資料結構傳遞到模組中,我可以獲得相似但不同的實例來按預期建構。

Terraform 模組是您在複製時想要的。這些用你常用的預設值封裝了某些資源,你可以用最少的輸入重複使用一組資源,而不用重新編寫它們。

Terraform 模組系統資料庫涵蓋了一些用於大型 Provider的預製模組,您可以在其中嘗試一些現有的模組,或者 ​​- 如果您的 Provider 不受支持 - 為應該如何使用和設計模組開發更好的圖片。

引用自:https://serverfault.com/questions/928460