The Storm Library for Terraform is a collection of Terraform modules for Amazon Web Services. The focus of these modules, maintained in separate GitHub™ repositories, is on building examples, demos and showcases on AWS. The audience of the library is learners and presenters alike - people that want to know or show how a certain service, pattern or solution looks like, or "feels".
In order to be able to try out these examples, demos and showcases quickly, the Storm Library for Terraform additionally provides a set of GitHub workflows which allow for terraform plan, apply and destroy them in an AWS environment. Optionally, a simple scheduler can be activated to destroy modules after a given time automatically or to deploy them with a delay, if necessary.
The Storm Library for Terraform is made up of four building parts:
A catalog of GitHub repositories contributing to the SLT. The catalog is a yaml file containing metadata for each contributing repository like a catalog number, the GitHub URL, a short description, authors, publishing date and other items. The catalog is located in this very repository, storm-library-for-terraform.
More about the catalog
The Scheduler is based on the GitHub Scheduler and checks for scheduled terraform apply or destroy jobs every 4 hours by default. Jobs are managed as S3 objects containing a timestamp and metadata both in their name and in their data. The scheduler is also part of this repository.
More about the scheduler
Every SLT member repository must contain the same set of GitHub workflows. These workflows are merely triggers for reusable workflows implemented in the slt-workflows repository that can be used to terraform plan, apply, test and destroy resources in the SLT member repository immediately and easily.
More about the workflows
The SLT "member" repositories are designed to contain examples, demos and showcases. However they could also contain best patterns or reusable modules; there is no strict rule about their essence apart from that users must be able to plan, apply, test and destroy them from the common set of GitHub workflows. Every member repository tries to implement best practices and enforce them to some extent by using pre-commit hooks, however this approach may sometimes reach its limits for the sake of the example, demo or showcase.
More about the member repositories
Click to show
| Name | Version |
|---|---|
| terraform | >= 1 |
| aws | >= 6 |
| Name | Version |
|---|---|
| aws | >= 6 |
No modules.
| Name | Type |
|---|---|
| aws_iam_role.terraform_backend_role | resource |
| aws_iam_role.terraform_deployment_role | resource |
| aws_iam_role_policy.terraform_backend_policy | resource |
| aws_iam_role_policy_attachment.terraform_deployment_role | resource |
| aws_caller_identity.current | data source |
| aws_iam_policy_document.github_oidc_trust_policy | data source |
| aws_iam_policy_document.terraform_backend_policy | data source |
| Name | Description | Type | Default | Required |
|---|---|---|---|---|
| _metadata | Select metadata passed from GitHub Workflows | object({ |
{ |
no |
| backend_bucket | Central backend bucket of the Storm Library for Terraform (SLT)™ | string |
n/a | yes |
| oidc_principal | Github owner (org or user) of repositories permitted to deploy to AWS | string |
n/a | yes |
| Name | Description |
|---|---|
| _default_tags | Default tags to be used in Terraform provider, cf. providers.tf |
| _metadata | Select metadata passed from GitHub Workflows |
| _name_tag | Name to be used as name property of your resources. If you happen to have multiple resources of the same type, append your -purpose to the name tag. |
The SLT is intended to be a community project.