[英]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.