We'd love to accept your patches and contributions to this project. There are just a few small guidelines you need to follow.
Contributions to this project must be accompanied by a Contributor License Agreement. You (or your employer) retain the copyright to your contribution; this simply gives us permission to use and redistribute your contributions as part of the project. Head over to https://cla.developers.google.com/ to see your current agreements on file or to sign a new one.
You generally only need to submit a CLA once, so if you've already submitted one (even if it was for a different project), you probably don't need to do it again.
The project has the following file structure:
- /docs: Documentation about the repository.
- /modules: Customisable modules to create Google Cloud Platform infrastructure & supporting scripts.
- /radlab-launcher: RAD-Lab Launcher and associated scripts to support the modules.
Every individual module is contained in it subdirectory and should follow these Terraform guidelines:
- Create at least a
versions.tf
,main.tf
,variables.tf
andoutputs.tf
. It's ok to create additional files, to split resources between files and give them more meaningful names.
NOTE: Make sure all the variables are in alphabetical order in variables.tf
-
If any additional scripts (apart from terraform configs) are required to support the module either to build or use the module, move them to individual module's subdirectory, example:
/modules/MODULE-NAME/scripts/build
&/modules/MODULE-NAME/scripts/usage
respectively. -
A README.md containing more information about the modules, required IAM permissions and any specific instructions to create the infrastructure.
NOTE: Add below 2 tags in the RAD-Lab module specific README.md for populating structured Variables and Outputs automatically via tfdoc.py.
<!-- BEGIN TFDOC -->
<!-- END TFDOC -->
For every module, a base configuration is determined, which can be deployed via the radlab.py launcher. The base configuration is reflected in the default values for all the variables, except for organization_id
, billing_account_id
and (optional) folder_id
.
It should be possible for people with less experience in Infrastructure As Code to use every module. The repository contains a launcher for that purpose, which can be found in the /radlab-launcher directory (radlab.py). The launcher needs to be updated whenever new modules are introduced to the repository.
Where possible, use the open source Cloud Foundation Toolkit modules to create Google Cloud infrastructure.
All submissions, including submissions by project members, require review. We use GitHub pull requests for this purpose. NOTE: Create a seperate pull request for every module you create or update. Do not include changes of multiple modules in the same pull request.
Consult GitHub Help for more information on using pull requests.
This project follows Google's Open Source Community Guidelines.