簡體   English   中英

我可以在 Terraform 中啟用/禁用 aws_codepipeline 的某些階段嗎

[英]Can I enable/disable some stages of aws_codepipeline in Terraform

我在 terraform 中有一個 CodePipeline,如下所示:

resource "aws_codepipeline" "main" {
      stage {
          name = "Source"
          ....
      }
      stage {
          name = "Test"
          ....
      }
      stage { 
          name = "Approval"
          ....
      }
      stage {
          name = "Deployment"
          ....
      }
}

是否可以配置我是否需要上述階段之一,例如,如果變量 enable_approval_stage=1,則創建 Approval 階段,如果 enable_approval_stage=0,則不創建 Approval 階段? 就像我們在 resource {} 中設置 count = 0 一樣?

我的想法是創建兩個不同的管道,一個具有批准階段,另一個不具有批准階段。 並讓他們像這樣:

如果manual_approve為true(值為1):

resource "aws_codepipeline" "pipeline-manualapprove" {
     count    = "${var.manual_approve}"

並且如果manual_approve為false(值為0):

resource "aws_codepipeline" "pipeline-automatic" {
     count    = "${1-var.manual_approve}"

我有一個非常相似的問題。 我有一個“鏡像”階段,它將 CodeCommit 存儲庫同步到公司 Gitlab 服務器。 在合並到開發分支的情況下,我只為開發環境啟用了它。 使用動態子句,您可以實現您的目標。 它至少從 1.1 版開始就存在。

考慮一個變量:

variable "stages" {
  type = set(string)
  default = ["dev","qa","prod"]
}

該腳本如下所示:

resource "aws_codepipeline" "pipeline_template" {
  for_each = var.stages

  name = "Awesome pipeline for ${each.key}"
  role_arn = data.aws_iam_role.my_codepipeline_role.arn

  stage {
    name = "Source"
    ....
  }
  stage {
    name = "Test"
    ....
  }

  dynamic "stage" {
    for_each = each.key == "dev" ? [each.key] : []

    content {
      name = "Mirror"
      ....
    }
  }
}


暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM