AWS Codepipeline с Terraform - Как динамически создавать этапы - PullRequest
1 голос
/ 11 июня 2019

Я разработал модуль кодовой линии AWS, используя модуль terraform, у меня есть несколько реальных кодовых линий, использующих модуль codepipeline. Я использую модуль в качестве шаблона проектирования, потому что все кодовые линии выглядят одинаково, за исключением того, что некоторые из них нуждаются в этапах утверждения, а некоторые - нет. Как спроектировать этапы утверждения модуля codepipeline, чтобы фактические codepipelines могли быть созданы на основе различных потребностей?

Я пытался использовать count = 0 или 1 для управления этапом, но он не работает, потому что этап не на уровне ресурсов. Есть ли хитрый способ или обходной путь?

Я чувствую, что эта ссылка задала аналогичный вопрос, но я не могу понять, каков ответ: Terraform & AWS CodePipeline - динамически определять действия на сцене

Вот мой кодовый модуль terraform:

resource "aws_codepipeline" "dev" {
  name     = "my_codepipeline"
  role_arn = ...
  ...
  stage {
    name = "Source"
    ...
  }
  stage {
    name = "test"
    ...
  }
  stage {
    # count = 0 # or 1. it does not work
    name = "Approval"
    action {
      name     = "Approval"
      owner    = "AWS"
      category = "Approval"
      provider = "Manual"
      version  = "1"

      configuration {
        NotificationArn    = "..."
        CustomData         = "..."
        ExternalEntityLink = "..."
      }
    }
  }
  stage {
    name = "prod"
    ...
  }
}

1 Ответ

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

Когда вы просматриваете ваш сценарий использования, я чувствую, что он очень подходит для новой функции terraform в v0.12.x

Ниже приведен пример использования for_each для установки динамической цели.регионов, вы должны быть в порядке, чтобы сделать то же самое для этапов.

  dynamic "target_region" {
    for_each = var.target_image_regions
    content {
      name                   = target_region.value
      regional_replica_count = 1
    }
  }

дайте мне знать, работает ли это для вас или нет.

Ссылка: https://www.hashicorp.com/blog/announcing-terraform-0-12

...