Перемешивание между подсетями из двух карт terraform в качестве входных данных для создания экземпляра ec2 - PullRequest
1 голос
/ 11 июля 2019

У меня есть два набора CIDR для каждой среды, я хотел бы, чтобы terraform перемещалась между двумя наборами при создании нового экземпляра.

Я посмотрел на поставщика terraform random_shuffle и функцию слияния, но они не дают решения моей проблемы.

resource "aws_subnet" "myapp" {
  cidr_block = "${cidrsubnet(var.vpc_cidr[terraform.workspace], 5, count.index + 16 + 5)}"
}

variable "vpc_cidr" {
  type = "map"

  default = {
    QA   = "20.30.100.0/23"
    TEST = "20.37.200.0/23"
    PROD = "20.37.200.0/23"
    DEV  = "20.37.100.0/23"
  }
}

locals {
  "vpc_cidr_2" = {
    QA   = "10.30.182.0/23"
    TEST = "10.37.238.0/23"
    PROD = "<none>"
    DEV  = "<none>"
  }
}

Я бы хотел, чтобы cidr_block вычислялся на основе либоvpc_cidr или vpc_cidr2 и перетасовывать между ними.Кроме того, он должен будет проверить и вернуться к другой карте, если найден.

Примечание: vpc_cidr - переменная, а vpc_cidr_2 - локальная.

1 Ответ

0 голосов
/ 11 июля 2019

random_shuffle - это правильный ресурс, над которым вы должны поработать, но вам нужно изменить идею, чтобы смешивать переменные и локальные значения.

resource "aws_subnet" "myapp" {
  vpc_id     = "${aws_vpc.main.id}"
  cidr_block = "${cidrsubnet(lookup(var.vpc_cidr[random_shuffle.vpc_cidr.result], terraform.workspace), 5, count.index + 16 + 5)}"
}

resource "random_shuffle" "vpc_cidr" {
  input = ["vpc_cidr", "vpc_cidr_2"]
}

variable "vpc_cidr" {
  type = "map"

  default = {
    vpc_cidr = {
      "QA"   = "20.30.100.0/23"
      "TEST" = "20.37.200.0/23"
      "PROD" = "20.37.200.0/23"
      "DEV"  = "20.37.100.0/23"
    }

    vpc_cidr_2 = {
      "QA"   = "10.30.182.0/23"
      "TEST" = "10.37.238.0/23"
      "PROD" = "<none>"
      "DEV"  = "<none>"
    }
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...