我正在尝试使用Terraform创建某些EBS卷的快照,这些快照基于特定AWS区域中的标记。我尝试过基于标签过滤EBS卷。当筛选器属性中只指定一个标记值时,我可以获得EBS卷id的清晰输出,但对于多个值,我得到以下错误:
data.aws_ebs_volume.ebs_volume: data.aws_ebs_volume.ebs_volume:查询返回多个结果。请尝试更具体的搜索条件,或者将
most_recent属性设置为true。
下面是我的地形模板:
data "aws_ebs_volume" "ebs_volume" {
filter {
name = "tag:Name"
values = ["EBS1","EBS2","EBS3"]
}
}
output "ebs_volume_id" {
value = "${data.aws_ebs_volume.ebs_volume.id}"
}
resource "aws_ebs_snapshot" "ebs_volume" {
volume_id = "${data.aws_ebs_volume.ebs_volume.id}"
}是否有明确的方法使用terraform中的任何一种循环语句来创建多个EBS卷的快照?
发布于 2018-11-02 07:52:24
您可以使用 meta parameter循环列表,创建多个资源或数据源。
在你的例子中,你可以这样做:
variable "ebs_volumes" {
default = [
"EBS1",
"EBS2",
"EBS3",
]
}
data "aws_ebs_volume" "ebs_volume" {
count = "${length(var.ebs_volumes)}"
filter {
name = "tag:Name"
values = ["${var.ebs_volumes[count.index]}"]
}
}
output "ebs_volume_ids" {
value = ["${data.aws_ebs_volume.ebs_volume.*.id}"]
}
resource "aws_ebs_snapshot" "ebs_volume" {
count = "${length(var.ebs_volumes)}"
volume_id = "${data.aws_ebs_volume.ebs_volume.*.id[count.index]}"
}https://stackoverflow.com/questions/53113777
复制相似问题