Создавайте снимки нескольких томов EBS с помощью Terraform - PullRequest
0 голосов
/ 02 ноября 2018

Я пытаюсь создать снимки определенных томов EBS на основе тегов в определенном регионе AWS с помощью Terraform. Я попытался отфильтровать тома EBS на основе тегов. Я могу получить четкий вывод идентификатора тома EBS, когда в атрибуте фильтра указано только одно значение тега, но для нескольких значений я получаю следующую ошибку:

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

Существует ли четкий способ создания моментальных снимков нескольких томов EBS с использованием любого оператора зацикливания в terraform?

1 Ответ

0 голосов
/ 02 ноября 2018

Вы можете использовать мета-параметр 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]}"
}
...