{"id":19508947,"url":"https://github.com/rhythmictech/sample-aws-project","last_synced_at":"2025-04-26T03:31:49.316Z","repository":{"id":45042079,"uuid":"235852328","full_name":"rhythmictech/sample-aws-project","owner":"rhythmictech","description":"All of your organization's infrastructure in one place","archived":true,"fork":false,"pushed_at":"2022-01-12T23:53:55.000Z","size":70,"stargazers_count":4,"open_issues_count":0,"forks_count":4,"subscribers_count":4,"default_branch":"master","last_synced_at":"2025-03-14T09:42:41.497Z","etag":null,"topics":["infrastructure-as-code","template","terraform"],"latest_commit_sha":null,"homepage":"https://www.rhythmictech.com/blog/","language":"HCL","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/rhythmictech.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":null,"support":null}},"created_at":"2020-01-23T17:50:40.000Z","updated_at":"2024-07-31T15:33:54.000Z","dependencies_parsed_at":"2022-09-23T10:51:09.460Z","dependency_job_id":null,"html_url":"https://github.com/rhythmictech/sample-aws-project","commit_stats":null,"previous_names":[],"tags_count":4,"template":true,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rhythmictech%2Fsample-aws-project","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rhythmictech%2Fsample-aws-project/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rhythmictech%2Fsample-aws-project/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rhythmictech%2Fsample-aws-project/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/rhythmictech","download_url":"https://codeload.github.com/rhythmictech/sample-aws-project/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":250926819,"owners_count":21509044,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["infrastructure-as-code","template","terraform"],"created_at":"2024-11-10T23:10:26.923Z","updated_at":"2025-04-26T03:31:49.068Z","avatar_url":"https://github.com/rhythmictech.png","language":"HCL","readme":"# sample-aws-project\n[![tflint](https://github.com/rhythmictech/sample-aws-project/workflows/tflint/badge.svg?branch=master\u0026event=push)](https://github.com/rhythmictech/sample-aws-project/actions?query=workflow%3Atflint+event%3Apush+branch%3Amaster)\n[![tfsec](https://github.com/rhythmictech/sample-aws-project/workflows/tfsec/badge.svg?branch=master\u0026event=push)](https://github.com/rhythmictech/sample-aws-project/actions?query=workflow%3Atfsec+event%3Apush+branch%3Amaster)\n[![yamllint](https://github.com/rhythmictech/sample-aws-project/workflows/yamllint/badge.svg?branch=master\u0026event=push)](https://github.com/rhythmictech/sample-aws-project/actions?query=workflow%3Ayamllint+event%3Apush+branch%3Amaster)\n[![misspell](https://github.com/rhythmictech/sample-aws-project/workflows/misspell/badge.svg?branch=master\u0026event=push)](https://github.com/rhythmictech/sample-aws-project/actions?query=workflow%3Amisspell+event%3Apush+branch%3Amaster)\n[![pre-commit-check](https://github.com/rhythmictech/sample-aws-project/workflows/pre-commit-check/badge.svg?branch=master\u0026event=push)](https://github.com/rhythmictech/sample-aws-project/actions?query=workflow%3Apre-commit-check+event%3Apush+branch%3Amaster)\n\n\nA sample AWS project managed by Terraform\n\n## About\nThis repo is set up to contain _everything_ in a single AWS account.\n\n\n### Structure\nThe top level structure of the repo should look something like the tree below\nwith each \"`project`\" containing some application of shared infrastructure.\nBesides the project directories there are a few special ones;\n- `common`, which houses code that should be common to every project\n- `modules`, where client-specific modules kept\n- `bin`, where scripts are kept\n\n```\nrepo\n│\n└───common\n│   │   common.tf\n│   │   global.auto.tfvars\n│\n└───modules\n│\n└───project\n│   │   main.tf\n|   |   outputs.tf\n│   │   variables.tf\n|\n|   .gitignore\n|   .pre-commit.yml\n|   .terraform-version\n|   README.md\n```\n\n\n## Initial Setup\n\nThere is a handy setup script at `bin/setup.sh` which will create a\n[terraform s3 backend](https://www.terraform.io/docs/backends/types/s3.html)\nwith locking via DynamoDB and add it's resources to your remote state.\n\nTo all the DevOps engineers out there with bosses to impress it's easy to do just follow these steps:\n1. Install the prerequisites\n    - `git`\n    - `terraform` (We use [tfenv](https://github.com/tfutils/tfenv) to manage `terraform` versions)\n    - `pre-commit`\n    - `GNUMake`\n1. [provide authentication for the aws provider](https://www.terraform.io/docs/providers/aws/index.html#authentication)\n1. Clone the repo: `git clone https://github.com/rhythmictech/sample-aws-project.git terraform-aws-rhythmictech`\n1. Update the values for the backend in `account/backend.auto.tfvars`\n1. Run the setup with `make setup`\n\n\n## Creating a new project\n\nTo bootsrap the addition of new projects there is a handy shell script,\n`bin/new-project.sh` that does everything needed besides write the code;\n- gets the backend variables from the backend `account/backend.auto.tfvars` file\n- creates the new folder with a backend, readme, and makefile\n- symlinks everything in `common` to the new folder\n\n\n## Applying Changes\n\nOnce you've made your changes to the terraform code\nand want to make those changes in your actual infrastructure you can use `make apply` to generate\na plan. It will then prompt you to type `yes` to apply the proposed changes or type literally anything other than `yes` to exit without applying.\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frhythmictech%2Fsample-aws-project","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frhythmictech%2Fsample-aws-project","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frhythmictech%2Fsample-aws-project/lists"}