У меня есть случай, когда мне нужно создать ресурс 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}"
Если обе вещи зависят друг от друга, как мы можем создавать условные ресурсы и присваивать значения другой конфигурации на их основе?