Terraform - Как использовать вывод условно созданного ресурса в условном операторе? - PullRequest
0 голосов
/ 22 мая 2019

У меня есть случай, когда мне нужно создать ресурс aws_vpc, если пользователь не предоставляет идентификатор vpc. После этого я должен создать ресурсы с этим VPC.

Теперь я применяю условия при создании ресурса aws_vpc. Например, создавать VPC, только если existing_vpc равно false:

count                = "${var.existing_vpc ? 0 : 1}"

Далее, например, мне нужно создать узлы в VPC. Если existing_vpc имеет значение true, используйте var.vpc_id, иначе используйте вычисленный идентификатор VPC из ресурса aws_vpc.

Но проблема в том, что если existing_vpc истинно, aws_vpc не будет создавать новый ресурс, и троичное условие в любом случае пытается проверить, создается ли ресурс aws_vpc или нет. Если он не создан, терраформируйте ошибки.

Пример ошибки при использовании условного оператора на aws_subnet:

Resource 'aws_subnet.xyz-subnet' not found for variable 'aws_subnet.xyz-subnet.id'

Код, приводящий к ошибке:

subnet_id = "${var.existing_vpc ? var.subnet_id : aws_subnet.xyz-subnet.id}"

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

...