Разница между локальными значениями и источником null_data_source для промежуточных значений в Terraform - PullRequest
0 голосов
/ 30 октября 2019

У меня есть ситуация, когда мне нужно сохранить некоторые промежуточные значения, чтобы я мог использовать их в других частях корневого модуля. Я знаю о локальных значениях и знаю о null_data_source, за исключением того, что не знаю, какой из них является рекомендуемым вариантом для хранения значений многократного использования. Оба описания выглядят несколько похожими на меня

локальные значения (https://www.terraform.io/docs/configuration/locals.html)

Локальные значения могут помочь избежать повторения одних и тех же значений или выражений несколько раз вa> конфигурации, но при чрезмерном использовании они также могут затруднить чтение конфигурации будущими> сопровождающими, скрывая фактические используемые значения.

и null_data_source (https://www.terraform.io/docs/providers/null/data_source.html)

Основной вариант использования для нулевого источника данных состоит в том, чтобы собрать вместе наборы промежуточных> значений для повторного использования в другом месте конфигурации:

Таким образом, оба они кажутся действительнымивыбор для этого сценария.

Вот мой пример кода

locals {
  my_string_A = "This is string A"
}

data "null_data_source" "my_string_B" {
  inputs = {
    my_string_B = "This is string B"
  }
}

output "my_output_a" {
  value = "${local.my_string_A}"
}

output "my_output_b" {
  value = "${data.null_data_source.my_string_B.outputs["my_string_B"]}"
}

Не могли бы вы подсказать, когда использовать один над другим для хранения промежуточных значений и каковы плюсы / минусы каждогоподход?

Спасибо

1 Ответ

0 голосов
/ 30 октября 2019

Источник данных null_data_source был введен до появления механизма локальных значений как временное решение для удовлетворения этого варианта использования до того, как эта возможность стала первоклассной в языке. Он по-прежнему поддерживается только для обратной совместимости с существующими конфигурациями, использующими его.

Все новые конфигурации должны использовать вместо этого механизм локальных значений. Он полностью интегрирован в язык Terraform, поддерживает значения любого типа (в то время как null_data_source может поддерживать только строки) и имеет гораздо более краткий / читаемый синтаксис.

...