簡體   English   中英

使用Terraform創建多個EBS卷的快照

[英]Create snapshots of multiple EBS volumes using Terraform

我正在嘗試使用Terraform基於特定AWS區域中的標簽創建某些EBS卷的快照。 我曾嘗試根據標簽過濾EBS卷。 當在filter屬性中僅指定一個標記值但對於多個值時,我可以獲得清晰的EBS卷id輸出,但出現以下錯誤:

data.aws_ebs_volume.ebs_volume:data.aws_ebs_volume.ebs_volume:您的查詢返回了多個結果。 請嘗試更具體的搜索條件,或將most_recent屬性設置為true。

以下是我的Terraform模板:

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卷的快照?

您可以使用count元參數來遍歷列表,創建多個資源或數據源。

在您的情況下,您可以執行以下操作:

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]}"
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM