Terraform 地形及;AWS代码管道-动态定义阶段上的操作
我不确定这是否可行,但我想我应该先问一下 我有一个Terraform 地形及;AWS代码管道-动态定义阶段上的操作,terraform,aws-codepipeline,Terraform,Aws Codepipeline,我不确定这是否可行,但我想我应该先问一下 我有一个terraform中定义的codepippeline,有一个具有多个动作的阶段 Stage正在从CodeCommit中提取代码,每个操作都定义了我希望在管道中使用的存储库 我想创建一个包含CodeCommit存储库名称列表的变量,然后为该列表中的每个存储库动态创建一个操作 使用terraform,这可能吗?我知道您可以使用count正常地实现这一点,但我认为这只是在资源级别上 代码片段如下所示: resource "aws_codepipelin
terraform
中定义的codepippeline
,有一个具有多个动作的阶段
Stage
正在从CodeCommit
中提取代码,每个操作都定义了我希望在管道中使用的存储库
我想创建一个包含CodeCommit
存储库名称列表的变量,然后为该列表中的每个存储库动态创建一个操作
使用terraform
,这可能吗?我知道您可以使用count
正常地实现这一点,但我认为这只是在资源级别上
代码片段如下所示:
resource "aws_codepipeline" "Test" {
name = "Test"
role_arn = "${aws_iam_role.Test.arn}"
"artifact_store" {
location = "${aws_s3_bucket.Test.bucket}"
type = "S3"
}
"stage" {
name = "Source"
####LOOP OVER EACH ITEM IN LIST###
"action" {
...
}
}
stage {
name = "Build"
...
}
}
}
谢谢你的帮助
编辑:
正在获取一个错误,将其作为空资源的触发器。我也尝试了一些不同的变化:
resource "null_resource" "CodePipeline" {
count = "${length(var.repositories)}"
triggers {
action = {
category = "Source"
name = "Repository-${element(keys(var.repositories), count.index)}"
owner = "AWS"
provider = "CodeCommit"
version = "1"
output_artifacts = ["Repository-${element(keys(var.repositories), count.index)}"]
configuration {
RepositoryName = "${element(keys(var.repositories), count.index)}"
BranchName = "${lookup(var.repositories, element(keys(var.repositories) ,count.index))}"
}
}
}
}
您可以为此使用null_资源,并在阶段中传递操作列表。像这样
resource "null_resource" "actions" {
count = length(<repo_list_var>)
triggers {
#### ACTION ITEMS ###
...........
}
}
resource "aws_codepipeline" "Test" {
name = "Test"
role_arn = "${aws_iam_role.Test.arn}"
"artifact_store" {
location = "${aws_s3_bucket.Test.bucket}"
type = "S3"
}
"stage" {
name = "Source"
action = null_resource.actions.*.triggers
}
stage {
name = "Build"
...
}
}
resource“null\u资源”操作{
计数=长度()
触发{
####行动项目###
...........
}
}
资源“aws_代码管道”测试{
name=“测试”
role_arn=“${aws_iam_role.Test.arn}”
“工件库”{
location=“${aws\u s3\u bucket.Test.bucket}”
type=“S3”
}
“舞台”{
name=“来源”
action=null\u resource.actions.*.triggers
}
舞台{
name=“构建”
...
}
}
谢谢您的回复。我正在努力学习#########
的语法。你有一个例子来说明这应该是什么吗?我想我遇到了一个问题,因为我的操作需要一个配置
映射,因此在尝试运行触发器(配置)时出现了这个错误:''预期类型'string',获得不可转换类型'[]映射[string]接口{}'
你能分享吗,你在为###########行动项目##添加什么?当然,用它编辑了原始帖子。谢谢你的帮助!