You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Terraform执行apply后未实际创建cloudfoundry_network_policy的排查求助

问题:Terraform创建CloudFoundry网络策略无报错但未生效?

我按照官方文档用Terraform创建CloudFoundry Network Policy以实现容器间网络,HCL代码如下:

resource "cloudfoundry_network_policy" "my-policy" {

  policy {
    source_app = "source-app-name"
    destination_app = "destination-app-name"
    port = "8080"
  }
}

执行terraform apply看似正常,但实际未创建策略。再次执行时,Terraform会尝试重新创建,输出如下:

~ resource "cloudfoundry_network_policy" "my-policy" {
      id = "some-GUID-here"

    + policy {
        + destination_app = "destination-app-name"
        + port            = "8080"
        + protocol        = "tcp"
        + source_app      = "source-app-name"
      }
  }

无论使用真实还是虚假的应用名称,结果均一致:无报错但策略未创建,cf network-policies命令始终看不到新策略。推测错误被隐藏,请问该从何处排查?如何创建可用的cloudfoundry_network_policy资源?


排查方向与修复方案

排查步骤

  • 开启Terraform调试日志:执行TF_LOG=DEBUG terraform apply,查看CloudFoundry Provider与API的交互细节,重点关注策略创建请求的返回值,确认是否存在权限不足、应用不存在等隐性报错。
  • 验证CloudFoundry账号权限:确保Terraform使用的CF账号拥有目标空间的space.developer或全局network.admin权限,部分CF API在无权限时会返回200状态码但不执行实际操作。
  • 手动调用CF API测试:用cf curl直接发起策略创建请求,观察返回的明确错误信息,示例命令:
    cf curl /v2/network_policies -X POST -d '{
      "source_app_guid": "<source-app-guid>",
      "destination_app_guid": "<destination-app-guid>",
      "protocol": "tcp",
      "port": 8080
    }'
    

代码修复核心要点

当前代码的关键问题是使用了应用名称而非GUID,cloudfoundry_network_policy的source_app和destination_app字段要求传入应用的GUID,而非显示名称。修改代码如下:

  1. 通过数据源获取应用GUID:
data "cloudfoundry_app" "source_app" {
  name  = "source-app-name"
  space = "<目标空间名称或GUID>"
}

data "cloudfoundry_app" "dest_app" {
  name  = "destination-app-name"
  space = "<目标空间名称或GUID>"
}
  1. 在网络策略资源中引用GUID:
resource "cloudfoundry_network_policy" "my-policy" {
  policy {
    source_app      = data.cloudfoundry_app.source_app.id
    destination_app = data.cloudfoundry_app.dest_app.id
    port            = 8080
    protocol        = "tcp" # 建议显式指定,默认值为tcp但显式配置更清晰
  }
}

额外注意事项

  • 确保源应用与目标应用处于同一CloudFoundry空间内,跨空间网络策略需要额外的全局权限配置。
  • 执行terraform plan时,确认数据源能正确拉取到应用GUID,避免因应用名称拼写错误导致GUID为空。

内容的提问来源于stack exchange,提问作者John Skiles Skinner

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.20 10:25:06