From 06b66e22ce762b6dfe538b05eb278376cdcaad34 Mon Sep 17 00:00:00 2001 From: Bill Monkman Date: Mon, 25 May 2020 16:19:49 -0700 Subject: [PATCH 1/2] Reorganized for the new zero project. Moved everything templated into a templates directory. Made a new readme, makefile at the root. Restructured the module file. --- Makefile | 53 +-------------- README.md | 65 ++----------------- commit0.module.yml | 6 -- templates/Makefile | 52 +++++++++++++++ templates/README.md | 38 +++++++++++ .../docs}/architecture-overview.drawio | 0 .../docs}/architecture-overview.svg | 0 {docs => templates/docs}/resources.md | 0 .../environments/development/main.tf | 0 .../terraform/environments/production/main.tf | 0 .../terraform/environments/staging/main.tf | 0 .../terraform/modules/kubernetes/README.md | 0 .../modules/kubernetes/cert_manager.tf | 0 .../modules/kubernetes/cluster_autoscaler.tf | 0 .../modules/kubernetes/external_dns.tf | 0 .../kubernetes/files/cert-manager.crds.yaml | 0 .../files/cert_manager_issuer.yaml.tpl | 0 .../modules/kubernetes/ingress/README.md | 0 .../modules/kubernetes/ingress/main.tf | 0 .../modules/kubernetes/ingress/variables.tf | 0 .../kubernetes/kubernetes_dashboard.tf | 0 .../terraform/modules/kubernetes/main.tf | 0 .../modules/kubernetes/metrics_server.tf | 0 .../kubernetes/monitoring/cloudwatch_agent.tf | 0 .../monitoring/docs/test-logging-app.yaml | 0 .../monitoring/files/containers.conf | 0 .../monitoring/files/cwagentconfig.json.tpl | 0 .../kubernetes/monitoring/files/fluent.conf | 0 .../kubernetes/monitoring/files/host.conf | 0 .../kubernetes/monitoring/files/systemd.conf | 0 .../modules/kubernetes/monitoring/fluentd.tf | 0 .../modules/kubernetes/monitoring/main.tf | 0 .../kubernetes/monitoring/variables.tf | 0 .../terraform/modules/kubernetes/provider.tf | 0 .../terraform/modules/kubernetes/variables.tf | 0 {terraform => templates/terraform}/README.md | 0 .../terraform}/bootstrap/remote-state/main.tf | 0 .../terraform}/bootstrap/secrets/.gitignore | 0 .../terraform}/bootstrap/secrets/main.tf | 0 .../environments/production/main.tf | 0 .../terraform}/environments/staging/main.tf | 0 .../terraform}/modules/certificate/main.tf | 0 .../terraform}/modules/certificate/outputs.tf | 0 .../modules/certificate/variables.tf | 0 .../modules/certificate/versions.tf | 0 .../terraform}/modules/cognito/main.tf | 0 .../terraform}/modules/cognito/variables.tf | 0 .../terraform}/modules/database/main.tf | 0 .../terraform}/modules/database/variables.tf | 0 .../terraform}/modules/database/versions.tf | 0 .../terraform}/modules/ecr/main.tf | 0 .../terraform}/modules/ecr/variables.tf | 0 .../terraform}/modules/ecr/versions.tf | 0 .../terraform}/modules/eks/main.tf | 0 .../terraform}/modules/eks/outputs.tf | 0 .../terraform}/modules/eks/variables.tf | 0 .../terraform}/modules/eks/versions.tf | 0 .../terraform}/modules/environment/iam.tf | 0 .../terraform}/modules/environment/main.tf | 0 .../modules/environment/provider.tf | 0 .../modules/environment/variables.tf | 0 .../modules/environment/versions.tf | 0 .../terraform}/modules/s3_hosting/main.tf | 0 .../terraform}/modules/s3_hosting/outputs.tf | 0 .../modules/s3_hosting/variables.tf | 0 .../terraform}/modules/s3_hosting/versions.tf | 0 .../terraform}/modules/secret/main.tf | 0 .../terraform}/modules/secret/output.tf | 0 .../terraform}/modules/secret/variables.tf | 0 .../terraform}/modules/secret/versions.tf | 0 .../terraform}/modules/vpc/main.tf | 0 .../terraform}/modules/vpc/outputs.tf | 0 .../terraform}/modules/vpc/variables.tf | 0 .../terraform}/modules/vpc/versions.tf | 0 zero-module.yml | 43 ++++++++++++ 75 files changed, 139 insertions(+), 118 deletions(-) delete mode 100644 commit0.module.yml create mode 100644 templates/Makefile create mode 100644 templates/README.md rename {docs => templates/docs}/architecture-overview.drawio (100%) rename {docs => templates/docs}/architecture-overview.svg (100%) rename {docs => templates/docs}/resources.md (100%) rename {kubernetes => templates/kubernetes}/terraform/environments/development/main.tf (100%) rename {kubernetes => templates/kubernetes}/terraform/environments/production/main.tf (100%) rename {kubernetes => templates/kubernetes}/terraform/environments/staging/main.tf (100%) rename {kubernetes => templates/kubernetes}/terraform/modules/kubernetes/README.md (100%) rename {kubernetes => templates/kubernetes}/terraform/modules/kubernetes/cert_manager.tf (100%) rename {kubernetes => templates/kubernetes}/terraform/modules/kubernetes/cluster_autoscaler.tf (100%) rename {kubernetes => templates/kubernetes}/terraform/modules/kubernetes/external_dns.tf (100%) rename {kubernetes => templates/kubernetes}/terraform/modules/kubernetes/files/cert-manager.crds.yaml (100%) rename {kubernetes => templates/kubernetes}/terraform/modules/kubernetes/files/cert_manager_issuer.yaml.tpl (100%) rename {kubernetes => templates/kubernetes}/terraform/modules/kubernetes/ingress/README.md (100%) rename {kubernetes => templates/kubernetes}/terraform/modules/kubernetes/ingress/main.tf (100%) rename {kubernetes => templates/kubernetes}/terraform/modules/kubernetes/ingress/variables.tf (100%) rename {kubernetes => templates/kubernetes}/terraform/modules/kubernetes/kubernetes_dashboard.tf (100%) rename {kubernetes => templates/kubernetes}/terraform/modules/kubernetes/main.tf (100%) rename {kubernetes => templates/kubernetes}/terraform/modules/kubernetes/metrics_server.tf (100%) rename {kubernetes => templates/kubernetes}/terraform/modules/kubernetes/monitoring/cloudwatch_agent.tf (100%) rename {kubernetes => templates/kubernetes}/terraform/modules/kubernetes/monitoring/docs/test-logging-app.yaml (100%) rename {kubernetes => templates/kubernetes}/terraform/modules/kubernetes/monitoring/files/containers.conf (100%) rename {kubernetes => templates/kubernetes}/terraform/modules/kubernetes/monitoring/files/cwagentconfig.json.tpl (100%) rename {kubernetes => templates/kubernetes}/terraform/modules/kubernetes/monitoring/files/fluent.conf (100%) rename {kubernetes => templates/kubernetes}/terraform/modules/kubernetes/monitoring/files/host.conf (100%) rename {kubernetes => templates/kubernetes}/terraform/modules/kubernetes/monitoring/files/systemd.conf (100%) rename {kubernetes => templates/kubernetes}/terraform/modules/kubernetes/monitoring/fluentd.tf (100%) rename {kubernetes => templates/kubernetes}/terraform/modules/kubernetes/monitoring/main.tf (100%) rename {kubernetes => templates/kubernetes}/terraform/modules/kubernetes/monitoring/variables.tf (100%) rename {kubernetes => templates/kubernetes}/terraform/modules/kubernetes/provider.tf (100%) rename {kubernetes => templates/kubernetes}/terraform/modules/kubernetes/variables.tf (100%) rename {terraform => templates/terraform}/README.md (100%) rename {terraform => templates/terraform}/bootstrap/remote-state/main.tf (100%) rename {terraform => templates/terraform}/bootstrap/secrets/.gitignore (100%) rename {terraform => templates/terraform}/bootstrap/secrets/main.tf (100%) rename {terraform => templates/terraform}/environments/production/main.tf (100%) rename {terraform => templates/terraform}/environments/staging/main.tf (100%) rename {terraform => templates/terraform}/modules/certificate/main.tf (100%) rename {terraform => templates/terraform}/modules/certificate/outputs.tf (100%) rename {terraform => templates/terraform}/modules/certificate/variables.tf (100%) rename {terraform => templates/terraform}/modules/certificate/versions.tf (100%) rename {terraform => templates/terraform}/modules/cognito/main.tf (100%) rename {terraform => templates/terraform}/modules/cognito/variables.tf (100%) rename {terraform => templates/terraform}/modules/database/main.tf (100%) rename {terraform => templates/terraform}/modules/database/variables.tf (100%) rename {terraform => templates/terraform}/modules/database/versions.tf (100%) rename {terraform => templates/terraform}/modules/ecr/main.tf (100%) rename {terraform => templates/terraform}/modules/ecr/variables.tf (100%) rename {terraform => templates/terraform}/modules/ecr/versions.tf (100%) rename {terraform => templates/terraform}/modules/eks/main.tf (100%) rename {terraform => templates/terraform}/modules/eks/outputs.tf (100%) rename {terraform => templates/terraform}/modules/eks/variables.tf (100%) rename {terraform => templates/terraform}/modules/eks/versions.tf (100%) rename {terraform => templates/terraform}/modules/environment/iam.tf (100%) rename {terraform => templates/terraform}/modules/environment/main.tf (100%) rename {terraform => templates/terraform}/modules/environment/provider.tf (100%) rename {terraform => templates/terraform}/modules/environment/variables.tf (100%) rename {terraform => templates/terraform}/modules/environment/versions.tf (100%) rename {terraform => templates/terraform}/modules/s3_hosting/main.tf (100%) rename {terraform => templates/terraform}/modules/s3_hosting/outputs.tf (100%) rename {terraform => templates/terraform}/modules/s3_hosting/variables.tf (100%) rename {terraform => templates/terraform}/modules/s3_hosting/versions.tf (100%) rename {terraform => templates/terraform}/modules/secret/main.tf (100%) rename {terraform => templates/terraform}/modules/secret/output.tf (100%) rename {terraform => templates/terraform}/modules/secret/variables.tf (100%) rename {terraform => templates/terraform}/modules/secret/versions.tf (100%) rename {terraform => templates/terraform}/modules/vpc/main.tf (100%) rename {terraform => templates/terraform}/modules/vpc/outputs.tf (100%) rename {terraform => templates/terraform}/modules/vpc/variables.tf (100%) rename {terraform => templates/terraform}/modules/vpc/versions.tf (100%) create mode 100644 zero-module.yml diff --git a/Makefile b/Makefile index 6b945d0..841caf6 100644 --- a/Makefile +++ b/Makefile @@ -1,52 +1,3 @@ -ENV ?= staging -apply: apply-remote-state apply-secrets apply-env apply-k8s-utils - -## remove state file only if exit code 0 from terraform apply -apply-remote-state: - pushd terraform/bootstrap/remote-state && \ - terraform init && \ - terraform apply -var "environment=$(ENV)" && \ - rm ./terraform.tfstate - -apply-secrets: - pushd terraform/bootstrap/secrets && \ - terraform init && \ - terraform apply && \ - rm ./terraform.tfstate - -apply-env: - pushd terraform/environments/$(ENV); \ - terraform init && \ - terraform apply - -apply-k8s-utils: update-k8s-conf - pushd kubernetes/terraform/environments/$(ENV) && \ - terraform init && \ - terraform apply - -update-k8s-conf: - aws eks --region <% index .Params `region` %> update-kubeconfig --name <% .Name %>-$(ENV)-<% index .Params `region` %> - -teardown: teardown-k8s-utils teardown-env teardown-secrets teardown-remote-state - -teardown-remote-state: - export AWS_PAGER='' && \ - aws s3 rb s3://<% .Name %>-$(ENV)-terraform-state --force && \ - aws dynamodb delete-table --table-name <% .Name %>-$(ENV)-terraform-state-locks - -teardown-secrets: - export AWS_PAGER='' && \ - aws secretsmanager list-secrets --query "SecretList[?Tags[?Key=='project' && Value=='<% .Name %>']].[Name] | [0][0]" | xargs aws secretsmanager delete-secret --secret-id && \ - aws iam delete-access-key --user-name <% .Name %>-ci-user --access-key-id $(shell aws iam list-access-keys --user-name <% .Name %>-ci-user --query "AccessKeyMetadata[0].AccessKeyId" | sed 's/"//g') && \ - aws iam delete-user --user-name <% .Name %>-ci-user - -teardown-env: - pushd terraform/environments/$(ENV) && \ - terraform destroy - -teardown-k8s-utils: - pushd kubernetes/terraform/environments/$(ENV) && \ - terraform destroy - -.PHONY: apply apply-remote-state apply-secrets apply-env apply-k8s-utils teardown-k8s-utils teardown-env teardown-secrets teardown-remote-state +run: + @echo Done diff --git a/README.md b/README.md index dd5e1f0..881f70b 100644 --- a/README.md +++ b/README.md @@ -1,9 +1,9 @@ # AWS EKS Stack -This is a [Commit0](https://github.com/commitdev/commit0) module which sets up a +This is a [zero](https://github.com/commitdev/zero) module which sets up a hosting environment on AWS running Kubernetes. It will generate terraform output which describes the environment mapped in this [architecture -diagram](./docs/architecture-overview.svg). +diagram](./templates/docs/architecture-overview.svg). **Prerequisites** - Terraform installed @@ -16,67 +16,10 @@ diagram](./docs/architecture-overview.svg). ## Getting Started -This is meant to be used with the commit0 `stack` tool and not directly. See -the [stack](https://github.com/commitdev/stack) repository for more +This is meant to be used with the `zero` tool and not directly. See +the [zero](https://github.com/commitdev/zero) repository for more information. The tool will parse through configuration and fill in any template variables which need to be encoded into the terraform configuration. -Once that is done you'll have a directory containing the contents of this -repository minus the `.git` directory. - -To generate the templates you will need to provide some values to fill in. - -First get the AMI for your region: -```shell -$ REGION=us-east-1 -$ aws ssm get-parameters \ - --names /aws/service/eks/optimized-ami/1.15/amazon-linux-2/recommended/image_id \ - --region $REGION \ - --query "Parameters[0].Value" -``` - -Then get the aws account id: -```shell -aws sts get-caller-identity --query "Account" -``` - -Then create a `zero.yml` file and fill in the appropriate values: - -```yaml -name: my-project - -params: - region: us-east-1 - accountId: - kubeWorkerAMI: ami- - productionHostRoot: domain.com - productionFrontendHost: domain.com - productionBackendHost: api.domain.com - stagingHostRoot: domain-staging.com - stagingFrontendHost: domain-staging.com - stagingBackendHost: api.domain-staging.com - -``` - -And run `stack`: -```shell -$ stack -config config.yml commit0-aws-eks-stack/ my-project-infrastructure/ -``` - -### Apply Configuration -To init and apply the terraform configs, simply run the `make` and specify the -environment. The default environment is `staging` -```shell -$ make ENV= -``` - -### Set up an application -Configure your k8s context - -```shell -$ aws eks update-kubeconfig --name --region us-east-1 -``` - -Then talk to Bill. ### How much does this stack cost? The expected total monthly cost: $ 0.202 USD / hr or ~$150USD / month. The most diff --git a/commit0.module.yml b/commit0.module.yml deleted file mode 100644 index 04745dd..0000000 --- a/commit0.module.yml +++ /dev/null @@ -1,6 +0,0 @@ -template: - strictMode: true - delimiters: - - '<%' - - '%>' - output: 'infrastructure' diff --git a/templates/Makefile b/templates/Makefile new file mode 100644 index 0000000..6b945d0 --- /dev/null +++ b/templates/Makefile @@ -0,0 +1,52 @@ +ENV ?= staging + +apply: apply-remote-state apply-secrets apply-env apply-k8s-utils + +## remove state file only if exit code 0 from terraform apply +apply-remote-state: + pushd terraform/bootstrap/remote-state && \ + terraform init && \ + terraform apply -var "environment=$(ENV)" && \ + rm ./terraform.tfstate + +apply-secrets: + pushd terraform/bootstrap/secrets && \ + terraform init && \ + terraform apply && \ + rm ./terraform.tfstate + +apply-env: + pushd terraform/environments/$(ENV); \ + terraform init && \ + terraform apply + +apply-k8s-utils: update-k8s-conf + pushd kubernetes/terraform/environments/$(ENV) && \ + terraform init && \ + terraform apply + +update-k8s-conf: + aws eks --region <% index .Params `region` %> update-kubeconfig --name <% .Name %>-$(ENV)-<% index .Params `region` %> + +teardown: teardown-k8s-utils teardown-env teardown-secrets teardown-remote-state + +teardown-remote-state: + export AWS_PAGER='' && \ + aws s3 rb s3://<% .Name %>-$(ENV)-terraform-state --force && \ + aws dynamodb delete-table --table-name <% .Name %>-$(ENV)-terraform-state-locks + +teardown-secrets: + export AWS_PAGER='' && \ + aws secretsmanager list-secrets --query "SecretList[?Tags[?Key=='project' && Value=='<% .Name %>']].[Name] | [0][0]" | xargs aws secretsmanager delete-secret --secret-id && \ + aws iam delete-access-key --user-name <% .Name %>-ci-user --access-key-id $(shell aws iam list-access-keys --user-name <% .Name %>-ci-user --query "AccessKeyMetadata[0].AccessKeyId" | sed 's/"//g') && \ + aws iam delete-user --user-name <% .Name %>-ci-user + +teardown-env: + pushd terraform/environments/$(ENV) && \ + terraform destroy + +teardown-k8s-utils: + pushd kubernetes/terraform/environments/$(ENV) && \ + terraform destroy + +.PHONY: apply apply-remote-state apply-secrets apply-env apply-k8s-utils teardown-k8s-utils teardown-env teardown-secrets teardown-remote-state diff --git a/templates/README.md b/templates/README.md new file mode 100644 index 0000000..746cc95 --- /dev/null +++ b/templates/README.md @@ -0,0 +1,38 @@ +# Infrastructure + +**Prerequisites** + - Terraform installed + - Kubectl installed + - Wget installed + - A valid AWS account + - [Set up the AWS CLI](https://docs.aws.amazon.com/polly/latest/dg/setup-aws-cli.html) + - [A domain registered with Route53](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/domain-register.html) + - Note: if you want to use different domain per environment (staging/poduction), you need to have multiple hosted zones. The available zones in Route53 can be found by running this command. `aws route53 list-hosted-zones` + +### Using the Kubernetes Cluster + +Before using the cluster the first time you'll need to set up your local `kubectl` context: +```shell +make update-k8s-conf +``` + +Then you should be able to run commands normally: +```shell +kubectl get pods -A +``` + + +### Apply Configuration +To init and apply the terraform configs, simply run the `make` and specify the +environment. The default environment is `staging` +```shell +$ make ENV= +``` + + +### Set up an application +Configure your k8s context + +```shell +$ aws eks update-kubeconfig --name --region us-east-1 +``` diff --git a/docs/architecture-overview.drawio b/templates/docs/architecture-overview.drawio similarity index 100% rename from docs/architecture-overview.drawio rename to templates/docs/architecture-overview.drawio diff --git a/docs/architecture-overview.svg b/templates/docs/architecture-overview.svg similarity index 100% rename from docs/architecture-overview.svg rename to templates/docs/architecture-overview.svg diff --git a/docs/resources.md b/templates/docs/resources.md similarity index 100% rename from docs/resources.md rename to templates/docs/resources.md diff --git a/kubernetes/terraform/environments/development/main.tf b/templates/kubernetes/terraform/environments/development/main.tf similarity index 100% rename from kubernetes/terraform/environments/development/main.tf rename to templates/kubernetes/terraform/environments/development/main.tf diff --git a/kubernetes/terraform/environments/production/main.tf b/templates/kubernetes/terraform/environments/production/main.tf similarity index 100% rename from kubernetes/terraform/environments/production/main.tf rename to templates/kubernetes/terraform/environments/production/main.tf diff --git a/kubernetes/terraform/environments/staging/main.tf b/templates/kubernetes/terraform/environments/staging/main.tf similarity index 100% rename from kubernetes/terraform/environments/staging/main.tf rename to templates/kubernetes/terraform/environments/staging/main.tf diff --git a/kubernetes/terraform/modules/kubernetes/README.md b/templates/kubernetes/terraform/modules/kubernetes/README.md similarity index 100% rename from kubernetes/terraform/modules/kubernetes/README.md rename to templates/kubernetes/terraform/modules/kubernetes/README.md diff --git a/kubernetes/terraform/modules/kubernetes/cert_manager.tf b/templates/kubernetes/terraform/modules/kubernetes/cert_manager.tf similarity index 100% rename from kubernetes/terraform/modules/kubernetes/cert_manager.tf rename to templates/kubernetes/terraform/modules/kubernetes/cert_manager.tf diff --git a/kubernetes/terraform/modules/kubernetes/cluster_autoscaler.tf b/templates/kubernetes/terraform/modules/kubernetes/cluster_autoscaler.tf similarity index 100% rename from kubernetes/terraform/modules/kubernetes/cluster_autoscaler.tf rename to templates/kubernetes/terraform/modules/kubernetes/cluster_autoscaler.tf diff --git a/kubernetes/terraform/modules/kubernetes/external_dns.tf b/templates/kubernetes/terraform/modules/kubernetes/external_dns.tf similarity index 100% rename from kubernetes/terraform/modules/kubernetes/external_dns.tf rename to templates/kubernetes/terraform/modules/kubernetes/external_dns.tf diff --git a/kubernetes/terraform/modules/kubernetes/files/cert-manager.crds.yaml b/templates/kubernetes/terraform/modules/kubernetes/files/cert-manager.crds.yaml similarity index 100% rename from kubernetes/terraform/modules/kubernetes/files/cert-manager.crds.yaml rename to templates/kubernetes/terraform/modules/kubernetes/files/cert-manager.crds.yaml diff --git a/kubernetes/terraform/modules/kubernetes/files/cert_manager_issuer.yaml.tpl b/templates/kubernetes/terraform/modules/kubernetes/files/cert_manager_issuer.yaml.tpl similarity index 100% rename from kubernetes/terraform/modules/kubernetes/files/cert_manager_issuer.yaml.tpl rename to templates/kubernetes/terraform/modules/kubernetes/files/cert_manager_issuer.yaml.tpl diff --git a/kubernetes/terraform/modules/kubernetes/ingress/README.md b/templates/kubernetes/terraform/modules/kubernetes/ingress/README.md similarity index 100% rename from kubernetes/terraform/modules/kubernetes/ingress/README.md rename to templates/kubernetes/terraform/modules/kubernetes/ingress/README.md diff --git a/kubernetes/terraform/modules/kubernetes/ingress/main.tf b/templates/kubernetes/terraform/modules/kubernetes/ingress/main.tf similarity index 100% rename from kubernetes/terraform/modules/kubernetes/ingress/main.tf rename to templates/kubernetes/terraform/modules/kubernetes/ingress/main.tf diff --git a/kubernetes/terraform/modules/kubernetes/ingress/variables.tf b/templates/kubernetes/terraform/modules/kubernetes/ingress/variables.tf similarity index 100% rename from kubernetes/terraform/modules/kubernetes/ingress/variables.tf rename to templates/kubernetes/terraform/modules/kubernetes/ingress/variables.tf diff --git a/kubernetes/terraform/modules/kubernetes/kubernetes_dashboard.tf b/templates/kubernetes/terraform/modules/kubernetes/kubernetes_dashboard.tf similarity index 100% rename from kubernetes/terraform/modules/kubernetes/kubernetes_dashboard.tf rename to templates/kubernetes/terraform/modules/kubernetes/kubernetes_dashboard.tf diff --git a/kubernetes/terraform/modules/kubernetes/main.tf b/templates/kubernetes/terraform/modules/kubernetes/main.tf similarity index 100% rename from kubernetes/terraform/modules/kubernetes/main.tf rename to templates/kubernetes/terraform/modules/kubernetes/main.tf diff --git a/kubernetes/terraform/modules/kubernetes/metrics_server.tf b/templates/kubernetes/terraform/modules/kubernetes/metrics_server.tf similarity index 100% rename from kubernetes/terraform/modules/kubernetes/metrics_server.tf rename to templates/kubernetes/terraform/modules/kubernetes/metrics_server.tf diff --git a/kubernetes/terraform/modules/kubernetes/monitoring/cloudwatch_agent.tf b/templates/kubernetes/terraform/modules/kubernetes/monitoring/cloudwatch_agent.tf similarity index 100% rename from kubernetes/terraform/modules/kubernetes/monitoring/cloudwatch_agent.tf rename to templates/kubernetes/terraform/modules/kubernetes/monitoring/cloudwatch_agent.tf diff --git a/kubernetes/terraform/modules/kubernetes/monitoring/docs/test-logging-app.yaml b/templates/kubernetes/terraform/modules/kubernetes/monitoring/docs/test-logging-app.yaml similarity index 100% rename from kubernetes/terraform/modules/kubernetes/monitoring/docs/test-logging-app.yaml rename to templates/kubernetes/terraform/modules/kubernetes/monitoring/docs/test-logging-app.yaml diff --git a/kubernetes/terraform/modules/kubernetes/monitoring/files/containers.conf b/templates/kubernetes/terraform/modules/kubernetes/monitoring/files/containers.conf similarity index 100% rename from kubernetes/terraform/modules/kubernetes/monitoring/files/containers.conf rename to templates/kubernetes/terraform/modules/kubernetes/monitoring/files/containers.conf diff --git a/kubernetes/terraform/modules/kubernetes/monitoring/files/cwagentconfig.json.tpl b/templates/kubernetes/terraform/modules/kubernetes/monitoring/files/cwagentconfig.json.tpl similarity index 100% rename from kubernetes/terraform/modules/kubernetes/monitoring/files/cwagentconfig.json.tpl rename to templates/kubernetes/terraform/modules/kubernetes/monitoring/files/cwagentconfig.json.tpl diff --git a/kubernetes/terraform/modules/kubernetes/monitoring/files/fluent.conf b/templates/kubernetes/terraform/modules/kubernetes/monitoring/files/fluent.conf similarity index 100% rename from kubernetes/terraform/modules/kubernetes/monitoring/files/fluent.conf rename to templates/kubernetes/terraform/modules/kubernetes/monitoring/files/fluent.conf diff --git a/kubernetes/terraform/modules/kubernetes/monitoring/files/host.conf b/templates/kubernetes/terraform/modules/kubernetes/monitoring/files/host.conf similarity index 100% rename from kubernetes/terraform/modules/kubernetes/monitoring/files/host.conf rename to templates/kubernetes/terraform/modules/kubernetes/monitoring/files/host.conf diff --git a/kubernetes/terraform/modules/kubernetes/monitoring/files/systemd.conf b/templates/kubernetes/terraform/modules/kubernetes/monitoring/files/systemd.conf similarity index 100% rename from kubernetes/terraform/modules/kubernetes/monitoring/files/systemd.conf rename to templates/kubernetes/terraform/modules/kubernetes/monitoring/files/systemd.conf diff --git a/kubernetes/terraform/modules/kubernetes/monitoring/fluentd.tf b/templates/kubernetes/terraform/modules/kubernetes/monitoring/fluentd.tf similarity index 100% rename from kubernetes/terraform/modules/kubernetes/monitoring/fluentd.tf rename to templates/kubernetes/terraform/modules/kubernetes/monitoring/fluentd.tf diff --git a/kubernetes/terraform/modules/kubernetes/monitoring/main.tf b/templates/kubernetes/terraform/modules/kubernetes/monitoring/main.tf similarity index 100% rename from kubernetes/terraform/modules/kubernetes/monitoring/main.tf rename to templates/kubernetes/terraform/modules/kubernetes/monitoring/main.tf diff --git a/kubernetes/terraform/modules/kubernetes/monitoring/variables.tf b/templates/kubernetes/terraform/modules/kubernetes/monitoring/variables.tf similarity index 100% rename from kubernetes/terraform/modules/kubernetes/monitoring/variables.tf rename to templates/kubernetes/terraform/modules/kubernetes/monitoring/variables.tf diff --git a/kubernetes/terraform/modules/kubernetes/provider.tf b/templates/kubernetes/terraform/modules/kubernetes/provider.tf similarity index 100% rename from kubernetes/terraform/modules/kubernetes/provider.tf rename to templates/kubernetes/terraform/modules/kubernetes/provider.tf diff --git a/kubernetes/terraform/modules/kubernetes/variables.tf b/templates/kubernetes/terraform/modules/kubernetes/variables.tf similarity index 100% rename from kubernetes/terraform/modules/kubernetes/variables.tf rename to templates/kubernetes/terraform/modules/kubernetes/variables.tf diff --git a/terraform/README.md b/templates/terraform/README.md similarity index 100% rename from terraform/README.md rename to templates/terraform/README.md diff --git a/terraform/bootstrap/remote-state/main.tf b/templates/terraform/bootstrap/remote-state/main.tf similarity index 100% rename from terraform/bootstrap/remote-state/main.tf rename to templates/terraform/bootstrap/remote-state/main.tf diff --git a/terraform/bootstrap/secrets/.gitignore b/templates/terraform/bootstrap/secrets/.gitignore similarity index 100% rename from terraform/bootstrap/secrets/.gitignore rename to templates/terraform/bootstrap/secrets/.gitignore diff --git a/terraform/bootstrap/secrets/main.tf b/templates/terraform/bootstrap/secrets/main.tf similarity index 100% rename from terraform/bootstrap/secrets/main.tf rename to templates/terraform/bootstrap/secrets/main.tf diff --git a/terraform/environments/production/main.tf b/templates/terraform/environments/production/main.tf similarity index 100% rename from terraform/environments/production/main.tf rename to templates/terraform/environments/production/main.tf diff --git a/terraform/environments/staging/main.tf b/templates/terraform/environments/staging/main.tf similarity index 100% rename from terraform/environments/staging/main.tf rename to templates/terraform/environments/staging/main.tf diff --git a/terraform/modules/certificate/main.tf b/templates/terraform/modules/certificate/main.tf similarity index 100% rename from terraform/modules/certificate/main.tf rename to templates/terraform/modules/certificate/main.tf diff --git a/terraform/modules/certificate/outputs.tf b/templates/terraform/modules/certificate/outputs.tf similarity index 100% rename from terraform/modules/certificate/outputs.tf rename to templates/terraform/modules/certificate/outputs.tf diff --git a/terraform/modules/certificate/variables.tf b/templates/terraform/modules/certificate/variables.tf similarity index 100% rename from terraform/modules/certificate/variables.tf rename to templates/terraform/modules/certificate/variables.tf diff --git a/terraform/modules/certificate/versions.tf b/templates/terraform/modules/certificate/versions.tf similarity index 100% rename from terraform/modules/certificate/versions.tf rename to templates/terraform/modules/certificate/versions.tf diff --git a/terraform/modules/cognito/main.tf b/templates/terraform/modules/cognito/main.tf similarity index 100% rename from terraform/modules/cognito/main.tf rename to templates/terraform/modules/cognito/main.tf diff --git a/terraform/modules/cognito/variables.tf b/templates/terraform/modules/cognito/variables.tf similarity index 100% rename from terraform/modules/cognito/variables.tf rename to templates/terraform/modules/cognito/variables.tf diff --git a/terraform/modules/database/main.tf b/templates/terraform/modules/database/main.tf similarity index 100% rename from terraform/modules/database/main.tf rename to templates/terraform/modules/database/main.tf diff --git a/terraform/modules/database/variables.tf b/templates/terraform/modules/database/variables.tf similarity index 100% rename from terraform/modules/database/variables.tf rename to templates/terraform/modules/database/variables.tf diff --git a/terraform/modules/database/versions.tf b/templates/terraform/modules/database/versions.tf similarity index 100% rename from terraform/modules/database/versions.tf rename to templates/terraform/modules/database/versions.tf diff --git a/terraform/modules/ecr/main.tf b/templates/terraform/modules/ecr/main.tf similarity index 100% rename from terraform/modules/ecr/main.tf rename to templates/terraform/modules/ecr/main.tf diff --git a/terraform/modules/ecr/variables.tf b/templates/terraform/modules/ecr/variables.tf similarity index 100% rename from terraform/modules/ecr/variables.tf rename to templates/terraform/modules/ecr/variables.tf diff --git a/terraform/modules/ecr/versions.tf b/templates/terraform/modules/ecr/versions.tf similarity index 100% rename from terraform/modules/ecr/versions.tf rename to templates/terraform/modules/ecr/versions.tf diff --git a/terraform/modules/eks/main.tf b/templates/terraform/modules/eks/main.tf similarity index 100% rename from terraform/modules/eks/main.tf rename to templates/terraform/modules/eks/main.tf diff --git a/terraform/modules/eks/outputs.tf b/templates/terraform/modules/eks/outputs.tf similarity index 100% rename from terraform/modules/eks/outputs.tf rename to templates/terraform/modules/eks/outputs.tf diff --git a/terraform/modules/eks/variables.tf b/templates/terraform/modules/eks/variables.tf similarity index 100% rename from terraform/modules/eks/variables.tf rename to templates/terraform/modules/eks/variables.tf diff --git a/terraform/modules/eks/versions.tf b/templates/terraform/modules/eks/versions.tf similarity index 100% rename from terraform/modules/eks/versions.tf rename to templates/terraform/modules/eks/versions.tf diff --git a/terraform/modules/environment/iam.tf b/templates/terraform/modules/environment/iam.tf similarity index 100% rename from terraform/modules/environment/iam.tf rename to templates/terraform/modules/environment/iam.tf diff --git a/terraform/modules/environment/main.tf b/templates/terraform/modules/environment/main.tf similarity index 100% rename from terraform/modules/environment/main.tf rename to templates/terraform/modules/environment/main.tf diff --git a/terraform/modules/environment/provider.tf b/templates/terraform/modules/environment/provider.tf similarity index 100% rename from terraform/modules/environment/provider.tf rename to templates/terraform/modules/environment/provider.tf diff --git a/terraform/modules/environment/variables.tf b/templates/terraform/modules/environment/variables.tf similarity index 100% rename from terraform/modules/environment/variables.tf rename to templates/terraform/modules/environment/variables.tf diff --git a/terraform/modules/environment/versions.tf b/templates/terraform/modules/environment/versions.tf similarity index 100% rename from terraform/modules/environment/versions.tf rename to templates/terraform/modules/environment/versions.tf diff --git a/terraform/modules/s3_hosting/main.tf b/templates/terraform/modules/s3_hosting/main.tf similarity index 100% rename from terraform/modules/s3_hosting/main.tf rename to templates/terraform/modules/s3_hosting/main.tf diff --git a/terraform/modules/s3_hosting/outputs.tf b/templates/terraform/modules/s3_hosting/outputs.tf similarity index 100% rename from terraform/modules/s3_hosting/outputs.tf rename to templates/terraform/modules/s3_hosting/outputs.tf diff --git a/terraform/modules/s3_hosting/variables.tf b/templates/terraform/modules/s3_hosting/variables.tf similarity index 100% rename from terraform/modules/s3_hosting/variables.tf rename to templates/terraform/modules/s3_hosting/variables.tf diff --git a/terraform/modules/s3_hosting/versions.tf b/templates/terraform/modules/s3_hosting/versions.tf similarity index 100% rename from terraform/modules/s3_hosting/versions.tf rename to templates/terraform/modules/s3_hosting/versions.tf diff --git a/terraform/modules/secret/main.tf b/templates/terraform/modules/secret/main.tf similarity index 100% rename from terraform/modules/secret/main.tf rename to templates/terraform/modules/secret/main.tf diff --git a/terraform/modules/secret/output.tf b/templates/terraform/modules/secret/output.tf similarity index 100% rename from terraform/modules/secret/output.tf rename to templates/terraform/modules/secret/output.tf diff --git a/terraform/modules/secret/variables.tf b/templates/terraform/modules/secret/variables.tf similarity index 100% rename from terraform/modules/secret/variables.tf rename to templates/terraform/modules/secret/variables.tf diff --git a/terraform/modules/secret/versions.tf b/templates/terraform/modules/secret/versions.tf similarity index 100% rename from terraform/modules/secret/versions.tf rename to templates/terraform/modules/secret/versions.tf diff --git a/terraform/modules/vpc/main.tf b/templates/terraform/modules/vpc/main.tf similarity index 100% rename from terraform/modules/vpc/main.tf rename to templates/terraform/modules/vpc/main.tf diff --git a/terraform/modules/vpc/outputs.tf b/templates/terraform/modules/vpc/outputs.tf similarity index 100% rename from terraform/modules/vpc/outputs.tf rename to templates/terraform/modules/vpc/outputs.tf diff --git a/terraform/modules/vpc/variables.tf b/templates/terraform/modules/vpc/variables.tf similarity index 100% rename from terraform/modules/vpc/variables.tf rename to templates/terraform/modules/vpc/variables.tf diff --git a/terraform/modules/vpc/versions.tf b/templates/terraform/modules/vpc/versions.tf similarity index 100% rename from terraform/modules/vpc/versions.tf rename to templates/terraform/modules/vpc/versions.tf diff --git a/zero-module.yml b/zero-module.yml new file mode 100644 index 0000000..acf3e44 --- /dev/null +++ b/zero-module.yml @@ -0,0 +1,43 @@ +name: aws-eks-stack +description: 'zero module for a basic AWS kubernetes stack on EKS' +author: 'Commit' + +template: + strictMode: true + delimiters: + - '<%' + - '%>' + inputDir: 'templates' + outputDir: 'infrastructure' + +requiredCredentials: + - aws + - github + +parameters: + - field: region + label: Select AWS Region + options: + - "us-west-1" + - "us-west-2" + - "us-east-1" + - "us-east-2" + - field: productionHostRoot + label: Production Root Host Name (e.g. mydomain.com) - this must be the root of the chosen domain, not a subdomain. + - field: productionFrontendHost + label: Production Frontend Host Name (e.g. app.mydomain.com) + - field: productionBackendHost + label: Production Backend Host Name (e.g. api.mydomain.com) + - field: stagingHostRoot + label: Staging Root Host Name (e.g. mydomain-staging.com) - this must be the root of the chosen domain, not a subdomain. + - field: stagingFrontendHost + label: Staging Frontend Host Name (e.g. app.mydomain-staging.com) + - field: stagingBackendHost + label: Staging Backend Host Name (e.g. api.mydomain-staging.com) + - field: accountId + label: AWS Account ID + execute: aws sts get-caller-identity --query "Account" | tr -d '"' + - field: eksWorkerAMI + label: EKS Worker EC2 AMI ID + execute: aws ssm get-parameters --names /aws/service/eks/optimized-ami/1.15/amazon-linux-2/recommended/image_id --region $region --query "Parameters[0].Value" | tr -d '"' + From 12e7a9ff1134462278b6161ebea26b771c190d5e Mon Sep 17 00:00:00 2001 From: Bill Monkman Date: Mon, 25 May 2020 16:26:57 -0700 Subject: [PATCH 2/2] Moved gitignore into template --- .gitignore => templates/.gitignore | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) rename .gitignore => templates/.gitignore (99%) diff --git a/.gitignore b/templates/.gitignore similarity index 99% rename from .gitignore rename to templates/.gitignore index cccb117..c1c24f9 100644 --- a/.gitignore +++ b/templates/.gitignore @@ -100,4 +100,4 @@ $RECYCLE.BIN/ # Windows shortcuts *.lnk -# End of https://www.gitignore.io/api/linux,macos,windows,terraform \ No newline at end of file +# End of https://www.gitignore.io/api/linux,macos,windows,terraform