Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ionic-framework/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Terraform 从一个计划到另一个计划的资源输出值_Terraform_Terraform Template File - Fatal编程技术网

Terraform 从一个计划到另一个计划的资源输出值

Terraform 从一个计划到另一个计划的资源输出值,terraform,terraform-template-file,Terraform,Terraform Template File,我有两个计划,在这两个计划中,我创建了两个不同的服务器(举个例子,否则会非常复杂)。在一个计划中,我输出安全组的值,如下所示: output "security_group_id" { value = "${aws_security_group.security_group.id}" } 我有第二个计划,在这个计划中,我想利用这个价值,我如何才能实现它,我已经尝试了几件事,但都不管用 我知道如何使用模块返回的输出值,但不知道如何将一个计划的输出用于另一个计划。当在配置的顶级模块(运行地形计

我有两个计划,在这两个计划中,我创建了两个不同的服务器(举个例子,否则会非常复杂)。在一个计划中,我输出安全组的值,如下所示:

output "security_group_id" {
  value = "${aws_security_group.security_group.id}"
}
我有第二个计划,在这个计划中,我想利用这个价值,我如何才能实现它,我已经尝试了几件事,但都不管用


我知道如何使用
模块返回的
输出
值,但不知道如何将一个计划的
输出
用于另一个计划。

当在配置的顶级模块(运行
地形计划
的目录)中使用输出时,其值将记录在地形状态中

为了使用其他配置中的此值,必须将状态发布到其他配置可以读取的位置。实现这一点的通常方法是使用

在为第一个配置启用远程状态的情况下,可以使用从第二个配置读取结果值

例如,可以使用如下后端配置来保持Amazon S3中第一个配置的状态:

terraform {
  backend "s3" {
    bucket = "example-s3-bucket"
    key    = "example-bucket-key"
    region = "us-east-1"
  }
}
将此添加到第一个配置后,Terraform将提示您运行
Terraform init
以初始化新的后端,其中包括迁移要存储在S3上的现有状态

然后,在第二种配置中,可以通过向
terraform\u remote\u状态提供相同的配置来检索:

data "terraform_remote_state" "example" {
  backend = "s3"
  config {
    bucket = "example-s3-bucket"
    key    = "example-bucket-key"
    region = "us-east-1"
  }
}

resource "aws_instance" "foo" {
  # ...
  vpc_security_group_ids = "${data.terraform_remote_state.example.security_group_id}"
}

请注意,由于第二个配置正在从第一个配置读取状态,因此有必要
terraform应用第一个配置
。当第一个配置中的输出更改时,必须重新应用第二个配置。

对于
本地
后端,过程相同。在第一步中,我们需要声明以下代码段来发布状态

terraform {
 backend local {
    path = "./terraform.tfstate" 
  }
}
当您执行
terraform init和terraform apply
命令时,请注意在
.terraform
目录新建
terraform.tfsate
文件将被创建,其中包含后端信息,并告诉terraform使用以下
tfstate
文件

现在,在第二种配置中,我们需要使用
数据源
通过使用此代码段导入输出

 data "terraform_remote_state" "test" {

 backend = "local"
  config {
    path = "${path.module}/../regionalvpc/terraform.tfstate"
  }
}

如果我有本地<代码>状态文件怎么办?避免使用本地状态文件,尽管你不想使用本地文件。