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