我剛開始使用 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 有了更多的經驗,模組正是我想做的事。我只是不知道我可以傳遞參數!當我有機會時,我會嘗試詳細說明。我最近做了類似的事情,透過將資料結構傳遞到模組中,我可以獲得類似但不同的實例來按預期建置。
答案1
地形模組是您在重複時想要的。這些資源以您常用的預設值封裝了某些資源,您可以透過最少的輸入重複使用一組資源,而不用再次編寫它們。
這Terraform 模組註冊表涵蓋了一些針對大型提供者的預製模組,您可以在其中嘗試一些現有的模組,或者 - 如果您的提供者不受支援 - 開發一個更好的圖片來說明如何使用和設計模組。