dalekurt / terraform-github-organization

A Terraform 0.12 module to manage GitHub Organizations. https://github.com/

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Maintained by Mineiros.io Build Status GitHub tag (latest SemVer) Terraform Version Github Provider Version License

A Terraform module that acts as a wrapper around the Terraform GitHub provider and offers a more convenient and tested way to manage GitHub Organizations following best practices.

Getting Started

To quickly start managing your GitHub Organization with Terraform:

module "organization" {
  source  = "mineiros-io/organization/github"
  version = "0.0.5"

  create_all_members_team = true

  members = [
    "a-user",
    "b-user",
  ]

  admins = [
    "a-admin",
  ]

  blocked_users = [
    "blocked-user",
    "another-blocked-user",
  ]

  projects = [
    {
      id   = "project-a"
      name = "A Great Project"
      body = "This is a project created by Terraform"
    }
  ]
}

This Module uses For, For-Each and Dynamic Nested Blocks that were introduced in Terraform 0.12. A common problem in Terraform configurations for versions 0.11 and earlier is dealing with situations where the number of values or resources is decided by a dynamic expression rather than a fixed count. You can now dynamically add and remove items from and to Lists without the necessity to render the whole list of resources again. Terraform will only add and remove the items you want it to.

Module Features

Standard github provider features:

  1. Organization Members
  2. Organization Owners (Admins)
  3. Organization Projects
  4. Blocked Users

Additional module features:

  1. Change organization member roles without removing and re-inviting users
  2. Rename projects without recreating (when providing unique ids)
  3. No need to import members/admins on first run
  4. Create an all member team that contains every member of your organization

Limitations

  • Currently the GitHub Provider doesn't support to provision new organizations.

Makefile

This repository comes with a handy https://github.com/mineiros-io/terraform-module-template/blob/master/Makefile. Run make help to see details on each available target.

Module Versioning

This Module follows the principles of Semantic Versioning (SemVer).

Given a version number MAJOR.MINOR.PATCH, we increment the:

  1. MAJOR version when we make incompatible changes,
  2. MINOR version when we add functionality in a backwards compatible manner, and
  3. PATCH version when we make backwards compatible bug fixes.

Backwards compatibility in 0.0.z and 0.y.z version

  • Backwards compatibility in versions 0.0.z is not guaranteed when z is increased. (Initial development)
  • Backwards compatibility in versions 0.y.z is not guaranteed when y is increased. (Pre-release)

About Mineiros

Mineiros is a DevOps as a Service Company based in Berlin, Germany. We offer Commercial Support for all of our projects, just send us an email to hello@mineiros.io.

We can also help you with:

  • Terraform Modules for all types of infrastructure such as VPC's, Docker clusters, databases, logging and monitoring, CI, etc.
  • Complex Cloud- and Multi Cloud environments.
  • Consulting & Training on AWS, Terraform and DevOps.

Reporting Issues

We use GitHub Issues to track community reported issues and missing features.

Contributing

Contributions are very welcome! We use Pull Requests for accepting changes. Please see our Contribution Guidelines for full details.

License

This module is licensed under the Apache License Version 2.0, January 2004. Please see LICENSE for full details.

Copyright © 2020 Mineiros

About

A Terraform 0.12 module to manage GitHub Organizations. https://github.com/

License:Apache License 2.0


Languages

Language:HCL 61.7%Language:Go 19.3%Language:Makefile 19.0%