根据Terraform文档,可以使用不同的提供程序实现将数据源用于获取或计算值。
参考-https://www.terraform.io/docs/configuration/data-sources.html
计算的和获取的区别到底是什么,最好是在一个具体示例中?
答案 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
传递给安全组。