diff --git a/terraform-modules/acm/.terraform.docs.yml b/terraform-modules/acm/.terraform.docs.yml new file mode 100644 index 0000000..8aa84e9 --- /dev/null +++ b/terraform-modules/acm/.terraform.docs.yml @@ -0,0 +1,60 @@ +formatter: "markdown table" # this is required +version: "" + +header-from: main.tf +footer-from: "" + +recursive: + enabled: false + path: modules + +sections: + hide: [] + show: [] + +content: |- + # ACM + + Add description here + + {{ .Header }} + {{ .Modules }} + {{ .Resources }} + {{ .Inputs }} + {{ .Outputs }} + {{ .Providers }} + {{ .Requirements }} + {{ .Footer }} + To automatically update this documentation, install terraform-docs on your local machine run the following: + cd + terraform-docs -c .terraform.docs.yml . +output: + file: README.md + mode: replace + template: |- + + {{ .Content }} + + +output-values: + enabled: false + from: "" + +sort: + enabled: true + by: name + +settings: + anchor: true + color: true + default: true + description: false + escape: true + hide-empty: true + html: true + indent: 2 + lockfile: true + read-comments: true + required: true + sensitive: true + type: true diff --git a/terraform-modules/acm/README.md b/terraform-modules/acm/README.md new file mode 100644 index 0000000..fbb7d6a --- /dev/null +++ b/terraform-modules/acm/README.md @@ -0,0 +1,34 @@ + +# ACM + +Add description here + + + +## Resources + +| Name | Type | +|------|------| +| [aws_acm_certificate.issued](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/data-sources/acm_certificate) | data source | +## Inputs + +| Name | Description | Type | Default | Required | +|------|-------------|------|---------|:--------:| +| [domain\_names](#input\_domain\_names) | The domains where the applications will be deployed | `list(string)` | n/a | yes | +| [tags](#input\_tags) | n/a | `map(any)` |
{
"terraform_managed": "true"
}
| no | +## Outputs + +| Name | Description | +|------|-------------| +| [acm\_certificate\_arns](#output\_acm\_certificate\_arns) | n/a | +## Providers + +| Name | Version | +|------|---------| +| [aws](#provider\_aws) | n/a | + + +To automatically update this documentation, install terraform-docs on your local machine run the following: + cd + terraform-docs -c .terraform.docs.yml . + \ No newline at end of file diff --git a/terraform-modules/applicationlb/.terraform.docs.yml b/terraform-modules/applicationlb/.terraform.docs.yml new file mode 100644 index 0000000..8a731ee --- /dev/null +++ b/terraform-modules/applicationlb/.terraform.docs.yml @@ -0,0 +1,60 @@ +formatter: "markdown table" # this is required +version: "" + +header-from: main.tf +footer-from: "" + +recursive: + enabled: false + path: modules + +sections: + hide: [] + show: [] + +content: |- + # Applicationlb + + Add description here. + + {{ .Header }} + {{ .Modules }} + {{ .Resources }} + {{ .Inputs }} + {{ .Outputs }} + {{ .Providers }} + {{ .Requirements }} + {{ .Footer }} + To automatically update this documentation, install terraform-docs on your local machine run the following: + cd + terraform-docs -c .terraform.docs.yml . +output: + file: README.md + mode: replace + template: |- + + {{ .Content }} + + +output-values: + enabled: false + from: "" + +sort: + enabled: true + by: name + +settings: + anchor: true + color: true + default: true + description: false + escape: true + hide-empty: true + html: true + indent: 2 + lockfile: true + read-comments: true + required: true + sensitive: true + type: true diff --git a/terraform-modules/applicationlb/README.md b/terraform-modules/applicationlb/README.md new file mode 100644 index 0000000..933ca0b --- /dev/null +++ b/terraform-modules/applicationlb/README.md @@ -0,0 +1,51 @@ + +# Applicationlb + +Add description here. + + + +## Resources + +| Name | Type | +|------|------| +| [aws_lb.alb](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/lb) | resource | +| [aws_lb_listener.http_redirect](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/lb_listener) | resource | +| [aws_lb_listener.ssl](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/lb_listener) | resource | +| [aws_lb_listener_certificate.example](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/lb_listener_certificate) | resource | +| [aws_security_group.alb](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/security_group) | resource | +## Inputs + +| Name | Description | Type | Default | Required | +|------|-------------|------|---------|:--------:| +| [acm\_certificate\_arns](#input\_acm\_certificate\_arns) | Certificates to use for HTTPS listener | `list(string)` | n/a | yes | +| [default\_alb\_url](#input\_default\_alb\_url) | Default URL to forward the user if there is no ALB route rules that match | `string` | n/a | yes | +| [environment](#input\_environment) | n/a | `string` | n/a | yes | +| [public\_subnet\_ids](#input\_public\_subnet\_ids) | Public Subnets for which the ALB will be associated with | `list(string)` | n/a | yes | +| [region](#input\_region) | n/a | `string` | n/a | yes | +| [resource\_name](#input\_resource\_name) | The overall name of the shared resources | `string` | n/a | yes | +| [tags](#input\_tags) | n/a | `map(any)` |
{
"terraform_managed": "true"
}
| no | +| [vpc\_id](#input\_vpc\_id) | VPC ID | `string` | n/a | yes | +## Outputs + +| Name | Description | +|------|-------------| +| [alb\_https\_listener\_arn](#output\_alb\_https\_listener\_arn) | n/a | +| [alb\_id](#output\_alb\_id) | n/a | +| [alb\_target\_group\_arn](#output\_alb\_target\_group\_arn) | n/a | +| [alb\_target\_group\_id](#output\_alb\_target\_group\_id) | n/a | +| [lb\_arn](#output\_lb\_arn) | n/a | +| [lb\_dns\_name](#output\_lb\_dns\_name) | n/a | +| [lb\_zone\_id](#output\_lb\_zone\_id) | n/a | +| [security\_group\_id](#output\_security\_group\_id) | n/a | +## Providers + +| Name | Version | +|------|---------| +| [aws](#provider\_aws) | n/a | + + +To automatically update this documentation, install terraform-docs on your local machine run the following: + cd + terraform-docs -c .terraform.docs.yml . + \ No newline at end of file diff --git a/terraform-modules/bastion/.terraform.docs.yml b/terraform-modules/bastion/.terraform.docs.yml new file mode 100644 index 0000000..5b816a3 --- /dev/null +++ b/terraform-modules/bastion/.terraform.docs.yml @@ -0,0 +1,60 @@ +formatter: "markdown table" # this is required +version: "" + +header-from: main.tf +footer-from: "" + +recursive: + enabled: false + path: modules + +sections: + hide: [] + show: [] + +content: |- + # Bastion + + Add description here. + + {{ .Header }} + {{ .Modules }} + {{ .Resources }} + {{ .Inputs }} + {{ .Outputs }} + {{ .Providers }} + {{ .Requirements }} + {{ .Footer }} + To automatically update this documentation, install terraform-docs on your local machine run the following: + cd + terraform-docs -c .terraform.docs.yml . +output: + file: README.md + mode: replace + template: |- + + {{ .Content }} + + +output-values: + enabled: false + from: "" + +sort: + enabled: true + by: name + +settings: + anchor: true + color: true + default: true + description: false + escape: true + hide-empty: true + html: true + indent: 2 + lockfile: true + read-comments: true + required: true + sensitive: true + type: true diff --git a/terraform-modules/bastion/README.md b/terraform-modules/bastion/README.md new file mode 100644 index 0000000..46dfa30 --- /dev/null +++ b/terraform-modules/bastion/README.md @@ -0,0 +1,55 @@ + +# Bastion + +Add description here. + + + +## Resources + +| Name | Type | +|------|------| +| [aws_autoscaling_group.bastion](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/autoscaling_group) | resource | +| [aws_iam_instance_profile.bastion_profile](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/iam_instance_profile) | resource | +| [aws_iam_policy.policy](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/iam_policy) | resource | +| [aws_iam_role.role](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/iam_role) | resource | +| [aws_iam_role_policy_attachment.bastion](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/iam_role_policy_attachment) | resource | +| [aws_launch_configuration.bastion](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/launch_configuration) | resource | +| [aws_security_group.bastion](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/security_group) | resource | +| [aws_security_group_rule.bastion_all_egress](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/security_group_rule) | resource | +| [aws_security_group_rule.ssh_ingress](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/security_group_rule) | resource | +| [aws_ami.ami](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/data-sources/ami) | data source | +## Inputs + +| Name | Description | Type | Default | Required | +|------|-------------|------|---------|:--------:| +| [additional\_user\_data\_script](#input\_additional\_user\_data\_script) | n/a | `string` | `""` | no | +| [bastion\_github\_file](#input\_bastion\_github\_file) | n/a | `map(string)` |
{
"github_branch": "main",
"github_filepath": "bastion_github_users",
"github_repo_name": "Infrastructure",
"github_repo_owner": "codeforsanjose"
}
| no | +| [bastion\_hostname](#input\_bastion\_hostname) | The hostname bastion, must be a subdomain of the domain\_name | `string` | n/a | yes | +| [bastion\_instance\_type](#input\_bastion\_instance\_type) | The ec2 instance type of the bastion server | `string` | `"t2.micro"` | no | +| [cron\_key\_update\_schedule](#input\_cron\_key\_update\_schedule) | The cron schedule that public keys are synced from the bastion s3 bucket to the server; default to once every hour | `string` | `"5,0,*,* * * * *"` | no | +| [enable\_hourly\_cron\_updates](#input\_enable\_hourly\_cron\_updates) | n/a | `string` | `"false"` | no | +| [environment](#input\_environment) | n/a | `string` | n/a | yes | +| [key\_name](#input\_key\_name) | SSH key to be added as the default AMI user | `string` | `""` | no | +| [public\_subnet\_ids](#input\_public\_subnet\_ids) | public subnet ids for where to place bastion | `list(string)` | n/a | yes | +| [resource\_name](#input\_resource\_name) | The overall name of the shared resources | `string` | n/a | yes | +| [ssh\_user](#input\_ssh\_user) | -------------------------- user\_data.sh Variables -------------------------- | `string` | `"ubuntu"` | no | +| [tags](#input\_tags) | n/a | `map(any)` |
{
"terraform_managed": "true"
}
| no | +| [vpc\_id](#input\_vpc\_id) | VPC ID | `any` | n/a | yes | +## Outputs + +| Name | Description | +|------|-------------| +| [bastion\_hostname](#output\_bastion\_hostname) | The URL to access the bastion server | +| [security\_group\_id](#output\_security\_group\_id) | the security group id of the bastion server. Add this id to other services that run within the vpc to which you want to access externally. | +## Providers + +| Name | Version | +|------|---------| +| [aws](#provider\_aws) | n/a | + + +To automatically update this documentation, install terraform-docs on your local machine run the following: + cd + terraform-docs -c .terraform.docs.yml . + \ No newline at end of file diff --git a/terraform-modules/cheap-secrets/.terraform.docs.yml b/terraform-modules/cheap-secrets/.terraform.docs.yml new file mode 100644 index 0000000..a1e56c8 --- /dev/null +++ b/terraform-modules/cheap-secrets/.terraform.docs.yml @@ -0,0 +1,60 @@ +formatter: "markdown table" # this is required +version: "" + +header-from: main.tf +footer-from: "" + +recursive: + enabled: false + path: modules + +sections: + hide: [] + show: [] + +content: |- + # Cheap-Secrets + + Add description. + + {{ .Header }} + {{ .Modules }} + {{ .Resources }} + {{ .Inputs }} + {{ .Outputs }} + {{ .Providers }} + {{ .Requirements }} + {{ .Footer }} + To automatically update this documentation, install terraform-docs on your local machine run the following: + cd + terraform-docs -c .terraform.docs.yml . +output: + file: README.md + mode: replace + template: |- + + {{ .Content }} + + +output-values: + enabled: false + from: "" + +sort: + enabled: true + by: name + +settings: + anchor: true + color: true + default: true + description: false + escape: true + hide-empty: true + html: true + indent: 2 + lockfile: true + read-comments: true + required: true + sensitive: true + type: true diff --git a/terraform-modules/cheap-secrets/README.md b/terraform-modules/cheap-secrets/README.md new file mode 100644 index 0000000..481293a --- /dev/null +++ b/terraform-modules/cheap-secrets/README.md @@ -0,0 +1,36 @@ + +# Cheap-Secrets + +Add description. + + + +## Resources + +| Name | Type | +|------|------| +| [aws_ssm_parameter.these](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/ssm_parameter) | resource | +| [aws_secretsmanager_random_password.them](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/data-sources/secretsmanager_random_password) | data source | +## Inputs + +| Name | Description | Type | Default | Required | +|------|-------------|------|---------|:--------:| +| [length](#input\_length) | n/a | `number` | `48` | no | +| [scope-name](#input\_scope-name) | n/a | `string` | n/a | yes | +| [secret-names](#input\_secret-names) | n/a | `list(string)` | n/a | yes | +## Outputs + +| Name | Description | +|------|-------------| +| [arn](#output\_arn) | n/a | +## Providers + +| Name | Version | +|------|---------| +| [aws](#provider\_aws) | n/a | + + +To automatically update this documentation, install terraform-docs on your local machine run the following: + cd + terraform-docs -c .terraform.docs.yml . + \ No newline at end of file diff --git a/terraform-modules/cicd_integration/.terraform.docs.yml b/terraform-modules/cicd_integration/.terraform.docs.yml new file mode 100644 index 0000000..fa71b36 --- /dev/null +++ b/terraform-modules/cicd_integration/.terraform.docs.yml @@ -0,0 +1,60 @@ +formatter: "markdown table" # this is required +version: "" + +header-from: main.tf +footer-from: "" + +recursive: + enabled: false + path: modules + +sections: + hide: [] + show: [] + +content: |- + # CICD_Integration + + Add description. + + {{ .Header }} + {{ .Modules }} + {{ .Resources }} + {{ .Inputs }} + {{ .Outputs }} + {{ .Providers }} + {{ .Requirements }} + {{ .Footer }} + To automatically update this documentation, install terraform-docs on your local machine run the following: + cd + terraform-docs -c .terraform.docs.yml . +output: + file: README.md + mode: replace + template: |- + + {{ .Content }} + + +output-values: + enabled: false + from: "" + +sort: + enabled: true + by: name + +settings: + anchor: true + color: true + default: true + description: false + escape: true + hide-empty: true + html: true + indent: 2 + lockfile: true + read-comments: true + required: true + sensitive: true + type: true diff --git a/terraform-modules/cicd_integration/README.md b/terraform-modules/cicd_integration/README.md new file mode 100644 index 0000000..6c6af1f --- /dev/null +++ b/terraform-modules/cicd_integration/README.md @@ -0,0 +1,39 @@ + +# CICD_Integration + +Add description. + + + +## Resources + +| Name | Type | +|------|------| +| [aws_iam_access_key.gha_keys](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/iam_access_key) | resource | +| [aws_iam_user.gha_user](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/iam_user) | resource | +| [aws_iam_user_policy.gha_policy](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/iam_user_policy) | resource | +| [aws_caller_identity.current](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/data-sources/caller_identity) | data source | +## Inputs + +| Name | Description | Type | Default | Required | +|------|-------------|------|---------|:--------:| +| [default\_ecs\_service\_role\_arn](#input\_default\_ecs\_service\_role\_arn) | AWS service linked role created for default all ecs services | `string` | n/a | yes | +| [execution\_role\_arn](#input\_execution\_role\_arn) | ECS task execution role with policy for accessing other AWS resources | `string` | n/a | yes | +| [tags](#input\_tags) | n/a | `map(any)` |
{
"terraform_managed": "true"
}
| no | +## Outputs + +| Name | Description | +|------|-------------| +| [access\_key\_id](#output\_access\_key\_id) | n/a | +| [secret\_access\_key\_id](#output\_secret\_access\_key\_id) | n/a | +## Providers + +| Name | Version | +|------|---------| +| [aws](#provider\_aws) | n/a | + + +To automatically update this documentation, install terraform-docs on your local machine run the following: + cd + terraform-docs -c .terraform.docs.yml . + \ No newline at end of file diff --git a/terraform-modules/database/.terraform.docs.yml b/terraform-modules/database/.terraform.docs.yml new file mode 100644 index 0000000..b26f42a --- /dev/null +++ b/terraform-modules/database/.terraform.docs.yml @@ -0,0 +1,60 @@ +formatter: "markdown table" # this is required +version: "" + +header-from: main.tf +footer-from: "" + +recursive: + enabled: false + path: modules + +sections: + hide: [] + show: [] + +content: |- + # Database + + Add description. + + {{ .Header }} + {{ .Modules }} + {{ .Resources }} + {{ .Inputs }} + {{ .Outputs }} + {{ .Providers }} + {{ .Requirements }} + {{ .Footer }} + To automatically update this documentation, install terraform-docs on your local machine run the following: + cd + terraform-docs -c .terraform.docs.yml . +output: + file: README.md + mode: replace + template: |- + + {{ .Content }} + + +output-values: + enabled: false + from: "" + +sort: + enabled: true + by: name + +settings: + anchor: true + color: true + default: true + description: false + escape: true + hide-empty: true + html: true + indent: 2 + lockfile: true + read-comments: true + required: true + sensitive: true + type: true diff --git a/terraform-modules/database/README.md b/terraform-modules/database/README.md new file mode 100644 index 0000000..9c3d561 --- /dev/null +++ b/terraform-modules/database/README.md @@ -0,0 +1,61 @@ + +# Database + +Add description. + + + +## Resources + +| Name | Type | +|------|------| +| [aws_ssm_parameter.rds_dbowner_password](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/ssm_parameter) | resource | +| [aws_ssm_parameter.rds_dbuser_password](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/ssm_parameter) | resource | +| [aws_ssm_parameter.rds_dbviewer_password](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/ssm_parameter) | resource | +| [postgresql_database.db](https://registry.terraform.io/providers/cyrilgdn/postgresql/latest/docs/resources/database) | resource | +| [postgresql_grant.user](https://registry.terraform.io/providers/cyrilgdn/postgresql/latest/docs/resources/grant) | resource | +| [postgresql_grant.viewer](https://registry.terraform.io/providers/cyrilgdn/postgresql/latest/docs/resources/grant) | resource | +| [postgresql_role.db_owner](https://registry.terraform.io/providers/cyrilgdn/postgresql/latest/docs/resources/role) | resource | +| [postgresql_role.db_user](https://registry.terraform.io/providers/cyrilgdn/postgresql/latest/docs/resources/role) | resource | +| [postgresql_role.db_viewer](https://registry.terraform.io/providers/cyrilgdn/postgresql/latest/docs/resources/role) | resource | +| [aws_db_instance.shared](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/data-sources/db_instance) | data source | +| [aws_secretsmanager_random_password.db_password_init](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/data-sources/secretsmanager_random_password) | data source | +## Inputs + +| Name | Description | Type | Default | Required | +|------|-------------|------|---------|:--------:| +| [db\_name](#input\_db\_name) | n/a | `string` | n/a | yes | +| [environment](#input\_environment) | n/a | `string` | n/a | yes | +| [owner\_name](#input\_owner\_name) | n/a | `string` | n/a | yes | +| [shared\_configuration](#input\_shared\_configuration) | Configuration object from shared resources |
object({
alb_arn = string
alb_https_listener_arn = string
cluster_id = string
cluster_name = string
task_execution_role_arn = string
db_identifier = string
vpc_id = string
public_subnet_ids = set(string)
})
| n/a | yes | +| [user\_name](#input\_user\_name) | n/a | `string` | `""` | no | +| [viewer\_name](#input\_viewer\_name) | n/a | `string` | `""` | no | +## Outputs + +| Name | Description | +|------|-------------| +| [database](#output\_database) | n/a | +| [host](#output\_host) | n/a | +| [owner](#output\_owner) | n/a | +| [owner\_password\_arn](#output\_owner\_password\_arn) | n/a | +| [port](#output\_port) | n/a | +| [user](#output\_user) | n/a | +| [user\_password\_arn](#output\_user\_password\_arn) | n/a | +| [viewer](#output\_viewer) | n/a | +| [viewer\_password\_arn](#output\_viewer\_password\_arn) | n/a | +## Providers + +| Name | Version | +|------|---------| +| [aws](#provider\_aws) | n/a | +| [postgresql](#provider\_postgresql) | ~> 1.21.0 | +## Requirements + +| Name | Version | +|------|---------| +| [postgresql](#requirement\_postgresql) | ~> 1.21.0 | + +To automatically update this documentation, install terraform-docs on your local machine run the following: + cd + terraform-docs -c .terraform.docs.yml . + \ No newline at end of file diff --git a/terraform-modules/ecr/.terraform.docs.yml b/terraform-modules/ecr/.terraform.docs.yml new file mode 100644 index 0000000..8f17113 --- /dev/null +++ b/terraform-modules/ecr/.terraform.docs.yml @@ -0,0 +1,60 @@ +formatter: "markdown table" # this is required +version: "" + +header-from: main.tf +footer-from: "" + +recursive: + enabled: false + path: modules + +sections: + hide: [] + show: [] + +content: |- + # ECR + + Add description. + + {{ .Header }} + {{ .Modules }} + {{ .Resources }} + {{ .Inputs }} + {{ .Outputs }} + {{ .Providers }} + {{ .Requirements }} + {{ .Footer }} + To automatically update this documentation, install terraform-docs on your local machine run the following: + cd + terraform-docs -c .terraform.docs.yml . +output: + file: README.md + mode: replace + template: |- + + {{ .Content }} + + +output-values: + enabled: false + from: "" + +sort: + enabled: true + by: name + +settings: + anchor: true + color: true + default: true + description: false + escape: true + hide-empty: true + html: true + indent: 2 + lockfile: true + read-comments: true + required: true + sensitive: true + type: true diff --git a/terraform-modules/ecr/README.md b/terraform-modules/ecr/README.md new file mode 100644 index 0000000..83442ad --- /dev/null +++ b/terraform-modules/ecr/README.md @@ -0,0 +1,30 @@ + +# ECR + +Add description. + + + +## Resources + +| Name | Type | +|------|------| +| [aws_ecr_repository.this](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/ecr_repository) | resource | +## Inputs + +| Name | Description | Type | Default | Required | +|------|-------------|------|---------|:--------:| +| [environment](#input\_environment) | n/a | `string` | n/a | yes | +| [project\_name](#input\_project\_name) | The overall name of the project using this infrastructure; used to group related resources by | `string` | n/a | yes | + +## Providers + +| Name | Version | +|------|---------| +| [aws](#provider\_aws) | n/a | + + +To automatically update this documentation, install terraform-docs on your local machine run the following: + cd + terraform-docs -c .terraform.docs.yml . + \ No newline at end of file diff --git a/terraform-modules/ecs-task/.terraform.docs.yml b/terraform-modules/ecs-task/.terraform.docs.yml new file mode 100644 index 0000000..572b5c4 --- /dev/null +++ b/terraform-modules/ecs-task/.terraform.docs.yml @@ -0,0 +1,60 @@ +formatter: "markdown table" # this is required +version: "" + +header-from: main.tf +footer-from: "" + +recursive: + enabled: false + path: modules + +sections: + hide: [] + show: [] + +content: |- + # ECS-Task + + Add description. + + {{ .Header }} + {{ .Modules }} + {{ .Resources }} + {{ .Inputs }} + {{ .Outputs }} + {{ .Providers }} + {{ .Requirements }} + {{ .Footer }} + To automatically update this documentation, install terraform-docs on your local machine run the following: + cd + terraform-docs -c .terraform.docs.yml . +output: + file: README.md + mode: replace + template: |- + + {{ .Content }} + + +output-values: + enabled: false + from: "" + +sort: + enabled: true + by: name + +settings: + anchor: true + color: true + default: true + description: false + escape: true + hide-empty: true + html: true + indent: 2 + lockfile: true + read-comments: true + required: true + sensitive: true + type: true diff --git a/terraform-modules/ecs-task/README.md b/terraform-modules/ecs-task/README.md new file mode 100644 index 0000000..b588049 --- /dev/null +++ b/terraform-modules/ecs-task/README.md @@ -0,0 +1,60 @@ + +# ECS-Task + +Add description. + + +## Modules + +| Name | Source | Version | +|------|--------|---------| +| [application\_container\_def](#module\_application\_container\_def) | cloudposse/ecs-container-definition/aws | 0.56.0 | +## Resources + +| Name | Type | +|------|------| +| [aws_appautoscaling_policy.ecs_autoscale_cpu](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/appautoscaling_policy) | resource | +| [aws_appautoscaling_policy.ecs_autoscale_memory](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/appautoscaling_policy) | resource | +| [aws_appautoscaling_target.ecs_target](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/appautoscaling_target) | resource | +| [aws_ecs_service.ec2](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/ecs_service) | resource | +| [aws_ecs_service.fargate](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/ecs_service) | resource | +| [aws_ecs_task_definition.task](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/ecs_task_definition) | resource | +| [aws_lb_listener_rule.static](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/lb_listener_rule) | resource | +| [aws_lb_target_group.this](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/lb_target_group) | resource | +| [aws_service_discovery_service.internal](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/service_discovery_service) | resource | +## Inputs + +| Name | Description | Type | Default | Required | +|------|-------------|------|---------|:--------:| +| [application\_type](#input\_application\_type) | defines what type of application is running, fullstack, client, backend, etc. will be used for cloudwatch logs | `string` | n/a | yes | +| [container\_cpu](#input\_container\_cpu) | n/a | `number` | `0` | no | +| [container\_env\_vars](#input\_container\_env\_vars) | n/a | `map(any)` | n/a | yes | +| [container\_image](#input\_container\_image) | n/a | `string` | n/a | yes | +| [container\_memory](#input\_container\_memory) | n/a | `number` | `0` | no | +| [container\_port](#input\_container\_port) | n/a | `number` | `80` | no | +| [container\_secrets](#input\_container\_secrets) | n/a | `map(any)` | n/a | yes | +| [desired\_count](#input\_desired\_count) | n/a | `number` | `1` | no | +| [environment](#input\_environment) | n/a | `string` | n/a | yes | +| [fargate\_security\_group\_id](#input\_fargate\_security\_group\_id) | n/a | `string` | n/a | yes | +| [health\_check\_path](#input\_health\_check\_path) | n/a | `string` | n/a | yes | +| [host\_names](#input\_host\_names) | n/a | `list(string)` | `[]` | no | +| [launch\_type](#input\_launch\_type) | How to launch the container within ECS EC2 instance or FARGATE | `string` | `"FARGATE"` | no | +| [log\_group](#input\_log\_group) | n/a | `string` | n/a | yes | +| [path\_patterns](#input\_path\_patterns) | n/a | `list(string)` | `[]` | no | +| [project\_name](#input\_project\_name) | The overall name of the project using this infrastructure; used to group related resources by | `any` | n/a | yes | +| [region](#input\_region) | n/a | `string` | n/a | yes | +| [service\_discovery\_dns\_namespace\_id](#input\_service\_discovery\_dns\_namespace\_id) | n/a | `string` | n/a | yes | +| [shared\_configuration](#input\_shared\_configuration) | Configuration object from shared resources |
object({
alb_https_listener_arn = string
cluster_id = string
cluster_name = string
vpc_id = string
public_subnet_ids = set(string)
})
| n/a | yes | +| [task\_role\_arn](#input\_task\_role\_arn) | n/a | `string` | n/a | yes | + +## Providers + +| Name | Version | +|------|---------| +| [aws](#provider\_aws) | n/a | + + +To automatically update this documentation, install terraform-docs on your local machine run the following: + cd + terraform-docs -c .terraform.docs.yml . + \ No newline at end of file diff --git a/terraform-modules/ecs/.terraform.docs.yml b/terraform-modules/ecs/.terraform.docs.yml new file mode 100644 index 0000000..d50444d --- /dev/null +++ b/terraform-modules/ecs/.terraform.docs.yml @@ -0,0 +1,60 @@ +formatter: "markdown table" # this is required +version: "" + +header-from: main.tf +footer-from: "" + +recursive: + enabled: false + path: modules + +sections: + hide: [] + show: [] + +content: |- + # ECS + + Add description. + + {{ .Header }} + {{ .Modules }} + {{ .Resources }} + {{ .Inputs }} + {{ .Outputs }} + {{ .Providers }} + {{ .Requirements }} + {{ .Footer }} + To automatically update this documentation, install terraform-docs on your local machine run the following: + cd + terraform-docs -c .terraform.docs.yml . +output: + file: README.md + mode: replace + template: |- + + {{ .Content }} + + +output-values: + enabled: false + from: "" + +sort: + enabled: true + by: name + +settings: + anchor: true + color: true + default: true + description: false + escape: true + hide-empty: true + html: true + indent: 2 + lockfile: true + read-comments: true + required: true + sensitive: true + type: true diff --git a/terraform-modules/ecs/README.md b/terraform-modules/ecs/README.md new file mode 100644 index 0000000..2a82408 --- /dev/null +++ b/terraform-modules/ecs/README.md @@ -0,0 +1,64 @@ + +# ECS + +Add description. + + +## Modules + +| Name | Source | Version | +|------|--------|---------| +| [asg](#module\_asg) | terraform-aws-modules/autoscaling/aws | ~> 5.0 | +## Resources + +| Name | Type | +|------|------| +| [aws_ecs_capacity_provider.this](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/ecs_capacity_provider) | resource | +| [aws_ecs_cluster.cluster](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/ecs_cluster) | resource | +| [aws_ecs_cluster_capacity_providers.cluster](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/ecs_cluster_capacity_providers) | resource | +| [aws_iam_instance_profile.ecs-instance](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/iam_instance_profile) | resource | +| [aws_iam_role.ecs-instance-role](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/iam_role) | resource | +| [aws_iam_role.ecs_task_execution_role](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/iam_role) | resource | +| [aws_iam_role_policy_attachment.ecs-instance-role-attachment](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/iam_role_policy_attachment) | resource | +| [aws_iam_role_policy_attachment.ecs_task](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/iam_role_policy_attachment) | resource | +| [aws_iam_service_linked_role.ecs](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/iam_service_linked_role) | resource | +| [aws_security_group.ecs_instance](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/security_group) | resource | +| [aws_caller_identity.current](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/data-sources/caller_identity) | data source | +| [aws_ssm_parameter.ec2-ecs-ami](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/data-sources/ssm_parameter) | data source | +## Inputs + +| Name | Description | Type | Default | Required | +|------|-------------|------|---------|:--------:| +| [alb\_security\_group\_id](#input\_alb\_security\_group\_id) | n/a | `string` | n/a | yes | +| [ecs\_ec2\_instance\_count](#input\_ecs\_ec2\_instance\_count) | n/a | `number` | `0` | no | +| [ecs\_ec2\_instance\_type](#input\_ecs\_ec2\_instance\_type) | n/a | `string` | `"t3.small"` | no | +| [environment](#input\_environment) | n/a | `string` | n/a | yes | +| [key\_name](#input\_key\_name) | pre-created SSH in AWS for access to the ECS EC2 Instance | `string` | n/a | yes | +| [public\_subnet\_ids](#input\_public\_subnet\_ids) | n/a | `list(string)` | n/a | yes | +| [resource\_name](#input\_resource\_name) | The overall name of the shared resources | `string` | n/a | yes | +| [tags](#input\_tags) | n/a | `map(any)` |
{
"terraform_managed": "true"
}
| no | +| [vpc\_cidr](#input\_vpc\_cidr) | n/a | `string` | `"10.1.0.0/16"` | no | +| [vpc\_id](#input\_vpc\_id) | n/a | `string` | n/a | yes | +## Outputs + +| Name | Description | +|------|-------------| +| [asg\_capacity\_prov](#output\_asg\_capacity\_prov) | n/a | +| [cluster\_id](#output\_cluster\_id) | n/a | +| [cluster\_name](#output\_cluster\_name) | n/a | +| [default\_ecs\_service\_role\_arn](#output\_default\_ecs\_service\_role\_arn) | n/a | +| [ecs\_asg\_arn](#output\_ecs\_asg\_arn) | n/a | +| [task\_execution\_role\_arn](#output\_task\_execution\_role\_arn) | n/a | +| [userdata](#output\_userdata) | n/a | +| [userdata64](#output\_userdata64) | n/a | +## Providers + +| Name | Version | +|------|---------| +| [aws](#provider\_aws) | n/a | + + +To automatically update this documentation, install terraform-docs on your local machine run the following: + cd + terraform-docs -c .terraform.docs.yml . + \ No newline at end of file diff --git a/terraform-modules/multi-container-service/.terraform.docs.yml b/terraform-modules/multi-container-service/.terraform.docs.yml new file mode 100644 index 0000000..a079265 --- /dev/null +++ b/terraform-modules/multi-container-service/.terraform.docs.yml @@ -0,0 +1,60 @@ +formatter: "markdown table" # this is required +version: "" + +header-from: main.tf +footer-from: "" + +recursive: + enabled: false + path: modules + +sections: + hide: [] + show: [] + +content: |- + # Multi-Container-Service + + Add description. + + {{ .Header }} + {{ .Modules }} + {{ .Resources }} + {{ .Inputs }} + {{ .Outputs }} + {{ .Providers }} + {{ .Requirements }} + {{ .Footer }} + To automatically update this documentation, install terraform-docs on your local machine run the following: + cd + terraform-docs -c .terraform.docs.yml . +output: + file: README.md + mode: replace + template: |- + + {{ .Content }} + + +output-values: + enabled: false + from: "" + +sort: + enabled: true + by: name + +settings: + anchor: true + color: true + default: true + description: false + escape: true + hide-empty: true + html: true + indent: 2 + lockfile: true + read-comments: true + required: true + sensitive: true + type: true diff --git a/terraform-modules/multi-container-service/README.md b/terraform-modules/multi-container-service/README.md new file mode 100644 index 0000000..25343eb --- /dev/null +++ b/terraform-modules/multi-container-service/README.md @@ -0,0 +1,49 @@ + +# Multi-Container-Service + +Add description. + + +## Modules + +| Name | Source | Version | +|------|--------|---------| +| [ecs-task](#module\_ecs-task) | ../ecs-task | n/a | +## Resources + +| Name | Type | +|------|------| +| [aws_cloudwatch_log_group.cwlogs](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/cloudwatch_log_group) | resource | +| [aws_ecr_repository.these](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/ecr_repository) | resource | +| [aws_iam_role.ecs_task_execution_role](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/iam_role) | resource | +| [aws_iam_role_policy_attachment.ecs_task](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/iam_role_policy_attachment) | resource | +| [aws_route53_record.cname](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/route53_record) | resource | +| [aws_security_group.fargate](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/security_group) | resource | +| [aws_service_discovery_private_dns_namespace.internal](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/service_discovery_private_dns_namespace) | resource | +| [aws_lb.lb](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/data-sources/lb) | data source | +| [aws_route53_zone.this](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/data-sources/route53_zone) | data source | +## Inputs + +| Name | Description | Type | Default | Required | +|------|-------------|------|---------|:--------:| +| [application\_type](#input\_application\_type) | defines what type of application is running, fullstack, client, backend, etc. will be used for cloudwatch logs | `string` | n/a | yes | +| [containers](#input\_containers) | Per container service configuration. Note that subdomains are used (e.g. 'www' not 'www.example.com') |
map(object({
tag = optional(string, "latest")
desired_count = optional(number, 1)
launch_type = optional(string, "FARGATE")
cpu = optional(number, 0)
memory = optional(number, 0)
port = optional(number, 80)
subdomains = optional(list(string), [])
path_patterns = optional(list(string), [])
health_check_path = optional(string, "/")
env_vars = optional(map(any), {})
secrets = optional(map(any), {})
}))
| n/a | yes | +| [environment](#input\_environment) | n/a | `string` | n/a | yes | +| [project\_name](#input\_project\_name) | The overall name of the project using this infrastructure; used to group related resources | `any` | n/a | yes | +| [region](#input\_region) | n/a | `string` | n/a | yes | +| [shared\_configuration](#input\_shared\_configuration) | Configuration object from shared resources |
object({
alb_arn = string
alb_https_listener_arn = string
cluster_id = string
cluster_name = string
task_execution_role_arn = string
db_identifier = string
vpc_id = string
public_subnet_ids = set(string)
})
| n/a | yes | +| [tags](#input\_tags) | n/a | `map(any)` |
{
"terraform_managed": "true"
}
| no | +| [vpc\_cidr](#input\_vpc\_cidr) | VPC cidr block | `string` | n/a | yes | +| [zone\_id](#input\_zone\_id) | The root zone\_id for the service | `string` | n/a | yes | + +## Providers + +| Name | Version | +|------|---------| +| [aws](#provider\_aws) | n/a | + + +To automatically update this documentation, install terraform-docs on your local machine run the following: + cd + terraform-docs -c .terraform.docs.yml . + \ No newline at end of file diff --git a/terraform-modules/multi-tenant-database/.terraform.docs.yml b/terraform-modules/multi-tenant-database/.terraform.docs.yml new file mode 100644 index 0000000..4d1ccdd --- /dev/null +++ b/terraform-modules/multi-tenant-database/.terraform.docs.yml @@ -0,0 +1,60 @@ +formatter: "markdown table" # this is required +version: "" + +header-from: main.tf +footer-from: "" + +recursive: + enabled: false + path: modules + +sections: + hide: [] + show: [] + +content: |- + # Multi-Tenant-Database + + Add description. + + {{ .Header }} + {{ .Modules }} + {{ .Resources }} + {{ .Inputs }} + {{ .Outputs }} + {{ .Providers }} + {{ .Requirements }} + {{ .Footer }} + To automatically update this documentation, install terraform-docs on your local machine run the following: + cd + terraform-docs -c .terraform.docs.yml . +output: + file: README.md + mode: replace + template: |- + + {{ .Content }} + + +output-values: + enabled: false + from: "" + +sort: + enabled: true + by: name + +settings: + anchor: true + color: true + default: true + description: false + escape: true + hide-empty: true + html: true + indent: 2 + lockfile: true + read-comments: true + required: true + sensitive: true + type: true diff --git a/terraform-modules/multi-tenant-database/README.md b/terraform-modules/multi-tenant-database/README.md new file mode 100644 index 0000000..4b6a59e --- /dev/null +++ b/terraform-modules/multi-tenant-database/README.md @@ -0,0 +1,48 @@ + +# Multi-Tenant-Database + +Add description. + + + +## Resources + +| Name | Type | +|------|------| +| [aws_iam_policy.this](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/iam_policy) | resource | +| [aws_iam_role.this](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/iam_role) | resource | +| [aws_iam_role_policy_attachment.this](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/iam_role_policy_attachment) | resource | +| [aws_lambda_function.create_db](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/lambda_function) | resource | +| [aws_lambda_layer_version.python-sqlalchemy](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/lambda_layer_version) | resource | +| [aws_security_group.this](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/security_group) | resource | +| [archive_file.lambda_zip](https://registry.terraform.io/providers/hashicorp/archive/latest/docs/data-sources/file) | data source | +## Inputs + +| Name | Description | Type | Default | Required | +|------|-------------|------|---------|:--------:| +| [create\_db\_instance](#input\_create\_db\_instance) | n/a | `bool` | `false` | no | +| [db\_public\_access](#input\_db\_public\_access) | Bool to control if instance is publicly accessible | `bool` | `false` | no | +| [environment](#input\_environment) | a short name describing the lifecyle or stage of development that this is running for; ex: 'dev', 'qa', 'prod', 'test' | `string` | n/a | yes | +| [private\_subnet\_ids](#input\_private\_subnet\_ids) | vpc private subnet ids | `list(string)` | n/a | yes | +| [public\_subnet\_ids](#input\_public\_subnet\_ids) | vpc public subnet ids | `list(string)` | n/a | yes | +| [resource\_name](#input\_resource\_name) | The overall name of the shared resources | `string` | n/a | yes | +| [tags](#input\_tags) | n/a | `map(any)` |
{
"terraform_managed": "true"
}
| no | +| [vpc\_cidr](#input\_vpc\_cidr) | VPC cidr block | `string` | n/a | yes | +| [vpc\_id](#input\_vpc\_id) | VPC ID | `string` | n/a | yes | +## Outputs + +| Name | Description | +|------|-------------| +| [lambda\_function](#output\_lambda\_function) | n/a | +## Providers + +| Name | Version | +|------|---------| +| [archive](#provider\_archive) | n/a | +| [aws](#provider\_aws) | n/a | + + +To automatically update this documentation, install terraform-docs on your local machine run the following: + cd + terraform-docs -c .terraform.docs.yml . + \ No newline at end of file diff --git a/terraform-modules/network/.terraform.docs.yml b/terraform-modules/network/.terraform.docs.yml new file mode 100644 index 0000000..ea092c4 --- /dev/null +++ b/terraform-modules/network/.terraform.docs.yml @@ -0,0 +1,60 @@ +formatter: "markdown table" # this is required +version: "" + +header-from: main.tf +footer-from: "" + +recursive: + enabled: false + path: modules + +sections: + hide: [] + show: [] + +content: |- + # Network + + Add description. + + {{ .Header }} + {{ .Modules }} + {{ .Resources }} + {{ .Inputs }} + {{ .Outputs }} + {{ .Providers }} + {{ .Requirements }} + {{ .Footer }} + To automatically update this documentation, install terraform-docs on your local machine run the following: + cd + terraform-docs -c .terraform.docs.yml . +output: + file: README.md + mode: replace + template: |- + + {{ .Content }} + + +output-values: + enabled: false + from: "" + +sort: + enabled: true + by: name + +settings: + anchor: true + color: true + default: true + description: false + escape: true + hide-empty: true + html: true + indent: 2 + lockfile: true + read-comments: true + required: true + sensitive: true + type: true diff --git a/terraform-modules/network/README.md b/terraform-modules/network/README.md new file mode 100644 index 0000000..a6fc289 --- /dev/null +++ b/terraform-modules/network/README.md @@ -0,0 +1,51 @@ + +# Network + +Add description. + + +## Modules + +| Name | Source | Version | +|------|--------|---------| +| [vpc](#module\_vpc) | terraform-aws-modules/vpc/aws | n/a | +## Resources + +| Name | Type | +|------|------| +| [aws_availability_zones.available](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/data-sources/availability_zones) | data source | +| [aws_caller_identity.current](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/data-sources/caller_identity) | data source | +## Inputs + +| Name | Description | Type | Default | Required | +|------|-------------|------|---------|:--------:| +| [environment](#input\_environment) | n/a | `string` | n/a | yes | +| [region](#input\_region) | n/a | `string` | n/a | yes | +| [resource\_name](#input\_resource\_name) | The overall name of the shared resources | `string` | n/a | yes | +| [tags](#input\_tags) | n/a | `map(any)` |
{
"terraform_managed": "true"
}
| no | +| [vpc\_cidr](#input\_vpc\_cidr) | n/a | `string` | `"10.10.0.0/16"` | no | +## Outputs + +| Name | Description | +|------|-------------| +| [availability\_zones](#output\_availability\_zones) | List of Availability Zones where subnets were created | +| [igw\_id](#output\_igw\_id) | The ID of the Internet Gateway | +| [private\_route\_table\_ids](#output\_private\_route\_table\_ids) | IDs of the created private route tables | +| [private\_subnet\_cidrs](#output\_private\_subnet\_cidrs) | n/a | +| [private\_subnet\_ids](#output\_private\_subnet\_ids) | n/a | +| [public\_route\_table\_ids](#output\_public\_route\_table\_ids) | IDs of the created public route tables | +| [public\_subnet\_cidrs](#output\_public\_subnet\_cidrs) | n/a | +| [public\_subnet\_ids](#output\_public\_subnet\_ids) | n/a | +| [vpc\_cidr](#output\_vpc\_cidr) | n/a | +| [vpc\_id](#output\_vpc\_id) | The ID of the VPC | +## Providers + +| Name | Version | +|------|---------| +| [aws](#provider\_aws) | n/a | + + +To automatically update this documentation, install terraform-docs on your local machine run the following: + cd + terraform-docs -c .terraform.docs.yml . + \ No newline at end of file diff --git a/terraform-modules/private-dns/.terraform.docs.yml b/terraform-modules/private-dns/.terraform.docs.yml new file mode 100644 index 0000000..23f6944 --- /dev/null +++ b/terraform-modules/private-dns/.terraform.docs.yml @@ -0,0 +1,60 @@ +formatter: "markdown table" # this is required +version: "" + +header-from: main.tf +footer-from: "" + +recursive: + enabled: false + path: modules + +sections: + hide: [] + show: [] + +content: |- + # Private-DNS + + Add description. + + {{ .Header }} + {{ .Modules }} + {{ .Resources }} + {{ .Inputs }} + {{ .Outputs }} + {{ .Providers }} + {{ .Requirements }} + {{ .Footer }} + To automatically update this documentation, install terraform-docs on your local machine run the following: + cd + terraform-docs -c .terraform.docs.yml . +output: + file: README.md + mode: replace + template: |- + + {{ .Content }} + + +output-values: + enabled: false + from: "" + +sort: + enabled: true + by: name + +settings: + anchor: true + color: true + default: true + description: false + escape: true + hide-empty: true + html: true + indent: 2 + lockfile: true + read-comments: true + required: true + sensitive: true + type: true diff --git a/terraform-modules/private-dns/README.md b/terraform-modules/private-dns/README.md new file mode 100644 index 0000000..dca07e0 --- /dev/null +++ b/terraform-modules/private-dns/README.md @@ -0,0 +1,38 @@ + +# Private-DNS + +Add description. + + + +## Resources + +| Name | Type | +|------|------| +| [aws_service_discovery_private_dns_namespace.this](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/service_discovery_private_dns_namespace) | resource | +## Inputs + +| Name | Description | Type | Default | Required | +|------|-------------|------|---------|:--------:| +| [environment](#input\_environment) | n/a | `string` | n/a | yes | +| [region](#input\_region) | n/a | `string` | `"us-east-2"` | no | +| [resource\_name](#input\_resource\_name) | The overall name of the project using this infrastructure; used to group related resources by | `any` | n/a | yes | +| [tags](#input\_tags) | n/a | `map(any)` |
{
"terraform_managed": "true"
}
| no | +| [vpc\_id](#input\_vpc\_id) | VPC ID | `any` | n/a | yes | +## Outputs + +| Name | Description | +|------|-------------| +| [private\_dns\_id](#output\_private\_dns\_id) | n/a | +| [private\_dns\_name](#output\_private\_dns\_name) | n/a | +## Providers + +| Name | Version | +|------|---------| +| [aws](#provider\_aws) | n/a | + + +To automatically update this documentation, install terraform-docs on your local machine run the following: + cd + terraform-docs -c .terraform.docs.yml . + \ No newline at end of file diff --git a/terraform-modules/project-zone/.terraform.docs.yml b/terraform-modules/project-zone/.terraform.docs.yml new file mode 100644 index 0000000..4817cb6 --- /dev/null +++ b/terraform-modules/project-zone/.terraform.docs.yml @@ -0,0 +1,60 @@ +formatter: "markdown table" # this is required +version: "" + +header-from: main.tf +footer-from: "" + +recursive: + enabled: false + path: modules + +sections: + hide: [] + show: [] + +content: |- + # Project-Zone + + Add description. + + {{ .Header }} + {{ .Modules }} + {{ .Resources }} + {{ .Inputs }} + {{ .Outputs }} + {{ .Providers }} + {{ .Requirements }} + {{ .Footer }} + To automatically update this documentation, install terraform-docs on your local machine run the following: + cd + terraform-docs -c .terraform.docs.yml . +output: + file: README.md + mode: replace + template: |- + + {{ .Content }} + + +output-values: + enabled: false + from: "" + +sort: + enabled: true + by: name + +settings: + anchor: true + color: true + default: true + description: false + escape: true + hide-empty: true + html: true + indent: 2 + lockfile: true + read-comments: true + required: true + sensitive: true + type: true diff --git a/terraform-modules/project-zone/README.md b/terraform-modules/project-zone/README.md new file mode 100644 index 0000000..265ddb0 --- /dev/null +++ b/terraform-modules/project-zone/README.md @@ -0,0 +1,43 @@ + +# Project-Zone + +Add description. + + + +## Resources + +| Name | Type | +|------|------| +| [aws_acm_certificate.domain](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/acm_certificate) | resource | +| [aws_acm_certificate_validation.domain](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/acm_certificate_validation) | resource | +| [aws_lb_listener_certificate.domain](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/lb_listener_certificate) | resource | +| [aws_route53_record.apex](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/route53_record) | resource | +| [aws_route53_record.apex-gh](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/route53_record) | resource | +| [aws_route53_record.apex-gh-ipv6](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/route53_record) | resource | +| [aws_route53_record.cert_validation](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/route53_record) | resource | +| [aws_route53_zone.this](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/route53_zone) | resource | +| [aws_lb.lb](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/data-sources/lb) | data source | +## Inputs + +| Name | Description | Type | Default | Required | +|------|-------------|------|---------|:--------:| +| [github\_at\_apex](#input\_github\_at\_apex) | n/a | `bool` | `false` | no | +| [shared\_configuration](#input\_shared\_configuration) | Configuration object from shared resources |
object({
alb_arn = string
alb_https_listener_arn = string
})
| n/a | yes | +| [zone\_name](#input\_zone\_name) | n/a | `string` | n/a | yes | +## Outputs + +| Name | Description | +|------|-------------| +| [zone\_id](#output\_zone\_id) | n/a | +## Providers + +| Name | Version | +|------|---------| +| [aws](#provider\_aws) | n/a | + + +To automatically update this documentation, install terraform-docs on your local machine run the following: + cd + terraform-docs -c .terraform.docs.yml . + \ No newline at end of file diff --git a/terraform-modules/r53/.terraform.docs.yml b/terraform-modules/r53/.terraform.docs.yml new file mode 100644 index 0000000..106c436 --- /dev/null +++ b/terraform-modules/r53/.terraform.docs.yml @@ -0,0 +1,60 @@ +formatter: "markdown table" # this is required +version: "" + +header-from: main.tf +footer-from: "" + +recursive: + enabled: false + path: modules + +sections: + hide: [] + show: [] + +content: |- + # R53 + + Add description. + + {{ .Header }} + {{ .Modules }} + {{ .Resources }} + {{ .Inputs }} + {{ .Outputs }} + {{ .Providers }} + {{ .Requirements }} + {{ .Footer }} + To automatically update this documentation, install terraform-docs on your local machine run the following: + cd + terraform-docs -c .terraform.docs.yml . +output: + file: README.md + mode: replace + template: |- + + {{ .Content }} + + +output-values: + enabled: false + from: "" + +sort: + enabled: true + by: name + +settings: + anchor: true + color: true + default: true + description: false + escape: true + hide-empty: true + html: true + indent: 2 + lockfile: true + read-comments: true + required: true + sensitive: true + type: true diff --git a/terraform-modules/r53/README.md b/terraform-modules/r53/README.md new file mode 100644 index 0000000..35dd6ea --- /dev/null +++ b/terraform-modules/r53/README.md @@ -0,0 +1,32 @@ + +# R53 + +Add description. + + + +## Resources + +| Name | Type | +|------|------| +| [aws_route53_record.www](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/route53_record) | resource | +| [aws_route53_zone.selected](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/data-sources/route53_zone) | data source | +## Inputs + +| Name | Description | Type | Default | Required | +|------|-------------|------|---------|:--------:| +| [alb\_external\_dns](#input\_alb\_external\_dns) | Application Load Balancer External A Record for R53 Record | `string` | n/a | yes | +| [domain\_name](#input\_domain\_name) | The domain name where the application will be deployed, must already live in AWS | `string` | n/a | yes | +| [host\_names](#input\_host\_names) | The URL where the application will be hosted, must be a subdomain of the domain\_name | `list(string)` | n/a | yes | + +## Providers + +| Name | Version | +|------|---------| +| [aws](#provider\_aws) | n/a | + + +To automatically update this documentation, install terraform-docs on your local machine run the following: + cd + terraform-docs -c .terraform.docs.yml . + \ No newline at end of file diff --git a/terraform-modules/rds/.terraform.docs.yml b/terraform-modules/rds/.terraform.docs.yml new file mode 100644 index 0000000..9422915 --- /dev/null +++ b/terraform-modules/rds/.terraform.docs.yml @@ -0,0 +1,60 @@ +formatter: "markdown table" # this is required +version: "" + +header-from: main.tf +footer-from: "" + +recursive: + enabled: false + path: modules + +sections: + hide: [] + show: [] + +content: |- + # RDS + + Add description. + + {{ .Header }} + {{ .Modules }} + {{ .Resources }} + {{ .Inputs }} + {{ .Outputs }} + {{ .Providers }} + {{ .Requirements }} + {{ .Footer }} + To automatically update this documentation, install terraform-docs on your local machine run the following: + cd + terraform-docs -c .terraform.docs.yml . +output: + file: README.md + mode: replace + template: |- + + {{ .Content }} + + +output-values: + enabled: false + from: "" + +sort: + enabled: true + by: name + +settings: + anchor: true + color: true + default: true + description: false + escape: true + hide-empty: true + html: true + indent: 2 + lockfile: true + read-comments: true + required: true + sensitive: true + type: true diff --git a/terraform-modules/rds/README.md b/terraform-modules/rds/README.md new file mode 100644 index 0000000..87ca4c6 --- /dev/null +++ b/terraform-modules/rds/README.md @@ -0,0 +1,58 @@ + +# RDS + +Add description. + + + +## Resources + +| Name | Type | +|------|------| +| [aws_db_instance.this](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/db_instance) | resource | +| [aws_db_subnet_group.this](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/db_subnet_group) | resource | +| [aws_security_group.db](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/security_group) | resource | +## Inputs + +| Name | Description | Type | Default | Required | +|------|-------------|------|---------|:--------:| +| [create\_db\_instance](#input\_create\_db\_instance) | -------------------------- Database Variables -------------------------- | `bool` | `false` | no | +| [db\_allow\_major\_engine\_version\_upgrade](#input\_db\_allow\_major\_engine\_version\_upgrade) | n/a | `bool` | `true` | no | +| [db\_engine\_version](#input\_db\_engine\_version) | the database major and minor version of postgres | `string` | `"13.1"` | no | +| [db\_instance\_class](#input\_db\_instance\_class) | The instance type of the db | `string` | `"db.t3.small"` | no | +| [db\_major\_version](#input\_db\_major\_version) | n/a | `string` | `"13"` | no | +| [db\_password](#input\_db\_password) | The postgres database password created for the default database when the instance is booted | `string` | n/a | yes | +| [db\_port](#input\_db\_port) | database port | `number` | `5432` | no | +| [db\_public\_access](#input\_db\_public\_access) | Bool to control if instance is publicly accessible | `bool` | `false` | no | +| [db\_snapshot\_migration](#input\_db\_snapshot\_migration) | Name of snapshot that will used to for new database, needs to in the same region | `string` | `""` | no | +| [db\_username](#input\_db\_username) | The name of the default postgres user created by RDS when the instance is booted | `string` | n/a | yes | +| [environment](#input\_environment) | a short name describing the lifecyle or stage of development that this is running for; ex: 'dev', 'qa', 'prod', 'test' | `string` | n/a | yes | +| [private\_subnet\_cidrs](#input\_private\_subnet\_cidrs) | vpc private subnets cidrs | `list(string)` | n/a | yes | +| [private\_subnet\_ids](#input\_private\_subnet\_ids) | vpc private subnet ids | `list(string)` | n/a | yes | +| [public\_subnet\_cidrs](#input\_public\_subnet\_cidrs) | vpc public subnets cidrs | `list(string)` | n/a | yes | +| [public\_subnet\_ids](#input\_public\_subnet\_ids) | vpc public subnet ids | `list(string)` | n/a | yes | +| [region](#input\_region) | the aws region code where this is deployed; ex: 'us-west-2', 'us-east-1', 'us-east-2' | `string` | n/a | yes | +| [resource\_name](#input\_resource\_name) | The overall name of the shared resources | `string` | n/a | yes | +| [tags](#input\_tags) | n/a | `map(any)` |
{
"terraform_managed": "true"
}
| no | +| [vpc\_cidr](#input\_vpc\_cidr) | VPC cidr block | `string` | n/a | yes | +| [vpc\_id](#input\_vpc\_id) | VPC ID | `string` | n/a | yes | +## Outputs + +| Name | Description | +|------|-------------| +| [db\_address](#output\_db\_address) | The aws provided URL of the database | +| [db\_identifier](#output\_db\_identifier) | The AWS provided identifier | +| [db\_instance\_endpoint](#output\_db\_instance\_endpoint) | The db adress and port for this RDS instance | +| [db\_instance\_hosted\_zone\_id](#output\_db\_instance\_hosted\_zone\_id) | n/a | +| [db\_security\_group\_id](#output\_db\_security\_group\_id) | The security group id for this RDS instance | +## Providers + +| Name | Version | +|------|---------| +| [aws](#provider\_aws) | n/a | + + +To automatically update this documentation, install terraform-docs on your local machine run the following: + cd + terraform-docs -c .terraform.docs.yml . + \ No newline at end of file diff --git a/terraform-modules/redis/.terraform.docs.yml b/terraform-modules/redis/.terraform.docs.yml new file mode 100644 index 0000000..ee1e722 --- /dev/null +++ b/terraform-modules/redis/.terraform.docs.yml @@ -0,0 +1,60 @@ +formatter: "markdown table" # this is required +version: "" + +header-from: main.tf +footer-from: "" + +recursive: + enabled: false + path: modules + +sections: + hide: [] + show: [] + +content: |- + # Redis + + Add description. + + {{ .Header }} + {{ .Modules }} + {{ .Resources }} + {{ .Inputs }} + {{ .Outputs }} + {{ .Providers }} + {{ .Requirements }} + {{ .Footer }} + To automatically update this documentation, install terraform-docs on your local machine run the following: + cd + terraform-docs -c .terraform.docs.yml . +output: + file: README.md + mode: replace + template: |- + + {{ .Content }} + + +output-values: + enabled: false + from: "" + +sort: + enabled: true + by: name + +settings: + anchor: true + color: true + default: true + description: false + escape: true + hide-empty: true + html: true + indent: 2 + lockfile: true + read-comments: true + required: true + sensitive: true + type: true diff --git a/terraform-modules/redis/README.md b/terraform-modules/redis/README.md new file mode 100644 index 0000000..0505e54 --- /dev/null +++ b/terraform-modules/redis/README.md @@ -0,0 +1,50 @@ + +# Redis + +Add description. + + + +## Resources + +| Name | Type | +|------|------| +| [aws_ecs_service.svc](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/ecs_service) | resource | +| [aws_ecs_task_definition.task](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/ecs_task_definition) | resource | +| [aws_security_group.redis_sg](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/security_group) | resource | +| [aws_service_discovery_service.sd_service](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/service_discovery_service) | resource | +| [template_file.container-definition](https://registry.terraform.io/providers/hashicorp/template/latest/docs/data-sources/file) | data source | +## Inputs + +| Name | Description | Type | Default | Required | +|------|-------------|------|---------|:--------:| +| [cluster\_id](#input\_cluster\_id) | n/a | `string` | n/a | yes | +| [cluster\_name](#input\_cluster\_name) | n/a | `string` | n/a | yes | +| [container\_cpu](#input\_container\_cpu) | -------------------------- ECS/Fargat Variables -------------------------- | `number` | `256` | no | +| [container\_memory](#input\_container\_memory) | n/a | `number` | `0` | no | +| [container\_port](#input\_container\_port) | n/a | `number` | `0` | no | +| [desired\_count](#input\_desired\_count) | n/a | `number` | `1` | no | +| [environment](#input\_environment) | n/a | `string` | n/a | yes | +| [private\_dns\_id](#input\_private\_dns\_id) | n/a | `string` | n/a | yes | +| [public\_subnet\_ids](#input\_public\_subnet\_ids) | VPB Public Subnets for where to place Fargate tasks | `list(string)` | n/a | yes | +| [region](#input\_region) | n/a | `string` | `"us-east-2"` | no | +| [resource\_name](#input\_resource\_name) | The overall name of the project using this infrastructure; used to group related resources by | `any` | n/a | yes | +| [tags](#input\_tags) | n/a | `map(any)` |
{
"terraform_managed": "true"
}
| no | +| [vpc\_id](#input\_vpc\_id) | VPC ID | `any` | n/a | yes | +## Outputs + +| Name | Description | +|------|-------------| +| [internal\_dns\_name](#output\_internal\_dns\_name) | n/a | +## Providers + +| Name | Version | +|------|---------| +| [aws](#provider\_aws) | n/a | +| [template](#provider\_template) | n/a | + + +To automatically update this documentation, install terraform-docs on your local machine run the following: + cd + terraform-docs -c .terraform.docs.yml . + \ No newline at end of file diff --git a/terraform-modules/service/.terraform.docs.yml b/terraform-modules/service/.terraform.docs.yml new file mode 100644 index 0000000..85a55fe --- /dev/null +++ b/terraform-modules/service/.terraform.docs.yml @@ -0,0 +1,60 @@ +formatter: "markdown table" # this is required +version: "" + +header-from: main.tf +footer-from: "" + +recursive: + enabled: false + path: modules + +sections: + hide: [] + show: [] + +content: |- + # Service + + Add description. + + {{ .Header }} + {{ .Modules }} + {{ .Resources }} + {{ .Inputs }} + {{ .Outputs }} + {{ .Providers }} + {{ .Requirements }} + {{ .Footer }} + To automatically update this documentation, install terraform-docs on your local machine run the following: + cd + terraform-docs -c .terraform.docs.yml . +output: + file: README.md + mode: replace + template: |- + + {{ .Content }} + + +output-values: + enabled: false + from: "" + +sort: + enabled: true + by: name + +settings: + anchor: true + color: true + default: true + description: false + escape: true + hide-empty: true + html: true + indent: 2 + lockfile: true + read-comments: true + required: true + sensitive: true + type: true diff --git a/terraform-modules/service/README.md b/terraform-modules/service/README.md new file mode 100644 index 0000000..09d14ab --- /dev/null +++ b/terraform-modules/service/README.md @@ -0,0 +1,80 @@ + +# Service + +Add description. + + +## Modules + +| Name | Source | Version | +|------|--------|---------| +| [application\_container\_def](#module\_application\_container\_def) | cloudposse/ecs-container-definition/aws | 0.56.0 | +| [ecr](#module\_ecr) | ../ecr | n/a | +## Resources + +| Name | Type | +|------|------| +| [aws_appautoscaling_policy.ecs_autoscale_cpu](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/appautoscaling_policy) | resource | +| [aws_appautoscaling_policy.ecs_autoscale_memory](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/appautoscaling_policy) | resource | +| [aws_appautoscaling_target.ecs_target](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/appautoscaling_target) | resource | +| [aws_cloudwatch_log_group.cwlogs](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/cloudwatch_log_group) | resource | +| [aws_ecs_service.ec2](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/ecs_service) | resource | +| [aws_ecs_service.fargate](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/ecs_service) | resource | +| [aws_ecs_task_definition.task](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/ecs_task_definition) | resource | +| [aws_lb_listener_rule.static](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/lb_listener_rule) | resource | +| [aws_lb_target_group.this](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/lb_target_group) | resource | +| [aws_route53_record.www](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/route53_record) | resource | +| [aws_security_group.fargate](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/security_group) | resource | +| [aws_lambda_invocation.this](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/data-sources/lambda_invocation) | data source | +| [aws_route53_zone.selected](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/data-sources/route53_zone) | data source | +## Inputs + +| Name | Description | Type | Default | Required | +|------|-------------|------|---------|:--------:| +| [alb\_external\_dns](#input\_alb\_external\_dns) | Application Load Balancer External A Record for R53 Record | `string` | n/a | yes | +| [alb\_https\_listener\_arn](#input\_alb\_https\_listener\_arn) | ALB https listener arn for adding rule to | `any` | n/a | yes | +| [alb\_security\_group\_id](#input\_alb\_security\_group\_id) | ALB Security Group ID | `string` | n/a | yes | +| [application\_type](#input\_application\_type) | defines what type of application is running, fullstack, client, backend, etc. will be used for cloudwatch logs | `string` | n/a | yes | +| [aws\_managed\_dns](#input\_aws\_managed\_dns) | flag to either create record if domain is managed in AWS or output ALB DNS for user to manually create | `bool` | n/a | yes | +| [cluster\_id](#input\_cluster\_id) | n/a | `string` | n/a | yes | +| [cluster\_name](#input\_cluster\_name) | n/a | `string` | n/a | yes | +| [container\_cpu](#input\_container\_cpu) | n/a | `number` | `0` | no | +| [container\_env\_vars](#input\_container\_env\_vars) | n/a | `map(any)` | n/a | yes | +| [container\_image](#input\_container\_image) | n/a | `string` | n/a | yes | +| [container\_memory](#input\_container\_memory) | n/a | `number` | `0` | no | +| [container\_port](#input\_container\_port) | n/a | `number` | `80` | no | +| [db\_instance\_endpoint](#input\_db\_instance\_endpoint) | multi-tenant database endpoint, include host and port | `string` | n/a | yes | +| [desired\_count](#input\_desired\_count) | n/a | `number` | `1` | no | +| [environment](#input\_environment) | n/a | `string` | n/a | yes | +| [health\_check\_path](#input\_health\_check\_path) | n/a | `string` | `"/"` | no | +| [host\_names](#input\_host\_names) | n/a | `list(string)` | n/a | yes | +| [https\_listener\_rules](#input\_https\_listener\_rules) | A list of maps describing the Listener Rules for this ALB. Required key/values: actions, conditions. Optional key/values: priority, https\_listener\_index (default to https\_listeners[count.index]) | `any` | `[]` | no | +| [lambda\_function](#input\_lambda\_function) | name of the multi-db lambda function | `string` | n/a | yes | +| [launch\_type](#input\_launch\_type) | How to launch the container within ECS EC2 instance or FARGATE | `string` | `"FARGATE"` | no | +| [path\_patterns](#input\_path\_patterns) | n/a | `list(string)` | `[]` | no | +| [postgres\_database](#input\_postgres\_database) | non-empty map will invoke lambda function to create database and users for application | `map(string)` | `{}` | no | +| [project\_name](#input\_project\_name) | The overall name of the project using this infrastructure; used to group related resources by | `any` | n/a | yes | +| [public\_subnet\_ids](#input\_public\_subnet\_ids) | Public Subnets IDs | `list(string)` | n/a | yes | +| [region](#input\_region) | n/a | `string` | n/a | yes | +| [root\_db\_password](#input\_root\_db\_password) | root database password | `string` | n/a | yes | +| [root\_db\_username](#input\_root\_db\_username) | root database user | `string` | n/a | yes | +| [tags](#input\_tags) | n/a | `map(any)` |
{
"terraform_managed": "true"
}
| no | +| [task\_execution\_role\_arn](#input\_task\_execution\_role\_arn) | ECS task execution role with policy for accessing other AWS resources | `string` | n/a | yes | +| [vpc\_cidr](#input\_vpc\_cidr) | VPC cidr block | `string` | n/a | yes | +| [vpc\_id](#input\_vpc\_id) | VPC ID | `any` | n/a | yes | +## Outputs + +| Name | Description | +|------|-------------| +| [result\_entry](#output\_result\_entry) | n/a | +## Providers + +| Name | Version | +|------|---------| +| [aws](#provider\_aws) | n/a | + + +To automatically update this documentation, install terraform-docs on your local machine run the following: + cd + terraform-docs -c .terraform.docs.yml . + \ No newline at end of file