¿Cómo evito repetirme con Terraform?

¿Cómo evito repetirme con Terraform?

Recién comencé a jugar con Terraform y, como punto de partida, estaba importando recursos de nuestro clúster de vSphere, solo un entorno de prueba simple que configuré para jugar con algunas cosas de Ansible.

Descubrí que me estoy repitiendo muchísimo y me pregunto si hay una mejor manera de hacerlo. No estoy seguromódulosse ajustan a lo que busco y los recursos que estoy repitiendo no son idénticos, por lo que no estoy seguro de que un bucle directo funcione.

Efectivamente, estoy buscando establecer valores predeterminados de recursos que luego puedo extender/anular si es necesario. Un breve ejemplo ficticio que demuestra lo que quiero lograr:

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
  }
}

¿Alguien sabe cómo puedo lograr lo que estoy tratando de hacer?

ACTUALIZACIÓN: Ahora que tengo un poco más de experiencia con Terraform, los módulos son exactamente lo que quería hacer. ¡Simplemente no sabía que podía pasar parámetros! Intentaré dar más detalles cuando tenga la oportunidad. Hice algo similar recientemente y al pasar estructuras de datos al módulo pude lograr que instancias similares pero diferentes se construyeran según lo previsto.

Respuesta1

Módulos Terraformson lo que desea en caso de duplicación. Estos encapsulan ciertos recursos con valores predeterminados que usa comúnmente; un conjunto de recursos se puede reutilizar con una entrada mínima en lugar de escribirlos nuevamente.

ElRegistro del módulo Terraformcubre algunos módulos prediseñados para los proveedores más grandes, donde puede probar algunos existentes o, si su proveedor no es compatible, desarrollar una mejor imagen de cómo se debe usar y diseñar un módulo.

información relacionada