Skip to content

Dynamic User/Group Management for Google Workspace with Terraform

License

Notifications You must be signed in to change notification settings

strg-at/terraform-googleworkspace-user-group-management

Repository files navigation

pre-commit taskfile Terraform

Dynamic User- and Group Management for Google Workspace with Terraform

IAC Implementation for User- and Group Management in Google Workspace (formerly GSuite)

Table of Contents

How to use this module

This module is published at Terraform Registry, see Terraform Registry for Details.

This repo has the following folder structure:

  • modules: This folder contains a set of modules for maintaining Users and Groups in Google Workspace.
  • examples: This folder shows examples on how to use this module with different data sources as well as an example for a data source and authentication with the Google API.

Authentication

To maintain the Google Workspace ressources a Service account is needed. See example-provider-authentication for more information.

How do I contribute to this module?

Contributions are very welcome! Please create a Pull Request.

How is this module versioned?

This module uses Semantic Versioning.

License

This code is released under the MIT License. Please see LICENSE for more details.

Authors

Terraform docs

Requirements

Name Version
googleworkspace 0.7.0

Providers

No providers.

Modules

Name Source Version
group_settings ./modules/group_settings n/a
groups ./modules/groups n/a
groups_in_group ./modules/groups_in_group n/a
users ./modules/users n/a
users_external_to_groups ./modules/users_external_to_groups n/a
users_to_groups ./modules/users_to_groups n/a

Resources

No resources.

Inputs

Name Description Type Default Required
group_settings contains all defined group setting templates for Google Groups
map(object({
allow_external_members : optional(bool),
allow_web_posting : optional(bool),
archive_only : optional(bool),
enable_collaborative_inbox : optional(bool),
include_in_global_address_list : optional(bool),
is_archived : optional(bool),
members_can_post_as_the_group : optional(bool),
message_moderation_level : optional(string),
reply_to : optional(string),
spam_moderation_level : optional(string),
who_can_assist_content : optional(string),
who_can_contact_owner : optional(string),
who_can_discover_group : optional(string),
who_can_join : optional(string),
who_can_leave_group : optional(string),
who_can_moderate_content : optional(string),
who_can_moderate_members : optional(string),
who_can_post_message : optional(string),
who_can_view_group : optional(string),
who_can_view_membership : optional(string),
}))
n/a yes
groups contains objects representing all defined Google Groups
map(object({
email : string,
name : string,
description : optional(string),
settings : optional(string),
aliases : optional(list(string)),
members : optional(list(string)),
}))
n/a yes
users contains objects representing all defined Google Users
map(object({
primary_email : string,
given_name : string,
family_name : string,
password : optional(string),
aliases : optional(list(string)),
archived : optional(bool),
include_in_global_address_list : optional(bool),
ip_allowlist : optional(bool),
is_admin : optional(bool),
org_unit_path : optional(string),
suspended : optional(bool),
roles : optional(list(string)),
}))
n/a yes
password contains a given password required for Users string null no
users_external contains objects representing all defined external Users
map(object({
roles : list(string),
}))
{} no

Outputs

No outputs.

About

Dynamic User/Group Management for Google Workspace with Terraform

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages