refactor service account module outputs

This commit is contained in:
Ludovico Magnocavallo
2020-05-31 09:39:03 +02:00
parent 037c14ef09
commit aaa80bb49b
7 changed files with 196 additions and 47 deletions

View File

@@ -54,32 +54,13 @@ locals {
]
]
])
keys = (
var.generate_keys
? {
for name in var.names :
name => lookup(google_service_account_key.keys, name, null)
}
: {}
)
prefix = (
var.prefix != ""
? "${var.prefix}-"
: ""
)
resource = (
length(var.names) > 0
? lookup(local.resources, var.names[0], null)
: null
)
keys = var.generate_keys ? google_service_account_key.keys : {}
prefix = var.prefix != null ? "${var.prefix}-" : ""
resource = try(google_service_account.service_accounts[var.names[0]], null)
resource_iam_emails = {
for name, resource in local.resources :
for name, resource in google_service_account.service_accounts :
name => "serviceAccount:${resource.email}"
}
resources = {
for name in var.names :
name => lookup(google_service_account.service_accounts, name, null)
}
}
resource "google_service_account" "service_accounts" {

View File

@@ -21,27 +21,30 @@ output "service_account" {
output "service_accounts" {
description = "Service account resources."
value = local.resources
value = google_service_account.service_accounts
}
output "email" {
description = "Service account email (for single use)."
value = local.resource == null ? null : local.resource.email
value = try(local.resource.email, null)
}
output "iam_email" {
description = "IAM-format service account email (for single use)."
value = local.resource == null ? null : "serviceAccount:${local.resource.email}"
value = try("serviceAccount:${local.resource.email}", null)
}
output "key" {
description = "Service account key (for single use)."
value = lookup(local.keys, var.names[0], null)
value = try(local.keys[var.names[0]], null)
}
output "emails" {
description = "Service account emails."
value = { for name, resource in local.resources : name => resource.email }
value = {
for name, resource in google_service_account.service_accounts :
name => resource.email
}
}
output "iam_emails" {
@@ -51,12 +54,18 @@ output "iam_emails" {
output "emails_list" {
description = "Service account emails."
value = [for name, resource in local.resources : resource.email]
value = [
for name, resource in google_service_account.service_accounts :
resource.email
]
}
output "iam_emails_list" {
description = "IAM-format service account emails."
value = [for name, resource in local.resources : "serviceAccount:${resource.email}"]
value = [
for name, resource in google_service_account.service_accounts :
"serviceAccount:${resource.email}"
]
}
output "keys" {

View File

@@ -20,23 +20,6 @@ variable "generate_keys" {
default = false
}
variable "names" {
description = "Names of the service accounts to create."
type = list(string)
default = []
}
variable "prefix" {
description = "Prefix applied to service account names."
type = string
default = ""
}
variable "project_id" {
description = "Project id where service account will be created."
type = string
}
variable "iam_members" {
description = "Map of member lists which are granted authoritative roles on the service accounts, keyed by role."
type = map(list(string))
@@ -78,3 +61,20 @@ variable "iam_storage_roles" {
type = map(list(string))
default = {}
}
variable "names" {
description = "Names of the service accounts to create."
type = list(string)
default = []
}
variable "prefix" {
description = "Prefix applied to service account names."
type = string
default = null
}
variable "project_id" {
description = "Project id where service account will be created."
type = string
}