Terraform
如何避免重複使用 Terraform?
我剛剛開始使用 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 不受支持 - 為應該如何使用和設計模組開發更好的圖片。