[英]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.