diff --git a/README.md b/README.md index fbf24bc..0b37fab 100644 --- a/README.md +++ b/README.md @@ -17,6 +17,31 @@ This solution utilises the following services: - S3 + Cloudfront (frontend) - SSM Parameter Store (secrets management) +#### Installation + +```hcl +module "moot" { + source = "github.com/seanturner026/moot.git?ref=v1.0.0" + + name = "moot" + admin_user_email = var.admin_user_email + enable_delete_admin_user = false + github_token = var.github_token + gitlab_token = var.gitlab_token + slack_webhook_url = var.slack_webhook_url + fqdn_alias = "moot.link" + hosted_zone_name = "moot.link" + enable_api_gateway_access_logs = true + tags = var.tags +} +``` + +#### Workflows + +- Standard Deploy: Merges the HEAD branch into the BASE (e.g. main) branch, creates release based on BASE branch +- Hotfix Deploy: Creates release based on the BASE branch + + #### Repositories View ![alt text](https://github.com/seanturner026/moot/blob/main/assets/repositories.png?raw=true) @@ -27,3 +52,33 @@ This solution utilises the following services: #### Users View ![alt text](https://github.com/seanturner026/moot/blob/main/assets/users.png?raw=true) + +## Terraform Providers + +| Name | Version | +|------|---------| +| archive | n/a | +| aws | n/a | +| external | n/a | +| null | n/a | + +## Terraform Inputs + +| Name | Description | Type | Default | Required | +|------|-------------|------|---------|:--------:| +| admin\_user\_email | Controls the creation of an admin user that is required to initially gain access to the
dashboard.

If access to the dashboard is completely lost, do the following
• `var.enable_delete_admin_user = true`
• `terraform apply`
• `var.enable_delete_admin_user = false`
• `terraform apply`

If the initial admin user should no longer be able to access the dashboard, revoke access by
setting `var.enable_delete_admin_user = true` and running `terraform apply` | `string` | `""` | no | +| enable\_api\_gateway\_access\_logs | Enables API Gateway access logging to cloudwatch for the default stage. | `bool` | `false` | no | +| enable\_delete\_admin\_user | Destroys the admin user.

Set this value to true to destroy the user, and to false to recreate the user. | `bool` | `false` | no | +| fqdn\_alias | ALIAS for the Cloudfront distribution, S3, Cognito and API Gateway. Must be in the form of
`example.com`. | `string` | `""` | no | +| github\_token | Token for Github. | `string` | `""` | no | +| gitlab\_token | Token for Gitlab. | `string` | `""` | no | +| hosted\_zone\_name | Name of AWS Route53 Hosted Zone for DNS. | `string` | `""` | no | +| name | Name to be applied to all resources. | `string` | `"release_dashboard"` | no | +| slack\_webhook\_url | URL to send slack message payloads to. | `string` | `""` | no | +| tags | Map of tags to be applied to resources. | `map(string)` | `{}` | no | + +## Terraform Outputs + +| Name | Description | +|------|-------------| +| cloudfront\_domain\_name | FQDN of Cloudfront Distribution that can be used for DNS. | diff --git a/deployments/terraform/data.tf b/data.tf similarity index 100% rename from deployments/terraform/data.tf rename to data.tf diff --git a/deployments/terraform/.terraform.lock.hcl b/deployments/terraform/.terraform.lock.hcl deleted file mode 100644 index 80c6ea3..0000000 --- a/deployments/terraform/.terraform.lock.hcl +++ /dev/null @@ -1,75 +0,0 @@ -# This file is maintained automatically by "terraform init". -# Manual edits may be lost in future updates. - -provider "registry.terraform.io/hashicorp/archive" { - version = "2.2.0" - hashes = [ - "h1:2K5LQkuWRS2YN1/YoNaHn9MAzjuTX8Gaqy6i8Mbfv8Y=", - "zh:06bd875932288f235c16e2237142b493c2c2b6aba0e82e8c85068332a8d2a29e", - "zh:0c681b481372afcaefddacc7ccdf1d3bb3a0c0d4678a526bc8b02d0c331479bc", - "zh:100fc5b3fc01ea463533d7bbfb01cb7113947a969a4ec12e27f5b2be49884d6c", - "zh:55c0d7ddddbd0a46d57c51fcfa9b91f14eed081a45101dbfc7fd9d2278aa1403", - "zh:73a5dd68379119167934c48afa1101b09abad2deb436cd5c446733e705869d6b", - "zh:841fc4ac6dc3479981330974d44ad2341deada8a5ff9e3b1b4510702dfbdbed9", - "zh:91be62c9b41edb137f7f835491183628d484e9d6efa82fcb75cfa538c92791c5", - "zh:acd5f442bd88d67eb948b18dc2ed421c6c3faee62d3a12200e442bfff0aa7d8b", - "zh:ad5720da5524641ad718a565694821be5f61f68f1c3c5d2cfa24426b8e774bef", - "zh:e63f12ea938520b3f83634fc29da28d92eed5cfbc5cc8ca08281a6a9c36cca65", - "zh:f6542918faa115df46474a36aabb4c3899650bea036b5f8a5e296be6f8f25767", - ] -} - -provider "registry.terraform.io/hashicorp/aws" { - version = "3.42.0" - constraints = ">= 3.37.0" - hashes = [ - "h1:C6/yDp6BhuDFx0qdkBuJj/OWUJpAoraHTJaU6ac38Rw=", - "zh:126c856a6eedddd8571f161a826a407ba5655a37a6241393560a96b8c4beca1a", - "zh:1a4868e6ac734b5fc2e79a4a889d176286b66664aad709435aa6acee5871d5b0", - "zh:40fed7637ab8ddeb93bef06aded35d970f0628025b97459ae805463e8aa0a58a", - "zh:68def3c0a5a1aac1db6372c51daef858b707f03052626d3427ac24cba6f2014d", - "zh:6db7ec9c8d1803a0b6f40a664aa892e0f8894562de83061fa7ac1bc51ff5e7e5", - "zh:7058abaad595930b3f97dc04e45c112b2dbf37d098372a849081f7081da2fb52", - "zh:8c25adb15a19da301c478aa1f4a4d8647cabdf8e5dae8331d4490f80ea718c26", - "zh:8e129b847401e39fcbc54817726dab877f36b7f00ff5ed76f7b43470abe99ff9", - "zh:d268bb267a2d6b39df7ddee8efa7c1ef7a15cf335dfa5f2e64c9dae9b623a1b8", - "zh:d6eeb3614a0ab50f8e9ab5666ae5754ea668ce327310e5b21b7f04a18d7611a8", - "zh:f5d3c58055dff6e38562b75d3edc908cb2f1e45c6914f6b00f4773359ce49324", - ] -} - -provider "registry.terraform.io/hashicorp/external" { - version = "2.1.0" - hashes = [ - "h1:LTl5CGW8wiIEe16AC4MtXN/95xWWNDbap70zJsBTk0w=", - "zh:0d83ffb72fbd08986378204a7373d8c43b127049096eaf2765bfdd6b00ad9853", - "zh:7577d6edc67b1e8c2cf62fe6501192df1231d74125d90e51d570d586d95269c5", - "zh:9c669ded5d5affa4b2544952c4b6588dfed55260147d24ced02dca3a2829f328", - "zh:a404d46f2831f90633947ab5d57e19dbfe35b3704104ba6ec80bcf50b058acfd", - "zh:ae1caea1c936d459ceadf287bb5c5bd67b5e2a7819df6f5c4114b7305df7f822", - "zh:afb4f805477694a4b9dde86b268d2c0821711c8aab1c6088f5f992228c4c06fb", - "zh:b993b4a1de8a462643e78f4786789e44ce5064b332fee1cb0d6250ed085561b8", - "zh:c84b2c13fa3ea2c0aa7291243006d560ce480a5591294b9001ce3742fc9c5791", - "zh:c8966f69b7eccccb771704fd5335923692eccc9e0e90cb95d14538fe2e92a3b8", - "zh:d5fe68850d449b811e633a300b114d0617df6d450305e8251643b4d143dc855b", - "zh:ddebfd1e674ba336df09b1f27bbaa0e036c25b7a7087dc8081443f6e5954028b", - ] -} - -provider "registry.terraform.io/hashicorp/null" { - version = "3.1.0" - hashes = [ - "h1:xhbHC6in3nQryvTQBWKxebi3inG5OCgHgc4fRxL0ymc=", - "zh:02a1675fd8de126a00460942aaae242e65ca3380b5bb192e8773ef3da9073fd2", - "zh:53e30545ff8926a8e30ad30648991ca8b93b6fa496272cd23b26763c8ee84515", - "zh:5f9200bf708913621d0f6514179d89700e9aa3097c77dac730e8ba6e5901d521", - "zh:9ebf4d9704faba06b3ec7242c773c0fbfe12d62db7d00356d4f55385fc69bfb2", - "zh:a6576c81adc70326e4e1c999c04ad9ca37113a6e925aefab4765e5a5198efa7e", - "zh:a8a42d13346347aff6c63a37cda9b2c6aa5cc384a55b2fe6d6adfa390e609c53", - "zh:c797744d08a5307d50210e0454f91ca4d1c7621c68740441cf4579390452321d", - "zh:cecb6a304046df34c11229f20a80b24b1603960b794d68361a67c5efe58e62b8", - "zh:e1371aa1e502000d9974cfaff5be4cfa02f47b17400005a16f14d2ef30dc2a70", - "zh:fc39cc1fe71234a0b0369d5c5c7f876c71b956d23d7d6f518289737a001ba69b", - "zh:fea4227271ebf7d9e2b61b89ce2328c7262acd9fd190e1fd6d15a591abfa848e", - ] -} diff --git a/deployments/terraform/README.md b/deployments/terraform/README.md deleted file mode 100644 index 036d6f0..0000000 --- a/deployments/terraform/README.md +++ /dev/null @@ -1,28 +0,0 @@ -## Requirements - -No requirements. - -## Providers - -| Name | Version | -|------|---------| -| archive | n/a | -| aws | n/a | -| null | n/a | -| random | n/a | - -## Inputs - -| Name | Description | Type | Default | Required | -|------|-------------|------|---------|:--------:| -| admin\_user\_email | Email address for dashboard admin | `string` | n/a | yes | -| dev\_cloudfront\_dns | n/a | `string` | n/a | yes | -| enable\_admin\_user\_creation | Controls the creation of an admin user that is required to initially gain access to the
dashboard.

If access to the dashboard is completely lost, do the following
• `var.enable_admin_user_creation = false`
• terraform apply
• `var.enable_admin_user_creation = true`
• terraform apply

If the initial admin user should no longer be able to access the dashboard, revoke access by
setting `var.enable_admin_user_creation = false` and running `terraform apply` | `bool` | `true` | no | -| github\_token | Token for Github. | `string` | `""` | no | -| gitlab\_token | Token for Gitlab. | `string` | `""` | no | -| slack\_webhook\_url | URL to send slack message payloads to. | `string` | `""` | no | -| tags | Map of tags to be applied to resources. | `map(string)` | n/a | yes | - -## Outputs - -No output. diff --git a/deployments/terraform/locals.tf b/locals.tf similarity index 100% rename from deployments/terraform/locals.tf rename to locals.tf diff --git a/deployments/terraform/modules.tf b/modules.tf similarity index 100% rename from deployments/terraform/modules.tf rename to modules.tf diff --git a/deployments/terraform/outputs.tf b/outputs.tf similarity index 100% rename from deployments/terraform/outputs.tf rename to outputs.tf diff --git a/deployments/terraform/r_acm.tf b/r_acm.tf similarity index 100% rename from deployments/terraform/r_acm.tf rename to r_acm.tf diff --git a/deployments/terraform/r_api_gateway.tf b/r_api_gateway.tf similarity index 100% rename from deployments/terraform/r_api_gateway.tf rename to r_api_gateway.tf diff --git a/deployments/terraform/r_cloudwatch.tf b/r_cloudwatch.tf similarity index 100% rename from deployments/terraform/r_cloudwatch.tf rename to r_cloudwatch.tf diff --git a/deployments/terraform/r_cognito.tf b/r_cognito.tf similarity index 100% rename from deployments/terraform/r_cognito.tf rename to r_cognito.tf diff --git a/deployments/terraform/r_dynamodb.tf b/r_dynamodb.tf similarity index 100% rename from deployments/terraform/r_dynamodb.tf rename to r_dynamodb.tf diff --git a/deployments/terraform/r_iam.tf b/r_iam.tf similarity index 100% rename from deployments/terraform/r_iam.tf rename to r_iam.tf diff --git a/deployments/terraform/r_lambda.tf b/r_lambda.tf similarity index 100% rename from deployments/terraform/r_lambda.tf rename to r_lambda.tf diff --git a/deployments/terraform/r_null.tf b/r_null.tf similarity index 100% rename from deployments/terraform/r_null.tf rename to r_null.tf diff --git a/deployments/terraform/r_route53.tf b/r_route53.tf similarity index 100% rename from deployments/terraform/r_route53.tf rename to r_route53.tf diff --git a/deployments/terraform/r_s3.tf b/r_s3.tf similarity index 100% rename from deployments/terraform/r_s3.tf rename to r_s3.tf diff --git a/deployments/terraform/r_ssm.tf b/r_ssm.tf similarity index 100% rename from deployments/terraform/r_ssm.tf rename to r_ssm.tf diff --git a/deployments/terraform/assets/cognito.go b/terraform_assets/assets/cognito.go similarity index 100% rename from deployments/terraform/assets/cognito.go rename to terraform_assets/assets/cognito.go diff --git a/deployments/terraform/assets/cognito_invite_template.html b/terraform_assets/assets/cognito_invite_template.html similarity index 100% rename from deployments/terraform/assets/cognito_invite_template.html rename to terraform_assets/assets/cognito_invite_template.html diff --git a/deployments/terraform/assets/dynamodb_put_item_input.json b/terraform_assets/assets/dynamodb_put_item_input.json similarity index 100% rename from deployments/terraform/assets/dynamodb_put_item_input.json rename to terraform_assets/assets/dynamodb_put_item_input.json diff --git a/deployments/terraform/examples/complete/.terraform.lock.hcl b/terraform_examples/complete/.terraform.lock.hcl similarity index 100% rename from deployments/terraform/examples/complete/.terraform.lock.hcl rename to terraform_examples/complete/.terraform.lock.hcl diff --git a/deployments/terraform/examples/complete/main.tf b/terraform_examples/complete/main.tf similarity index 95% rename from deployments/terraform/examples/complete/main.tf rename to terraform_examples/complete/main.tf index a1bbe6d..c47bd52 100644 --- a/deployments/terraform/examples/complete/main.tf +++ b/terraform_examples/complete/main.tf @@ -1,4 +1,4 @@ -module "dashboard" { +module "moot" { source = "../../" name = "moot" diff --git a/deployments/terraform/examples/complete/provider.tf b/terraform_examples/complete/provider.tf similarity index 100% rename from deployments/terraform/examples/complete/provider.tf rename to terraform_examples/complete/provider.tf diff --git a/deployments/terraform/examples/complete/terraform.tfvars b/terraform_examples/complete/terraform.tfvars similarity index 100% rename from deployments/terraform/examples/complete/terraform.tfvars rename to terraform_examples/complete/terraform.tfvars diff --git a/deployments/terraform/examples/complete/variables.tf b/terraform_examples/complete/variables.tf similarity index 100% rename from deployments/terraform/examples/complete/variables.tf rename to terraform_examples/complete/variables.tf diff --git a/deployments/terraform/variables.tf b/variables.tf similarity index 100% rename from deployments/terraform/variables.tf rename to variables.tf