Я только что начал работать с 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
Модули терраформингато, что вам нужно в случае дублирования. Они инкапсулировали определенные ресурсы со значениями по умолчанию, которые вы обычно используете, вы можете повторно использовать набор ресурсов с минимальным вводом вместо того, чтобы писать их снова.
TheРеестр модулей Terraformохватывает несколько готовых модулей для крупных поставщиков, где вы можете опробовать некоторые из существующих или — если ваш поставщик не поддерживается — разработать более четкую картину того, как следует использовать и проектировать модуль.