План Terraform «Известный после применения» - как узнать, удалась ли моя интерполяция?
Вот отрывок из моей успешной
terraform plan
~ primary_network_interface_id = "eni-XXXXXXXXXXXXX -> (known after apply)
~ private_dns = "shshshshshshshshhs" -> (known after apply)
~ private_ip = "XXXXXXXXXXXXXXXXXX" -> (known after apply)
+ public_dns = (known after apply)
+ public_ip = (known after apply)
~ secondary_private_ips = [] -> (known after apply)
~ security_groups = [] -> (known after apply)
Вышеизложенное является частью
aws_instance
ресурс импортирован как внутренний модуль. Я собираюсь передать список идентификаторов групп безопасности через переменную
security_groups
так что во время создания ресурса он будет сопоставлен с
vpc_security_group_ids
. Однако с описанным выше планом я не понимаю, насколько он успешно нанесен на карту.
Мой вопрос - как я узнаю, что
apply
будет работать?
Known after apply
это вроде 50-50 в этом случае? Кроме того, не удалось ничего обнаружить в документации по TF, поэтому, если что-то есть, я был бы признателен, если бы кто-нибудь мог указать мне в этом направлении.
Спасибо,
1 ответ
В языке Terraform значение "неизвестно", которое средство визуализации плана отображает как
Неизвестные значения исходят от поставщиков, которые, как ожидается, ответят на запрос планирования, вернув столько результата, сколько они могут предсказать на основе уже доступной информации, но пометив все, что они не могут знать без дополнительной информации, как «неизвестное».
Затем на языке Terraform любая операция, выполняемая в выражении, результат которого требует знания значения, помеченного как неизвестное, приведет к тому, что этот результат, в свою очередь, также будет неизвестен.
В вашем случае похоже, что вы построили это
~ security_groups = [
+ (known after apply),
+ "sg-abc123",
+ (known after apply),
]
Таким образом, самый общий ответ на ваш вопрос заключается в том, что если вам нужно или вы хотите, чтобы что-то было известно во время планирования, вам необходимо тщательно решить, как вы будете вычислять этот результат, чтобы информация, необходимая для понимания плана, была видна. там, где вам это нужно. Иногда это возможно сделать, если внимательно подумать о том, как вы определяете определенные значения, например, определяя длину списка на основе чего-то известного в конфигурации, даже если некоторые элементы внутри списка могут быть неизвестны.
Например, если вы создаете набор объектов, используя один ресурс с set, тогда
Есть несколько ситуаций , где не нет ответа до тех пор , как вы хотите , чтобы применить все изменения в одном шаге: Terraform не может показать вам , что он не знает. В этом случае, если знание этих результатов для определенного значения является важной частью вашего процесса, вы можете решить разделить конфигурацию на две отдельные конфигурации, которые вы будете применять отдельно по порядку. Затем вы можете использовать источники данных, чтобы вторая конфигурация могла найти любые необходимые объекты, созданные первой конфигурацией.