Como evito me repetir com o Terraform?

Como evito me repetir com o Terraform?

Acabei de começar a brincar com o Terraform e, como ponto de partida, estava importando recursos de nosso cluster vSphere - apenas um ambiente de teste simples que configurei para brincar com algumas coisas do Ansible.

Descobri que estou me repetindo muito e me perguntando se existe uma maneira melhor de fazer isso. Eu não tenho certezamódulosse ajusta ao que procuro e os recursos que estou repetindo não são idênticos, por isso não tenho certeza se um loop direto funciona.

Efetivamente, estou procurando definir padrões de recursos que posso estender/substituir, se necessário. Um pequeno exemplo fictício que demonstra o que desejo alcançar:

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

Alguém sabe como posso conseguir o que estou tentando fazer?

ATUALIZAÇÃO: Agora que tenho um pouco mais de experiência com Terraform, módulos são exatamente o que eu queria fazer. Eu simplesmente não sabia que poderia passar parâmetros! Tentarei elaborar quando tiver oportunidade. Fiz algo semelhante recentemente e, ao passar estruturas de dados para o módulo, consegui que instâncias semelhantes, mas diferentes, fossem construídas conforme planejado.

Responder1

Módulos Terraformsão o que você deseja em caso de duplicação. Esses recursos encapsulados com valores padrão que você normalmente usa, um conjunto de recursos pode ser reutilizado com entrada mínima em vez de gravá-los novamente.

ORegistro do módulo Terraformabrange alguns módulos pré-fabricados para os Provedores maiores, onde você pode experimentar alguns dos existentes ou - se o seu Provedor não for suportado - desenvolver uma imagem melhor de como um módulo deve ser usado e projetado.

informação relacionada