This repository contains code for an application that is published using the Application Builder Platform (ABP).
For best practices and information on developing with Terraform, see the I&A Module Standards
In order to contribute code to this repository, you must submit a Pull Request. To do so, you must fork this repostiory, make your changes in your forked version and submit a Pull Request.
‼️ Do not manually update README.md.
README.md is automatically generated by pulling in content from other files. For instructions, including a fill-in-the-blank content template, see Create readmes for Terraform-based Partner Solutions.
Pull Requests (PRs) submitted against this repository undergo a series of static and functional checks.
❗ Note: Failures during functional or static checks will prevent a pull request from being accepted.
It is a best practice to perform these checks locally prior to submitting a pull request.
Details about the static and functional test can be found at ./project_automation/{test-name}/entrypoint.sh
.
TIPS: do not modify the ./project_automation/{test-name}/entrypoint.sh
, instead use the helper script located at .config/{test-name}/
- TFLint
- tfsec
- Markdown Lint
- Checkov
- Terratest
‼️ The readme.md file will be created after all checks have completed successfully, it is recommended that you install terraform-docs locally in order to preview your readme.md file prior to publication.
Prerequisites:
- Python
- Pip
- golang (for macos you can use
brew
) - tflint
- tfsec
- Markdown Lint
- Checkov
- terraform-docs
- coreutils
Preparation
terraform init
terraform validate
tflint --init --config .config/.tflint.hcl
tflint --force --config .config/.tflint.hcl
tfsec . --config-file .config/.tfsec.yml
mdl --config .config/.mdlrc .header.md examples/*/.header.md
checkov --config-file .config/.checkov.yml
Include tests to validate your examples/<> root modules, at a minimum. This can be accomplished with usually only slight modifications to the boilerplate test provided in this template
# from the root of the repository
cd test
go mod init github.com/aws-ia/terraform-project-ephemeral
go mod tidy
go install github.com/gruntwork-io/terratest/modules/terraform
go test -timeout 45m
# from the root of the repository
terraform-docs --config .config/.terraform-docs.yaml --lockfile=false ./