Я экспортировал свои текущие ресурсы, используя Terraforming и получил огромный файл, который содержит все группы безопасности.
Дело в том, что в каждой группе безопасности есть некоторые правила, которые относятсяк идентификаторам групп безопасности - которых нет в новом регионе, на котором я планирую запускать terraform.например:
resource "aws_security_group" "my-group" {
name = "my-group"
description = ""
vpc_id = "${var.vpc["production"]}"
ingress {
from_port = 80
to_port = 80
protocol = "tcp"
security_groups = ["sg-25bee542"] <-- this ID doesnt exists in the new region i'm planning to work on
self = false
}
Я создал карту со всеми старыми группами безопасности:
variable "security_groups" {
type = "map"
default = {
"sg-acd22fdb" = "default"
"sg-52cd3025" = "my-group"
"sg-25bee542" = "my-group2"
...
}
}
Теперь я пытаюсь разрешить жестко закодированный sg-*id*
для соответствующей безопасностиимя группы и интерполируйте его в переменную, чтобы первый пример работал следующим образом:
resource "aws_security_group" "my-group" {
name = "my-group"
description = ""
vpc_id = "${var.vpc["production"]}"
ingress {
from_port = 80
to_port = 80
protocol = "tcp"
security_groups = ["${aws_security_group.my-group2.id}"] <-- the 'my-group2' should be resolved from the map variable
self = false
}
Что-то вроде:
resource "aws_security_group" "my-group" {
name = "my-group"
description = ""
vpc_id = "${var.vpc["production"]}"
ingress {
from_port = 80
to_port = 80
protocol = "tcp"
security_groups = ["${aws_security_group.[lookup(security_groups,sg-25bee542]].id}"] <-- the 'my-group2' string should be resolved from the map variable by looking its sg ID
self = false
}
Надеюсь, я прояснил этот вопрос ...есть идеи?