Terraform数据源中的获取值与计算值

时间:2018-09-28 14:34:32

标签: terraform

根据Terraform文档,可以使用不同的提供程序实现将数据源用于获取或计算值。

参考-https://www.terraform.io/docs/configuration/data-sources.html

计算的和获取的区别到底是什么,最好是在一个具体示例中?

1 个答案:

答案 0 :(得分:2)

区别很小:

从总体上讲,已提取数据在运行模板之前就已存在,并且在运行时会创建计算数据。

获取的数据将与参考文献中的示例相似。这里Terraform正在获取有关AMI的信息,然后可将其用于构建EC2实例:

data "aws_ami" "web" {
  filter {
    name   = "state"
    values = ["available"]
  }

  filter {
    name   = "tag:Component"
    values = ["web"]
  }

  most_recent = true
}

通常可以将计算数据定义为在Terraform启动之前不存在的数据,但是会随着模板的进行而生成(计算)。例如,如果要创建要与EC2实例一起使用的EIP,则应运行:

resource "aws_eip" "ip" {
  instance = "${aws_instance.example.id}"
}

由此,随着EIP的创建,几位信息将computed

+ aws_eip.ip
    allocation_id:     "<computed>"
    association_id:    "<computed>"
    domain:            "<computed>"
    instance:          "${aws_instance.example.id}"
    network_interface: "<computed>"
    private_ip:        "<computed>"
    public_ip:         "<computed>"

然后可以在其他资源中使用这些computed值。例如例如,将aws_eip.ip.public_ip传递给安全组。