This repository contains code to deploy infrastructure across all live environments for Acme in AWS. The
code deploys modules from the
infrastructure-modules-acme repository. This
code was built on top of the Gruntwork Reference Architecture.
Features
End-to-end tech stack for AWS.
100% defined and managed as code using tools such as Terraform, Docker, and Packer.
Run containerized services using Kubernetes or ECS.
Run VMs on EC2 Instances and Auto Scaling Groups.
Use PostgreSQL, MySQL, SQL Server, or other relational database.
Use Redis or Memcached as a distributed cache.
Use other data stores such as Kafka, ZooKeeper, ELK, SQS, Kinesis, and MongoDB.
Optionally enable end-to-end encryption (e.g., as part of HIPAA, PCI, or other compliance programs).
Configure a CI / CD pipeline in CircleCI, Travis CI, or Jenkins.
Access the network via a Bastion Host or OpenVPN server.
Use KMS for secrets management.
Store static content in S3, with CloudFront as a CDN.
Build serverless apps with AWS Lambda and API Gateway.
Configure monitoring, alerting, and log aggregation in CloudWatch.
And much more!
Learn
Core concepts
Reference Architecture Walkthrough Documentation: Comprehensive documentation that walks through all
aspects of this architecture, including what's deployed, how the code is organized, how to run the code in dev,
how the CI / CD pipeline works, how to access metrics and logs, how to connect via VPN and SSH, and much more.
How the code is organized: An overview of how the code in this repo and all
other Reference Architecture repos is organized.
What's deployed: An overview of what's deployed in your AWS accounts.
Deploy
Deploy updates
If you want to deploy updates to this infrastructure, check out the following resources:
Deploying app changes: Instructions on how to deploy changes to an app,
such as a Java/Ruby/Python web service packaged with Docker or Packer.
Deploying infrastructure changes: Instructions on how to
deploy changes to infrastructure code, such as Terraform modules that configure your VPCs, databases, DNS settings,
etc.
If you need help with this repo or anything else related to infrastructure or DevOps, Gruntwork offers
Commercial Support via Slack, email, and phone/video. If you're already a Gruntwork
customer, hop on Slack and ask away! If not, subscribe now. If you're not sure,
feel free to email us at support@gruntwork.io.
Questions? Ask away.
We're here to talk about our services, answer any questions, give advice, or just to chat.
{"treedata":{"name":"root","toggled":true,"children":[{"name":".gitignore","path":".gitignore","sha":"1c27fc6013cba46cd301a7c8bf951694670153a3"},{"name":"CODEOWNERS","path":"CODEOWNERS","sha":"00570abefb91e715366015f8b5acf32631336d52"},{"name":"README.md","path":"README.md","sha":"74507349a9d5cd784540410365adc61ba68000f1","toggled":true},{"name":"_docs","children":[{"name":"01-architecture-overview.md","path":"_docs/01-architecture-overview.md","sha":"fa091294c3f4cfb2e7bd1d7df78907faf076996b"},{"name":"02-whats-deployed.md","path":"_docs/02-whats-deployed.md","sha":"8bf4519132e2ea43cbcf1e1d67eff3f961471af2"},{"name":"03-security-compliance-compatibility.md","path":"_docs/03-security-compliance-compatibility.md","sha":"9342617f42adb28e440cc2161f3fee56205c150e"},{"name":"04-how-code-is-organized.md","path":"_docs/04-how-code-is-organized.md","sha":"64b9396f54fb0b791d39b93919a6416ab8215f0d"},{"name":"05-dev-environment.md","path":"_docs/05-dev-environment.md","sha":"9209da466b0f9afee5e1afb36f01a2ba8149012f"},{"name":"06-ci-cd.md","path":"_docs/06-ci-cd.md","sha":"0685cbe746fa0271357db34ebd39d76397ea19c4"},{"name":"07-monitoring-alerting-logging.md","path":"_docs/07-monitoring-alerting-logging.md","sha":"619c810c6e60418b3a46fa3d903bc76dc6d48e41"},{"name":"08-ssh-vpn.md","path":"_docs/08-ssh-vpn.md","sha":"0f526549f4b0d08cf2a914def239f8ff872ec2d1"},{"name":"09-accounts-and-auth.md","path":"_docs/09-accounts-and-auth.md","sha":"761a0afa037db3396733a499abcc414f4731ec9c"},{"name":"10-gruntwork-tools.md","path":"_docs/10-gruntwork-tools.md","sha":"9b2bc1f1fb5947d8675012c9ac02717671b4b62c"},{"name":"11-deploying-a-docker-service.md","path":"_docs/11-deploying-a-docker-service.md","sha":"d2123b688287557c1c38cd415a729b3a445a45ad"},{"name":"12-migration.md","path":"_docs/12-migration.md","sha":"6e46bf752f330de978a8927858a716f04db13f60"},{"name":"13-deploying-the-reference-architecture-from-scratch.md","path":"_docs/13-deploying-the-reference-architecture-from-scratch.md","sha":"5481f69196b98f174416f793ee4c0c9205d22233"},{"name":"14-undeploying-the-reference-architecture.md","path":"_docs/14-undeploying-the-reference-architecture.md","sha":"3ed0569cdd0e3d32079ab537e1697fbcb3ee27d8"},{"name":"15-adding-new-environments-regions-and-accounts.md","path":"_docs/15-adding-new-environments-regions-and-accounts.md","sha":"6a0372a843a9245570379e1beaad452e67d234c3"},{"name":"README.md","path":"_docs/README.md","sha":"785d2b0b36b10e75c96e4eaa7414c1c71d78e222"},{"name":"_images","children":[{"name":"cw-logs-1.png","path":"_docs/_images/cw-logs-1.png","sha":"84c86f014751844fbd777b5139ed61f749b5ed32"},{"name":"cw-logs-2.png","path":"_docs/_images/cw-logs-2.png","sha":"9a0a80b20490fdc1b9014040cc0bbc87c9cf6f68"},{"name":"cw-logs-3.png","path":"_docs/_images/cw-logs-3.png","sha":"bda49dc4e947658e0ceb9ba592b4e314d9db61e9"},{"name":"cw-logs-4.png","path":"_docs/_images/cw-logs-4.png","sha":"54bcc44c4b0701620b7f20c4e6fc0a9fd8f38049"},{"name":"ecs-console-1.png","path":"_docs/_images/ecs-console-1.png","sha":"afe452278d5f107e6ec225a235c587de7cb53510"},{"name":"ecs-console-2.png","path":"_docs/_images/ecs-console-2.png","sha":"40609b98015d781b9e1de801c131fadc323337ae"},{"name":"ecs-console-3.png","path":"_docs/_images/ecs-console-3.png","sha":"87ad40d291b7e9e6f6caa0389b846392bdb93ee0"},{"name":"ref-arch-full.png","path":"_docs/_images/ref-arch-full.png","sha":"8c17eef52be06757553a1f3ee4e387e6dc820016"},{"name":"ref-arch-icon.png","path":"_docs/_images/ref-arch-icon.png","sha":"05876962e6877df911674237ca1b793d9f4f04b3"},{"name":"terraform-code-provenance.png","path":"_docs/_images/terraform-code-provenance.png","sha":"e2a9d6bfbd8b963b057d4341dd0ec93e3823d834"}]}]},{"name":"main","children":[{"name":"_global","children":[{"name":"README.md","path":"main/_global/README.md","sha":"d1b8a96c00211751f079fa13cac1b3417d29bf09"},{"name":"cloudtrail","children":[{"name":"README.md","path":"main/_global/cloudtrail/README.md","sha":"dac948bf7605b12ecaa8d85eedcbe16746575bc2"},{"name":"terragrunt.hcl","path":"main/_global/cloudtrail/terragrunt.hcl","sha":"1c21bcd6cabbef0e30c5c3d3c7bf9ad14ad12396"}]},{"name":"iam-groups","children":[{"name":"README.md","path":"main/_global/iam-groups/README.md","sha":"23c4df7b3fa616673769ae4f90f9001ab8702877"},{"name":"terragrunt.hcl","path":"main/_global/iam-groups/terragrunt.hcl","sha":"44560b79e1314cff08e41536f58e8296be5ec925"}]},{"name":"iam-user-password-policy","children":[{"name":"README.md","path":"main/_global/iam-user-password-policy/README.md","sha":"efe8cae29553631a53b580a395cef7f480c275bb"},{"name":"terragrunt.hcl","path":"main/_global/iam-user-password-policy/terragrunt.hcl","sha":"73a6db2b0f66eaedab8d72148b76ceb5c33d7727"}]},{"name":"machine-user","children":[{"name":"README.md","path":"main/_global/machine-user/README.md","sha":"09d4ae64d46b8c910294b1ebb4ffd3d182e90d2a"},{"name":"terragrunt.hcl","path":"main/_global/machine-user/terragrunt.hcl","sha":"b366af9f72a205b2eab2865226c54b57560beba1"}]},{"name":"region.yaml","path":"main/_global/region.yaml","sha":"18b7823ed017b97431d58da7bcb9a4e31299272a"},{"name":"route53-public","children":[{"name":"README.md","path":"main/_global/route53-public/README.md","sha":"7424b79ea128fb89454c73a362730b507bae0761"},{"name":"terragrunt.hcl","path":"main/_global/route53-public/terragrunt.hcl","sha":"1a7f0a9b60c17b5ee058dc2bd8b5c5342a6653d6"}]},{"name":"service-linked-roles","children":[{"name":"README.md","path":"main/_global/service-linked-roles/README.md","sha":"bec2b365ceb566753b39a967d2e2e29a266e47c2"},{"name":"terragrunt.hcl","path":"main/_global/service-linked-roles/terragrunt.hcl","sha":"5c605a879549ff47f2b95206a7ae3e91ef39d859"}]}]},{"name":"empty.yaml","path":"main/empty.yaml","sha":"5aa66daa40faeaef37eccb7b4b0fcc792233cd7b"},{"name":"terragrunt.hcl","path":"main/terragrunt.hcl","sha":"6114a6a1bb9cf777dd6016d9967e2fef61dbbd7a"},{"name":"us-east-1","children":[{"name":"_global","children":[{"name":"README.md","path":"main/us-east-1/_global/README.md","sha":"37b828b038945a50e2e571ef1e755c4f9170e7cf"},{"name":"ecr-repos","children":[{"name":"README.md","path":"main/us-east-1/_global/ecr-repos/README.md","sha":"dd6646493a6a443f97a59251d4a5253568891f55"},{"name":"terragrunt.hcl","path":"main/us-east-1/_global/ecr-repos/terragrunt.hcl","sha":"9b97115091da640312e5fb587b9d7ac541c1d45d"}]},{"name":"sns-topics","children":[{"name":"README.md","path":"main/us-east-1/_global/sns-topics/README.md","sha":"ff50bbbe75ca70c6111c150e622d99a69f04d0d4"},{"name":"terragrunt.hcl","path":"main/us-east-1/_global/sns-topics/terragrunt.hcl","sha":"198cbcaaeb692543a13ebffac272834094ac39e6"}]}]},{"name":"mgmt","children":[{"name":"README.md","path":"main/us-east-1/mgmt/README.md","sha":"8a131a11632b97fec18a5e344d5c721fce24b652"},{"name":"env.yaml","path":"main/us-east-1/mgmt/env.yaml","sha":"b514ab3187ebfb5bf467c632f27a21f5a9611bfc"},{"name":"kms-master-key","children":[{"name":"README.md","path":"main/us-east-1/mgmt/kms-master-key/README.md","sha":"6f608c48b7f1f1a62af139f2630fee66a349082a"},{"name":"terragrunt.hcl","path":"main/us-east-1/mgmt/kms-master-key/terragrunt.hcl","sha":"479b234b6a07a44a9d190441589ddd0c36288b4f"}]},{"name":"openvpn-server","children":[{"name":"README.md","path":"main/us-east-1/mgmt/openvpn-server/README.md","sha":"9f0325d8016d2f8ad0deefbc44e5f3cf30411be1"},{"name":"terragrunt.hcl","path":"main/us-east-1/mgmt/openvpn-server/terragrunt.hcl","sha":"c908fa4ab93f34795b5b16c52fe006d51046aea7"}]},{"name":"vpc","children":[{"name":"README.md","path":"main/us-east-1/mgmt/vpc/README.md","sha":"43590a51c61c81790e74767928897b4a655f8b16"},{"name":"terragrunt.hcl","path":"main/us-east-1/mgmt/vpc/terragrunt.hcl","sha":"4737f080332855529b36afc2ad39ecc3634b4830"}]}]},{"name":"prod","children":[{"name":"README.md","path":"main/us-east-1/prod/README.md","sha":"f15da18661ef3624d5f63deb288bad072e93df57"},{"name":"cloudwatch-dashboard","children":[{"name":"README.md","path":"main/us-east-1/prod/cloudwatch-dashboard/README.md","sha":"0a17fffc74b691fa7292d39b1479fbaf09759865"},{"name":"terragrunt.hcl","path":"main/us-east-1/prod/cloudwatch-dashboard/terragrunt.hcl","sha":"787e787e15a3e1033885bd8645504f118e9f4e23"}]},{"name":"data-stores","children":[{"name":"elasticsearch","children":[{"name":"README.md","path":"main/us-east-1/prod/data-stores/elasticsearch/README.md","sha":"79a2fdb9e687cb43ad1da1e0bb0bca44e75278d3"},{"name":"terragrunt.hcl","path":"main/us-east-1/prod/data-stores/elasticsearch/terragrunt.hcl","sha":"9daef33e40202f235ac6672fb037b1dad403f398"}]},{"name":"kafka","children":[{"name":"README.md","path":"main/us-east-1/prod/data-stores/kafka/README.md","sha":"343beb0bcfeb3cb732646468c13856028140254e"},{"name":"terragrunt.hcl","path":"main/us-east-1/prod/data-stores/kafka/terragrunt.hcl","sha":"9314eab21adf63719b117bebae0d7fc38f196eb5"}]},{"name":"mysql","children":[{"name":"README.md","path":"main/us-east-1/prod/data-stores/mysql/README.md","sha":"d67aa3a912e090d42e5759cd7ae8f122573d7a3c"},{"name":"terragrunt.hcl","path":"main/us-east-1/prod/data-stores/mysql/terragrunt.hcl","sha":"faa637d946ae650d8b887de570c04488be1f5499"}]},{"name":"redis","children":[{"name":"README.md","path":"main/us-east-1/prod/data-stores/redis/README.md","sha":"4c7889cbb5a55ea1d50757978587e70942051107"},{"name":"terragrunt.hcl","path":"main/us-east-1/prod/data-stores/redis/terragrunt.hcl","sha":"acb40a79e019388f6da6120142f49e7f0c24fa45"}]},{"name":"zookeeper","children":[{"name":"README.md","path":"main/us-east-1/prod/data-stores/zookeeper/README.md","sha":"7b5c7ae966bb6b494d5c8eefc47c1e5152a41059"},{"name":"terragrunt.hcl","path":"main/us-east-1/prod/data-stores/zookeeper/terragrunt.hcl","sha":"cb661bc882ef77dbc26614613428a0a6a064ebd8"}]}]},{"name":"env.yaml","path":"main/us-east-1/prod/env.yaml","sha":"90e2d18e481b6e35ddc57391f752874ffc0058cf"},{"name":"kms-master-key","children":[{"name":"README.md","path":"main/us-east-1/prod/kms-master-key/README.md","sha":"9d39f2f579b3ff12d40eb23dd25f73e8ef09fb78"},{"name":"terragrunt.hcl","path":"main/us-east-1/prod/kms-master-key/terragrunt.hcl","sha":"7a9ff6cf397c927a1ab3c65821d920f2b07fab46"}]},{"name":"lambda","children":[{"name":"long-running-scheduled","children":[{"name":"README.md","path":"main/us-east-1/prod/lambda/long-running-scheduled/README.md","sha":"bc9267af042b130202eda5e1d51a887efa103baf"},{"name":"terragrunt.hcl","path":"main/us-east-1/prod/lambda/long-running-scheduled/terragrunt.hcl","sha":"ca12d1e9236c9c781aa3d3a18b3a2b66d1d1be12"}]},{"name":"s3-image-processing","children":[{"name":"README.md","path":"main/us-east-1/prod/lambda/s3-image-processing/README.md","sha":"c280ea49fb13e21cb4b935ed5c730189b7fae1cd"},{"name":"terragrunt.hcl","path":"main/us-east-1/prod/lambda/s3-image-processing/terragrunt.hcl","sha":"636d928d0b5310988db3e79ea862ef2e25481075"}]}]},{"name":"networking","children":[{"name":"alb-internal","children":[{"name":"README.md","path":"main/us-east-1/prod/networking/alb-internal/README.md","sha":"480f54e2ca21a7d10746df7f33d44d0fa5e87157"},{"name":"terragrunt.hcl","path":"main/us-east-1/prod/networking/alb-internal/terragrunt.hcl","sha":"7353b23a76cac869f90fe141559006a038b914a4"}]},{"name":"alb-public","children":[{"name":"README.md","path":"main/us-east-1/prod/networking/alb-public/README.md","sha":"480f54e2ca21a7d10746df7f33d44d0fa5e87157"},{"name":"terragrunt.hcl","path":"main/us-east-1/prod/networking/alb-public/terragrunt.hcl","sha":"e4aa64bc163946dd8dd18b110b429df1186a69f9"}]},{"name":"route53-private","children":[{"name":"README.md","path":"main/us-east-1/prod/networking/route53-private/README.md","sha":"336d0271c48e07ad6b99a873f92eb57065117aea"},{"name":"terragrunt.hcl","path":"main/us-east-1/prod/networking/route53-private/terragrunt.hcl","sha":"e26eb83873177a2055e2426e9a5eac5a24761fb0"}]}]},{"name":"services","children":[{"name":"ecs-cluster","children":[{"name":"README.md","path":"main/us-east-1/prod/services/ecs-cluster/README.md","sha":"12b874067e96586d9b92a77b9974094302c7c5cf"},{"name":"terragrunt.hcl","path":"main/us-east-1/prod/services/ecs-cluster/terragrunt.hcl","sha":"afd88694629cc82d6b14b285dfa3a88614207d57"}]},{"name":"eks-cluster","children":[{"name":"README.md","path":"main/us-east-1/prod/services/eks-cluster/README.md","sha":"f2fa18304e44bccf7b5d89a5ce1159ca708d36ad"},{"name":"terragrunt.hcl","path":"main/us-east-1/prod/services/eks-cluster/terragrunt.hcl","sha":"b108b56d4e06cfb2d59fed74d68e7f0eca441c7e"}]},{"name":"eks-core-services","children":[{"name":"README.md","path":"main/us-east-1/prod/services/eks-core-services/README.md","sha":"089f3e86490a417db06316d539989d82cc4917be"},{"name":"terragrunt.hcl","path":"main/us-east-1/prod/services/eks-core-services/terragrunt.hcl","sha":"2a33668c8487e4940644cba85e46e8b6fa4c9fa2"}]},{"name":"k8s-applications-namespace","children":[{"name":"README.md","path":"main/us-east-1/prod/services/k8s-applications-namespace/README.md","sha":"d2bbc482d1c3a847e990ca5338034cce062fe42f"},{"name":"terragrunt.hcl","path":"main/us-east-1/prod/services/k8s-applications-namespace/terragrunt.hcl","sha":"d37d809385d3c6e9b2bff532c1731b7148d627c4"}]},{"name":"k8s-sample-app-backend-acme","children":[{"name":"README.md","path":"main/us-east-1/prod/services/k8s-sample-app-backend-acme/README.md","sha":"d1619d827c0687343a3c7480ded2e3bba67b6b36"},{"name":"terragrunt.hcl","path":"main/us-east-1/prod/services/k8s-sample-app-backend-acme/terragrunt.hcl","sha":"555cfec56c54dc477480ac9fa323b29454dc286d"}]},{"name":"k8s-sample-app-frontend-acme","children":[{"name":"README.md","path":"main/us-east-1/prod/services/k8s-sample-app-frontend-acme/README.md","sha":"dbb40ad0d5256cbf9ae8554d7213f3dd3572c470"},{"name":"terragrunt.hcl","path":"main/us-east-1/prod/services/k8s-sample-app-frontend-acme/terragrunt.hcl","sha":"3c594c7b30c0a766e590e21c908a1f06d12c5bad"}]},{"name":"sample-app-backend-acme-asg","children":[{"name":"README.md","path":"main/us-east-1/prod/services/sample-app-backend-acme-asg/README.md","sha":"58215a475731b891607df632e78d508527b27709"},{"name":"terragrunt.hcl","path":"main/us-east-1/prod/services/sample-app-backend-acme-asg/terragrunt.hcl","sha":"0e10585e613a8c0717a4cf5697d9f716e96cfd90"}]},{"name":"sample-app-backend-acme","children":[{"name":"README.md","path":"main/us-east-1/prod/services/sample-app-backend-acme/README.md","sha":"aa971da50ef47b017f7a7ced120c418cdc54f105"},{"name":"terragrunt.hcl","path":"main/us-east-1/prod/services/sample-app-backend-acme/terragrunt.hcl","sha":"8470d5775f2d11b455904abe33746e5d0f4ac598"}]},{"name":"sample-app-beanstalk","children":[{"name":"README.md","path":"main/us-east-1/prod/services/sample-app-beanstalk/README.md","sha":"7b537ebe5d51b7f81ac2cd6979bdc1e1868db46b"},{"name":"terragrunt.hcl","path":"main/us-east-1/prod/services/sample-app-beanstalk/terragrunt.hcl","sha":"b27cdd633cc284b5930e42e46ea0ee4ef62cab8b"}]},{"name":"sample-app-frontend-acme-asg","children":[{"name":"README.md","path":"main/us-east-1/prod/services/sample-app-frontend-acme-asg/README.md","sha":"140cd458d1ac53becdb27a5aa1efcccc9a2a8da9"},{"name":"terragrunt.hcl","path":"main/us-east-1/prod/services/sample-app-frontend-acme-asg/terragrunt.hcl","sha":"aad1e31cffa1938a9d74d00f4c0313e9affdc395"}]},{"name":"sample-app-frontend-acme","children":[{"name":"README.md","path":"main/us-east-1/prod/services/sample-app-frontend-acme/README.md","sha":"f4fa61b9674a87eb94fb9c442cf76c9af7ddbeb1"},{"name":"terragrunt.hcl","path":"main/us-east-1/prod/services/sample-app-frontend-acme/terragrunt.hcl","sha":"9ec3c74c659e8e3ae821161af7cfbbc7867c52fb"}]},{"name":"static-website","children":[{"name":"README.md","path":"main/us-east-1/prod/services/static-website/README.md","sha":"8c939e2c92afdf5a5b4d4ee7c1abc7bf4bc1893a"},{"name":"terragrunt.hcl","path":"main/us-east-1/prod/services/static-website/terragrunt.hcl","sha":"7ed4040eb5aed9eb6241231507cdd13b58869dc6"}]}]},{"name":"vpc","children":[{"name":"README.md","path":"main/us-east-1/prod/vpc/README.md","sha":"401eb21e9844b4a370d5724c7a5d6e89cef691a0"},{"name":"terragrunt.hcl","path":"main/us-east-1/prod/vpc/terragrunt.hcl","sha":"1e8c9b3d57e2abcac680873cef701b46cae33629"}]}]},{"name":"region.yaml","path":"main/us-east-1/region.yaml","sha":"d56afa3d82e6cea0d792e84748de56dafb0bad70"},{"name":"stage","children":[{"name":"README.md","path":"main/us-east-1/stage/README.md","sha":"b24ba21bf01baf19ff84a2de457697a757d905c5"},{"name":"cloudwatch-dashboard","children":[{"name":"README.md","path":"main/us-east-1/stage/cloudwatch-dashboard/README.md","sha":"0a17fffc74b691fa7292d39b1479fbaf09759865"},{"name":"terragrunt.hcl","path":"main/us-east-1/stage/cloudwatch-dashboard/terragrunt.hcl","sha":"4992ccec42bf3901e0ad5c0b84b82ac965552802"}]},{"name":"data-stores","children":[{"name":"elasticsearch","children":[{"name":"README.md","path":"main/us-east-1/stage/data-stores/elasticsearch/README.md","sha":"79a2fdb9e687cb43ad1da1e0bb0bca44e75278d3"},{"name":"terragrunt.hcl","path":"main/us-east-1/stage/data-stores/elasticsearch/terragrunt.hcl","sha":"d250fd73c893ae2975f17d839c24285e5fdb177b"}]},{"name":"kafka","children":[{"name":"README.md","path":"main/us-east-1/stage/data-stores/kafka/README.md","sha":"343beb0bcfeb3cb732646468c13856028140254e"},{"name":"terragrunt.hcl","path":"main/us-east-1/stage/data-stores/kafka/terragrunt.hcl","sha":"234927773f4788497c6eef955e80113a39c7134b"}]},{"name":"mysql","children":[{"name":"README.md","path":"main/us-east-1/stage/data-stores/mysql/README.md","sha":"d67aa3a912e090d42e5759cd7ae8f122573d7a3c"},{"name":"terragrunt.hcl","path":"main/us-east-1/stage/data-stores/mysql/terragrunt.hcl","sha":"00c9d0753591c477ddb91f3a8909421e4ddb6c21"}]},{"name":"redis","children":[{"name":"README.md","path":"main/us-east-1/stage/data-stores/redis/README.md","sha":"4c7889cbb5a55ea1d50757978587e70942051107"},{"name":"terragrunt.hcl","path":"main/us-east-1/stage/data-stores/redis/terragrunt.hcl","sha":"6b97a676e4b4a278d6eb7012450a67a8b33c3be8"}]},{"name":"zookeeper","children":[{"name":"README.md","path":"main/us-east-1/stage/data-stores/zookeeper/README.md","sha":"7b5c7ae966bb6b494d5c8eefc47c1e5152a41059"},{"name":"terragrunt.hcl","path":"main/us-east-1/stage/data-stores/zookeeper/terragrunt.hcl","sha":"ac001892c549ca0fa916d212fb4731f1cc3072bf"}]}]},{"name":"env.yaml","path":"main/us-east-1/stage/env.yaml","sha":"5767506e27e978f52524dadbbd8fb9f8ad115599"},{"name":"kms-master-key","children":[{"name":"README.md","path":"main/us-east-1/stage/kms-master-key/README.md","sha":"5bc60f1c2105c9c65139e2f581b79cd8919fb91b"},{"name":"terragrunt.hcl","path":"main/us-east-1/stage/kms-master-key/terragrunt.hcl","sha":"a9da1222bc348ba6bd485f8b86e7a656735a13e1"}]},{"name":"lambda","children":[{"name":"long-running-scheduled","children":[{"name":"README.md","path":"main/us-east-1/stage/lambda/long-running-scheduled/README.md","sha":"bc9267af042b130202eda5e1d51a887efa103baf"},{"name":"terragrunt.hcl","path":"main/us-east-1/stage/lambda/long-running-scheduled/terragrunt.hcl","sha":"ca12d1e9236c9c781aa3d3a18b3a2b66d1d1be12"}]},{"name":"s3-image-processing","children":[{"name":"README.md","path":"main/us-east-1/stage/lambda/s3-image-processing/README.md","sha":"c280ea49fb13e21cb4b935ed5c730189b7fae1cd"},{"name":"terragrunt.hcl","path":"main/us-east-1/stage/lambda/s3-image-processing/terragrunt.hcl","sha":"a6d026ce32c513841f0b315f68cafe5074e56eeb"}]}]},{"name":"networking","children":[{"name":"alb-internal","children":[{"name":"README.md","path":"main/us-east-1/stage/networking/alb-internal/README.md","sha":"e02373221d5b9c42b83aa5d000ba10ec9559af8b"},{"name":"terragrunt.hcl","path":"main/us-east-1/stage/networking/alb-internal/terragrunt.hcl","sha":"c0e0ec15470dd52d24016e92376ab9b7e9ba215d"}]},{"name":"alb-public","children":[{"name":"README.md","path":"main/us-east-1/stage/networking/alb-public/README.md","sha":"e02373221d5b9c42b83aa5d000ba10ec9559af8b"},{"name":"terragrunt.hcl","path":"main/us-east-1/stage/networking/alb-public/terragrunt.hcl","sha":"d539d571884e90dae7a4453e75e6b400cd496834"}]},{"name":"route53-private","children":[{"name":"README.md","path":"main/us-east-1/stage/networking/route53-private/README.md","sha":"336d0271c48e07ad6b99a873f92eb57065117aea"},{"name":"terragrunt.hcl","path":"main/us-east-1/stage/networking/route53-private/terragrunt.hcl","sha":"e26eb83873177a2055e2426e9a5eac5a24761fb0"}]}]},{"name":"services","children":[{"name":"ecs-cluster","children":[{"name":"README.md","path":"main/us-east-1/stage/services/ecs-cluster/README.md","sha":"e76775a3015b45e88dd359fb6d9d8d2c2ec58d7f"},{"name":"terragrunt.hcl","path":"main/us-east-1/stage/services/ecs-cluster/terragrunt.hcl","sha":"4945fd132581be1f50634b8f215a9d1959550c44"}]},{"name":"eks-cluster","children":[{"name":"README.md","path":"main/us-east-1/stage/services/eks-cluster/README.md","sha":"579691796e2e7370398365533252389758f8b466"},{"name":"terragrunt.hcl","path":"main/us-east-1/stage/services/eks-cluster/terragrunt.hcl","sha":"4774337955ded6b14f864696f6ab41f84344ca84"}]},{"name":"eks-core-services","children":[{"name":"README.md","path":"main/us-east-1/stage/services/eks-core-services/README.md","sha":"f78e9d9dde5c4f9c3a17fc0b4a2c00fa5422b292"},{"name":"terragrunt.hcl","path":"main/us-east-1/stage/services/eks-core-services/terragrunt.hcl","sha":"2a33668c8487e4940644cba85e46e8b6fa4c9fa2"}]},{"name":"k8s-applications-namespace","children":[{"name":"README.md","path":"main/us-east-1/stage/services/k8s-applications-namespace/README.md","sha":"a824cc3003d1b75c1a68dcd3114620f0b652b484"},{"name":"terragrunt.hcl","path":"main/us-east-1/stage/services/k8s-applications-namespace/terragrunt.hcl","sha":"d37d809385d3c6e9b2bff532c1731b7148d627c4"}]},{"name":"k8s-sample-app-backend-acme","children":[{"name":"README.md","path":"main/us-east-1/stage/services/k8s-sample-app-backend-acme/README.md","sha":"0e7153d1bf6eb7e62490c32a2b2bd4864ee0d458"},{"name":"terragrunt.hcl","path":"main/us-east-1/stage/services/k8s-sample-app-backend-acme/terragrunt.hcl","sha":"c15d57c9082e7de34f156f65b0a33382760ad5d9"}]},{"name":"k8s-sample-app-frontend-acme","children":[{"name":"README.md","path":"main/us-east-1/stage/services/k8s-sample-app-frontend-acme/README.md","sha":"63bf8c963346f5533d0b7f8b9a00cf54cdb6cc4a"},{"name":"terragrunt.hcl","path":"main/us-east-1/stage/services/k8s-sample-app-frontend-acme/terragrunt.hcl","sha":"d9edf447ae4058f0ed0e9947eb829515bdeaa059"}]},{"name":"sample-app-backend-acme-asg","children":[{"name":"README.md","path":"main/us-east-1/stage/services/sample-app-backend-acme-asg/README.md","sha":"0f74982c81164ca98163e0fa26c0b684b5f7277c"},{"name":"terragrunt.hcl","path":"main/us-east-1/stage/services/sample-app-backend-acme-asg/terragrunt.hcl","sha":"298f75ffe7a6b1f200af5887d049a9fad15a3ea5"}]},{"name":"sample-app-backend-acme","children":[{"name":"README.md","path":"main/us-east-1/stage/services/sample-app-backend-acme/README.md","sha":"fc6129e477cce73d89cd9e011d4719f101235440"},{"name":"terragrunt.hcl","path":"main/us-east-1/stage/services/sample-app-backend-acme/terragrunt.hcl","sha":"682fae8d7bcb898cb3532160030865484e61e96a"}]},{"name":"sample-app-beanstalk","children":[{"name":"README.md","path":"main/us-east-1/stage/services/sample-app-beanstalk/README.md","sha":"5dea142b8a096cb32274045651a58717d1db0fa4"},{"name":"terragrunt.hcl","path":"main/us-east-1/stage/services/sample-app-beanstalk/terragrunt.hcl","sha":"0ce85939e9537f70d13b073df2e3899e42c463ac"}]},{"name":"sample-app-frontend-acme-asg","children":[{"name":"README.md","path":"main/us-east-1/stage/services/sample-app-frontend-acme-asg/README.md","sha":"b9b7ea1fd786fe7ef5aa8c8a42072f0e380cee73"},{"name":"terragrunt.hcl","path":"main/us-east-1/stage/services/sample-app-frontend-acme-asg/terragrunt.hcl","sha":"7ea6f6373593b44540e210ca2a5392ccf317bb7f"}]},{"name":"sample-app-frontend-acme","children":[{"name":"README.md","path":"main/us-east-1/stage/services/sample-app-frontend-acme/README.md","sha":"6076c314def8ecdc928086860f841bb73a202c7f"},{"name":"terragrunt.hcl","path":"main/us-east-1/stage/services/sample-app-frontend-acme/terragrunt.hcl","sha":"0ff5afe6af1daf067c4c7a3a08e5e1a32d31b65f"}]},{"name":"static-website","children":[{"name":"README.md","path":"main/us-east-1/stage/services/static-website/README.md","sha":"8c939e2c92afdf5a5b4d4ee7c1abc7bf4bc1893a"},{"name":"terragrunt.hcl","path":"main/us-east-1/stage/services/static-website/terragrunt.hcl","sha":"e9e14535706a125eb1906ff8c87bbb64212b627f"}]}]},{"name":"vpc","children":[{"name":"README.md","path":"main/us-east-1/stage/vpc/README.md","sha":"dfd9152ccc6e58b0031cefe8b0457c474da86ba0"},{"name":"terragrunt.hcl","path":"main/us-east-1/stage/vpc/terragrunt.hcl","sha":"e4303dc28fe15b86aa123c1be4ae2f6912cb4924"}]}]}]}]}]},"detailsContent":"<p></p>\n<h1 class=\"preview__body--title\" id=\"live-infrastructure\">Live Infrastructure</h1><div class=\"preview__body--border\"></div><p>This repository contains code to deploy infrastructure across all live environments for Acme in AWS. The\ncode deploys modules from the\n<a href=\"/repos/infrastructure-modules-acme\" class=\"preview__body--description--blue\">infrastructure-modules-acme</a> repository. This\ncode was built on top of the <a href=\"https://gruntwork.io/reference-architecture/\" class=\"preview__body--description--blue\" target=\"_blank\">Gruntwork Reference Architecture</a>.</p>\n<p><img src=\"/repos/images/v0.0.1-08112020/infrastructure-live-acme/_docs/_images/ref-arch-full.png?raw=true\" alt=\"Reference Architecture\" class=\"preview__body--diagram\"></p>\n<h2 class=\"preview__body--subtitle\" id=\"features\">Features</h2>\n<ul>\n<li>End-to-end tech stack for AWS.</li>\n<li>100% defined and managed as code using tools such as Terraform, Docker, and Packer.</li>\n<li>Built on top of the reusable, battle-tested, commercially supported code from the <a href=\"https://gruntwork.io/infrastructure-as-code-library/\" class=\"preview__body--description--blue\" target=\"_blank\">Gruntwork Infrastructure as Code\nLibrary</a>.</li>\n<li>Deployed into your AWS accounts in about 1 day.</li>\n<li>Customized to your needs:\n<ul>\n<li>Run containerized services using Kubernetes or ECS.</li>\n<li>Run VMs on EC2 Instances and Auto Scaling Groups.</li>\n<li>Use PostgreSQL, MySQL, SQL Server, or other relational database.</li>\n<li>Use Redis or Memcached as a distributed cache.</li>\n<li>Use other data stores such as Kafka, ZooKeeper, ELK, SQS, Kinesis, and MongoDB.</li>\n<li>Optionally enable end-to-end encryption (e.g., as part of HIPAA, PCI, or other compliance programs).</li>\n<li>Configure a CI / CD pipeline in CircleCI, Travis CI, or Jenkins.</li>\n<li>Access the network via a Bastion Host or OpenVPN server.</li>\n<li>Use KMS for secrets management.</li>\n<li>Store static content in S3, with CloudFront as a CDN.</li>\n<li>Build serverless apps with AWS Lambda and API Gateway.</li>\n<li>Configure monitoring, alerting, and log aggregation in CloudWatch.</li>\n<li>And much more!</li>\n</ul>\n</li>\n</ul>\n<h2 class=\"preview__body--subtitle\" id=\"learn\">Learn</h2>\n<h3 class=\"preview__body--subtitle\" id=\"core-concepts\">Core concepts</h3>\n<ul>\n<li><a href=\"/repos/v0.0.1-08112020/infrastructure-live-acme/_docs\" class=\"preview__body--description--blue\">Reference Architecture Walkthrough Documentation</a>: Comprehensive documentation that walks through all\naspects of this architecture, including what's deployed, how the code is organized, how to run the code in dev,\nhow the CI / CD pipeline works, how to access metrics and logs, how to connect via VPN and SSH, and much more.</li>\n<li><a href=\"https://training.gruntwork.io/p/reference-architecture-walkthrough\" class=\"preview__body--description--blue\" target=\"_blank\">Gruntwork Reference Architecture Training Course</a>:\nA video course that walks through you what the Reference Architecture is and how to use it.</li>\n<li><a href=\"https://blog.gruntwork.io/how-to-build-an-end-to-end-production-grade-architecture-on-aws-part-1-eae8eeb41fec\" class=\"preview__body--description--blue\" target=\"_blank\">How to Build an End to End Production-Grade Architecture on AWS</a>:\nA blog post series that discusses the basic principles behind the Reference Architecture.</li>\n<li><a href=\"https://gruntwork.io/guides/foundations/how-to-use-gruntwork-infrastructure-as-code-library/\" class=\"preview__body--description--blue\" target=\"_blank\">How to use the Gruntwork Infrastructure as Code Library</a>:\nThe Reference Architecture is built on top of the <a href=\"https://gruntwork.io/infrastructure-as-code-library/\" class=\"preview__body--description--blue\" target=\"_blank\">Gruntwork Infrastructure as Code\nLibrary</a>. Check out this guide to learn what the library is and\nhow to use it.</li>\n<li><a href=\"https://gruntwork.io/guides/\" class=\"preview__body--description--blue\" target=\"_blank\">Gruntwork Production Deployment Guides</a>: Step-by-step guides that show you how to go\nto production on top of AWS.</li>\n</ul>\n<h3 class=\"preview__body--subtitle\" id=\"repo-organization\">Repo organization</h3>\n<ul>\n<li><a href=\"/repos/v0.0.1-08112020/infrastructure-live-acme/_docs/04-how-code-is-organized.md\" class=\"preview__body--description--blue\">How the code is organized</a>: An overview of how the code in this repo and all\nother Reference Architecture repos is organized.</li>\n<li><a href=\"/repos/v0.0.1-08112020/infrastructure-live-acme/_docs/02-whats-deployed.md\" class=\"preview__body--description--blue\">What's deployed</a>: An overview of what's deployed in your AWS accounts.</li>\n</ul>\n<h2 class=\"preview__body--subtitle\" id=\"deploy\">Deploy</h2>\n<h3 class=\"preview__body--subtitle\" id=\"deploy-updates\">Deploy updates</h3>\n<p>If you want to deploy updates to this infrastructure, check out the following resources:</p>\n<ul>\n<li><a href=\"/repos/v0.0.1-08112020/infrastructure-live-acme/_docs/06-ci-cd.md#deploying-app-changes\" class=\"preview__body--description--blue\">Deploying app changes</a>: Instructions on how to deploy changes to an app,\nsuch as a Java/Ruby/Python web service packaged with Docker or Packer.</li>\n<li><a href=\"/repos/v0.0.1-08112020/infrastructure-live-acme/_docs/06-ci-cd.md#deploying-infrastructure-changes\" class=\"preview__body--description--blue\">Deploying infrastructure changes</a>: Instructions on how to\ndeploy changes to infrastructure code, such as Terraform modules that configure your VPCs, databases, DNS settings,\netc.</li>\n<li><a href=\"/repos/v0.0.1-08112020/infrastructure-live-acme/_docs/15-adding-new-environments-regions-and-accounts.md\" class=\"preview__body--description--blue\">Adding New Environments, Regions, and Accounts</a>:\nInstructions on how to add a new environment, region, or account to your Reference Architecture.</li>\n</ul>\n<h3 class=\"preview__body--subtitle\" id=\"deploy-from-scratch\">Deploy from scratch</h3>\n<p>If you want to deploy this infrastructure from scratch, check out the following resources:</p>\n<ul>\n<li><a href=\"/repos/v0.0.1-08112020/infrastructure-live-acme/_docs/11-deploying-a-docker-service.md\" class=\"preview__body--description--blue\">Deploying a new Docker service from scratch</a>: Instructions on how to\nDockerize a new app and deploy it into the Reference Architecture.</li>\n<li><a href=\"/repos/v0.0.1-08112020/infrastructure-live-acme/_docs/13-deploying-the-reference-architecture-from-scratch.md\" class=\"preview__body--description--blue\">Deploying the Reference Architecture from scratch</a>:\nInstructions on how to deploy the Reference Architecture from scratch.</li>\n<li><a href=\"/repos/v0.0.1-08112020/infrastructure-live-acme/_docs/14-undeploying-the-reference-architecture.md\" class=\"preview__body--description--blue\">Undeploying the Reference Architecture</a>: Instructions on how to\nundeploy the Reference Architecture completely.</li>\n</ul>\n<h2 class=\"preview__body--subtitle\" id=\"manage\">Manage</h2>\n<h3 class=\"preview__body--subtitle\" id=\"day-to-day-operations\">Day-to-day operations</h3>\n<ul>\n<li><a href=\"/repos/v0.0.1-08112020/infrastructure-live-acme/_docs/09-accounts-and-auth.md\" class=\"preview__body--description--blue\">How to authenticate to AWS</a></li>\n<li><a href=\"/repos/v0.0.1-08112020/infrastructure-live-acme/_docs/08-ssh-vpn.md\" class=\"preview__body--description--blue\">How to connect via VPN and/or SSH</a></li>\n<li><a href=\"/repos/v0.0.1-08112020/infrastructure-live-acme/_docs/07-monitoring-alerting-logging.md\" class=\"preview__body--description--blue\">How to view metrics, logs, and alerts</a></li>\n<li><a href=\"/repos/v0.0.1-08112020/infrastructure-live-acme/_docs/10-gruntwork-tools.md\" class=\"preview__body--description--blue\">Useful tools</a></li>\n</ul>\n<h3 class=\"preview__body--subtitle\" id=\"major-changes\">Major changes</h3>\n<ul>\n<li><a href=\"/repos/v0.0.1-08112020/infrastructure-live-acme/_docs/12-migration.md\" class=\"preview__body--description--blue\">How to migrate to the Reference Architecture</a></li>\n</ul>\n<h2 class=\"preview__body--subtitle\" id=\"support\">Support</h2>\n<p>If you need help with this repo or anything else related to infrastructure or DevOps, Gruntwork offers\n<a href=\"https://gruntwork.io/support/\" class=\"preview__body--description--blue\" target=\"_blank\">Commercial Support</a> via Slack, email, and phone/video. If you're already a Gruntwork\ncustomer, hop on Slack and ask away! If not, <a href=\"https://www.gruntwork.io/pricing/\" class=\"preview__body--description--blue\" target=\"_blank\">subscribe now</a>. If you're not sure,\nfeel free to email us at <a href=\"mailto:support@gruntwork.io\" class=\"preview__body--description--blue\" target=\"_blank\">support@gruntwork.io</a>.</p>\n","repoName":"infrastructure-live-acme","repoRef":"v0.0.1-08112020","serviceDescriptor":{"serviceName":"Single-account Reference Architecture","serviceRepoName":"infrastructure-live-acme","serviceRepoOrg":"gruntwork-io","cloudProviders":["aws"],"description":"End-to-end tech stack designed to deploy into a single AWS account. Includes VPCs, EKS, ALBs, CI / CD, monitoring, alerting, VPN, DNS, and more.","imageUrl":"grunt.png","licenseType":"subscriber","technologies":["Terraform","Go","Bash","Python"],"compliance":[],"tags":[""]},"serviceCategoryName":"Reference Architecture","fileName":"README.md","filePath":"","title":"Repo Browser: Single-account Reference Architecture","description":"Browse the repos in the Gruntwork Infrastructure as Code Library."}