Terraform中一个mongodbatlas_project_ip_access_list资源创建成功,另一个报count依赖属性需apply确定的错误,求排查及-target用法示例
Terraform中一个mongodbatlas_project_ip_access_list资源创建成功,另一个报count依赖属性需apply确定的错误,求排查及-target用法示例
问题排查分析
从你的描述来看,大概率是Terraform状态依赖顺序的问题:
- 你的
eventingester函数应用已经成功创建并被Terraform记录到状态文件中了,所以它的outbound_ip_address_list是确定的数值,对应的IP白名单资源能正常计算count并创建。 - 而
inventoryapi函数应用虽然你在单独.tf文件里定义了,但可能还没有被实际apply过(或者Terraform在当前plan阶段还没能确认它的outbound_ip_address_list具体值),导致length(azurerm_windows_function_app.inventoryapi.outbound_ip_address_list)这个表达式无法得到确定的结果,进而报错无法创建对应的IP白名单资源。
解决方法及-target用法示例
你可以通过-target参数先单独创建inventoryapi函数应用,让Terraform获取到它的出站IP列表并写入状态文件,之后再创建对应的IP白名单。
具体步骤如下:
- 首先执行以下命令,仅apply
inventoryapi函数应用资源:
terraform apply -target="azurerm_windows_function_app.inventoryapi"
这个命令会告诉Terraform只处理指定的资源,忽略其他资源的变更。执行完成后,Terraform就会把inventoryapi的出站IP信息保存到状态文件里。
- 等待上面的命令执行成功后,再运行完整的apply命令:
terraform apply
这时候Terraform就能读取到inventoryapi的outbound_ip_address_list的具体值,正确计算count,从而顺利创建对应的MongoDB Atlas IP白名单资源。
额外提示
如果之后你还遇到类似的依赖问题,也可以通过terraform state list命令查看当前状态文件里已有的资源,确认inventoryapi函数应用是否已经被正确记录,这能帮你快速定位问题所在。
备注:内容来源于stack exchange,提问作者JsonStatham
相关产品推荐
相关产品推荐

