我有一个情况,如果用户不提供 vpc id,我必须创建 aws_vpc 资源。之后,我应该使用该 VPC 创建资源。
现在,我在创建资源时应用条件aws_vpc。例如,仅当existing_vpc为 false 时才创建 VPC:
count = "${var.existing_vpc ? 0 : 1}"
Run Code Online (Sandbox Code Playgroud)
接下来,例如,我必须在 VPC 中创建节点。如果existing_vpc为 true,则使用var.vpc_id,否则使用从资源计算出的 VPC ID aws_vpc。
但是,问题是,如果existing_vpc为 true,aws_vpc则不会创建新资源,并且三元条件无论如何都会尝试检查资源是否aws_vpc正在创建。如果没有创建,terraform 就会出错。
在 上使用条件运算符时出现错误的示例aws_subnet:
Resource 'aws_subnet.xyz-subnet' not found for variable 'aws_subnet.xyz-subnet.id'
Run Code Online (Sandbox Code Playgroud)
导致错误的代码是:
subnet_id = "${var.existing_vpc ? var.subnet_id : aws_subnet.xyz-subnet.id}"
Run Code Online (Sandbox Code Playgroud)
如果两者相互依赖,我们如何创建条件资源并根据它们为其他配置分配值?