[英]Terraform use new created ressource from for_each
I try to create groups and projects in gitlab with terraform.我尝试使用 terraform 在 gitlab 中创建组和项目。 Later I want to create a new resource "project_membership" to give the new projects the groups as members.稍后我想创建一个新资源“project_membership”,为新项目提供组成员。 Therefore I need the Group_ID and the Project ID.因此我需要 Group_ID 和项目 ID。 If I create all resources in own resource blocks, I can refer to it with ${gitlab_group.NAME_OF_THE_RESSOURCE.id}
but when I use for_each I do not specify a name.如果我在自己的资源块中创建所有资源,我可以使用${gitlab_group.NAME_OF_THE_RESSOURCE.id}
来引用它,但是当我使用 for_each 时,我没有指定名称。 How I can get the group and project IDs?如何获取组和项目 ID?
terraform {
backend "http" {
}
required_providers {
gitlab = {
source = "gitlabhq/gitlab"
version = "~> 3.1"
}
}
}
locals {
services_project_names = toset( [
"values",
"releases",
"design",
"execution"
] )
permission_project_names = toset( [
"vendor",
"maintainer"
] )
}
################################
#### permissions repository ####
################################
resource "gitlab_group" "permissions_group" {
name = var.service_name
path = var.service_name
parent_id = var.permissions_parent_grp
visibility_level = "private"
}
resource "gitlab_group" "permissions_sub_group" {
for_each = local.permission_project_names
name = "${var.service_name}_${each.key}"
path = "${var.service_name}_${each.key}"
parent_id = "${gitlab_group.permissions_group.id}"
visibility_level = "private"
}
############################
#### service repository ####
############################
resource "gitlab_group" "services_group" {
name = var.service_name
path = var.service_name
parent_id = var.services_parent_grp
visibility_level = "private"
}
resource "gitlab_project" "services_projects" {
for_each = local.services_project_names
name = "${var.service_name}_${each.key}"
default_branch = "main"
description = ""
issues_enabled = false
merge_requests_enabled = false
namespace_id = "${gitlab_group.services_group.id}"
snippets_enabled = false
visibility_level = "private"
wiki_enabled = false
}
You can reference individual values created via for_each
by using the key that was used in the for_each
.您可以使用for_each
中使用的键来引用通过for_each
创建的各个值。 In your case here are some examplels:在您的情况下,这里有一些示例:
"${gitlab_project.services_projects["values"]}"
"${gitlab_project.services_projects["releases"]}"
To get the ID of a specific project:要获取特定项目的 ID:
gitlab_project.services_projects["values"].id
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.