首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Terraform创建多个EBS卷的快照

使用Terraform创建多个EBS卷的快照
EN

Stack Overflow用户
提问于 2018-11-02 06:43:13
回答 1查看 825关注 0票数 0

我正在尝试使用Terraform创建某些EBS卷的快照,这些快照基于特定AWS区域中的标记。我尝试过基于标签过滤EBS卷。当筛选器属性中只指定一个标记值时,我可以获得EBS卷id的清晰输出,但对于多个值,我得到以下错误:

data.aws_ebs_volume.ebs_volume: data.aws_ebs_volume.ebs_volume:查询返回多个结果。请尝试更具体的搜索条件,或者将most_recent属性设置为true。

下面是我的地形模板:

代码语言:javascript
复制
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卷的快照?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-11-02 07:52:24

您可以使用 meta parameter循环列表,创建多个资源或数据源。

在你的例子中,你可以这样做:

代码语言:javascript
复制
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]}"
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53113777

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档