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에 대한 경험이 좀 더 많아졌으므로 모듈이 바로 제가 원했던 것입니다. 저는 매개변수를 전달할 수 있다는 것을 몰랐습니다! 기회가 되면 자세히 다루도록 노력하겠습니다. 나는 최근에 비슷한 일을 했고 데이터 구조를 모듈에 전달함으로써 유사하지만 다른 인스턴스를 의도한 대로 빌드할 수 있었습니다.

답변1

Terraform 모듈중복의 경우 원하는 것입니다. 이러한 특정 리소스는 일반적으로 사용하는 기본값으로 캡슐화되어 리소스 세트를 다시 작성하는 대신 최소한의 입력으로 재사용할 수 있습니다.

그만큼Terraform 모듈 레지스트리대규모 제공자를 위해 미리 만들어진 몇 가지 모듈을 다룹니다. 여기서 기존 모듈을 시험해 볼 수 있습니다. 또는 제공자가 지원되지 않는 경우 모듈을 사용하고 설계하는 방법에 대한 더 나은 그림을 개발할 수 있습니다.

관련 정보