Назад | Перейти на главную страницу

Как мне избежать повторения с 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 то, что вы хотите в случае дублирования. Они инкапсулировали определенные ресурсы со значениями по умолчанию, которые вы обычно используете, вы можете повторно использовать набор ресурсов с минимальным вводом вместо их повторной записи.

В Реестр модулей Terraform охватывает несколько готовых модулей для более крупных провайдеров, где вы можете опробовать некоторые существующие или - если ваш провайдер не поддерживается - разработать лучшее изображение того, как модуль должен использоваться и проектироваться.