Terraform 脚本之间的共享资源

Terraform 脚本之间的共享资源,terraform,Terraform,很抱歉我的问题。。。我试图找出一种在我的tf脚本之间共享资源的方法,但是我找不到任何东西,所以我可能在寻找错误的关键字 假设我有3个脚本: base/base.tf one/one.tf two/two.tf base创建一个aws vpc和一个网络负载平衡器 一号和二号是两个ecs fargate服务。他们创建任务定义,并将mappind添加到网络负载平衡器中 我的目标是在负载平衡器中跟踪映射端口,并从1和2读取和更新它 差不多 基本设置最后一个_端口为14000 一个读取最后一个_端口,增

很抱歉我的问题。。。我试图找出一种在我的tf脚本之间共享资源的方法,但是我找不到任何东西,所以我可能在寻找错误的关键字

假设我有3个脚本:

base/base.tf
one/one.tf
two/two.tf
base创建一个aws vpc和一个网络负载平衡器 一号和二号是两个ecs fargate服务。他们创建任务定义,并将mappind添加到网络负载平衡器中

我的目标是在负载平衡器中跟踪映射端口,并从1和2读取和更新它

差不多 基本设置最后一个_端口为14000 一个读取最后一个_端口,增加1并更新值 最后读取两次_端口,增加1并更新值

有可能吗


感谢

在Terraform中解决这个问题的一般方法是,它是从其他地方检索数据的特殊资源,而不是自己创建和管理对象

为了使用数据源,您希望共享的数据必须在某个地方发布。为了在Terraform配置之间共享,您需要一个可由Terraform写入和读取的数据存储位置

既然您提到了ECS Fargate,我假设您使用的是AWS,在这种情况下,合理的选择是将数据存储在AWS SSM参数存储中,然后让其他配置读取数据

创建数据的配置将用于创建新参数:

resource "aws_ssm_parameter" "foo" {
  name  = "port_number"
  type  = "String"
  value = aws_lb_listener.example.port
}
然后,将使用此数据的配置可以使用以下方法读取数据:

但是,您的问题讨论了一个配置读取值、递增值并将新值写回同一位置的可能性。这在Terraform中是不可能的,因为Terraform是一个声明性系统,它使用静态所需状态的描述。只有一种配置可以管理每个对象,尽管许多配置可以读取对象

Terraform不需要动态分配端口号,而是需要以下两种解决方案之一:

  • 使用其他一些系统持久地管理端口分配,这样一旦为特定的调用者分配了端口号,它将始终获得相同的端口号。我不知道有任何现有的系统是为此而构建的,所以在这种情况下,这可能不是一个可行的选择,但如果这样的系统确实存在,那么我们将在Terraform中对其进行建模,使用代表特定端口分配的资源类型,当港口不再需要时,哪个地形最终会和所有其他基础设施一起被摧毁
  • 决定一种系统化的方法,为每个系统分配一致的端口号,这样每个配置就可以知道(通过硬编码或某些确定性计算)应该使用哪个端口号

在Terraform中,这个问题的一般解决方案是,它是从其他地方检索数据的特殊资源,而不是自己创建和管理对象

为了使用数据源,您希望共享的数据必须在某个地方发布。为了在Terraform配置之间共享,您需要一个可由Terraform写入和读取的数据存储位置

既然您提到了ECS Fargate,我假设您使用的是AWS,在这种情况下,合理的选择是将数据存储在AWS SSM参数存储中,然后让其他配置读取数据

创建数据的配置将用于创建新参数:

resource "aws_ssm_parameter" "foo" {
  name  = "port_number"
  type  = "String"
  value = aws_lb_listener.example.port
}
然后,将使用此数据的配置可以使用以下方法读取数据:

但是,您的问题讨论了一个配置读取值、递增值并将新值写回同一位置的可能性。这在Terraform中是不可能的,因为Terraform是一个声明性系统,它使用静态所需状态的描述。只有一种配置可以管理每个对象,尽管许多配置可以读取对象

Terraform不需要动态分配端口号,而是需要以下两种解决方案之一:

  • 使用其他一些系统持久地管理端口分配,这样一旦为特定的调用者分配了端口号,它将始终获得相同的端口号。我不知道有任何现有的系统是为此而构建的,所以在这种情况下,这可能不是一个可行的选择,但如果这样的系统确实存在,那么我们将在Terraform中对其进行建模,使用代表特定端口分配的资源类型,当港口不再需要时,哪个地形最终会和所有其他基础设施一起被摧毁
  • 决定一种系统化的方法,为每个系统分配一致的端口号,这样每个配置就可以知道(通过硬编码或某些确定性计算)应该使用哪个端口号

您所说的最后一个端口是什么意思?附加
.tf
文件也会很有帮助!你所说的最后一个端口是什么意思?附加你的
.tf
文件也会很有帮助!