Giter Site home page Giter Site logo

devopsglobalsolutions / meta Goto Github PK

View Code? Open in Web Editor NEW

This project forked from terraform-aws-modules/meta

0.0 1.0 0.0 56 KB

Meta-configurations for repositories, teams, files in terraform-aws-modules organization

Home Page: https://github.com/terraform-aws-modules

License: Other

HCL 95.06% Makefile 0.60% Shell 4.34%

meta's Introduction

This repository contains Terraform configurations for all Terraform modules managed as part of terraform-aws-modules organization on GitHub.

What exactly is managed here?

  1. GitHub resources:

    • Repositories
    • Branch protections (status checks, pull-request reviews, restrictions)
    • Teams
    • Team repositories
    • Team memberships
    • Organization memberships (admins and members)
  2. Common files in GitHub repositories:

    • .pre-commit-hooks.yml
    • .github issues and PR templates
    • CODEOWNERS
    • Makefile
    • GitHub Actions
    • LICENSE
    • README.md
    • ...

Why here and not in each individual repository?

It is hard to keep things identical, predictable, and with high-quality, while focusing on maintaining Terraform modules.

GitHub allows to have a special repository named .github where common files like CODE_OF_CONDUCT.md, CONTRIBUTING.md, FUNDING.yml, PULL_REQUEST_TEMPLATE.md and SECURITY.md are stored. Those files are automatically used by all repositories across the whole GitHub organization.

Ideally, individual Terraform module repository should contain only Terraform configurations and have standard procedures for releasing, updating, testing, documenting, defined in a central place (this repo).

Pre-requirements

If you are using Mac, you can install all dependencies using Homebrew:

$ brew install terraform terragrunt terraform-docs pre-commit

๐Ÿ”’ GitHub Token

GitHub Personal Access Token is stored using SecretHub.io and populated during execution by Terragrunt.

Give SecretHub.io a try if you are tired of struggling with secrets already. Remember to mention that you have read about it here. :)

Manage GitHub resources (repositories, teams, members):

$ cd github/main
$ terragrunt apply

Manage files in one repository (eg, terraform-aws-modules/terraform-aws-vpc):

$ cd github/repositories/terraform-aws-modules/terraform-aws-vpc
$ terragrunt apply

Manage files in all repositories (not supported):

Currently it is not well implemented here yet. Due to a large amount of API calls to GitHub and inability of terragrunt to limit execution to a single process.

$ cd github/repositories
$ terragrunt plan-all    # <- it is a good idea to see changes :)
$ terragrunt apply-all

Ideas for later

  • Use SecretHub for storing secret Github Token
  • Prevent making changes in files managed by this repo in repositories (tell users during PR checks)
  • Finish running code in this repo - terraform-aws-modules/terraform-aws-eks
  • Verify if GitHub is actually using the files in "ISSUE_TEMPLATE" directory from .github repository. Verify and update if necessary.

Authors

This repository is managed by Anton Babenko.

License

Apache 2 Licensed. See LICENSE for full details.

meta's People

Contributors

antonbabenko avatar betajobot avatar drfaust92 avatar max-rocket-internet avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.