diff --git a/atmos.yaml b/atmos.yaml
index 481c199..d9691e8 100644
--- a/atmos.yaml
+++ b/atmos.yaml
@@ -9,3 +9,65 @@
# Import shared configuration used by all modules
import:
- https://raw.githubusercontent.com/cloudposse-terraform-components/.github/refs/heads/main/.github/atmos/terraform-component.yaml
+
+docs:
+ generate:
+ readme-submodule:
+ base-dir: ./
+ input:
+ - readme: "./src/modules/redis_cluster/README.md"
+ - get_support: true
+ template: "https://raw.githubusercontent.com/cloudposse-terraform-components/.github/refs/heads/main/atmos.README.md.submodule.gotmpl"
+ output: "./src/modules/redis_cluster/README.md"
+ terraform:
+ source: ./src/modules/redis_cluster
+ enabled: true
+ format: "markdown table"
+ show_providers: false
+ show_inputs: true
+ show_outputs: true
+ sort_by: "name"
+ hide_empty: false
+ indent_level: 2
+
+commands:
+- name: readme
+ steps:
+ - "atmos docs generate readme"
+ - "atmos docs generate readme-simple"
+ - "atmos docs generate readme-submodule"
+
+- name: test
+ commands:
+ - name: "deploy"
+ description: Deploy
+ commands:
+ - name: "dependencies"
+ description: Deploy dependencies only
+ steps:
+ - "cd test"
+ - "go test -timeout 1h --only-deploy-dependencies --skip-destroy-dependencies"
+
+ - name: "component"
+ description: Deploy component only
+ steps:
+ - "cd test"
+ - "go test -timeout 1h --skip-deploy-dependencies --skip-destroy-dependencies --skip-destroy-component"
+
+ - name: "assert"
+ description: Run asserts
+ steps:
+ - "cd test"
+ - "go test -timeout 1h --skip-deploy-dependencies --skip-destroy-dependencies --skip-deploy-component --skip-destroy-component"
+
+ - name: "destroy"
+ description: Destroy
+ steps:
+ - "cd test"
+ - "go test -timeout 1h --skip-deploy-dependencies --skip-deploy-component"
+
+ - name: "run"
+ description: Run tests
+ steps:
+ - "cd test"
+ - "go test -timeout 1h"
diff --git a/src/modules/redis_cluster/README.md b/src/modules/redis_cluster/README.md
new file mode 100644
index 0000000..a126021
--- /dev/null
+++ b/src/modules/redis_cluster/README.md
@@ -0,0 +1,85 @@
+# Elastic Cache Redis Cluster
+
+
+
+
+
+## Requirements
+
+| Name | Version |
+|------|---------|
+| [terraform](#requirement\_terraform) | >= 1.0.0 |
+| [random](#requirement\_random) | >= 3.0 |
+
+## Providers
+
+| Name | Version |
+|------|---------|
+| [random](#provider\_random) | >= 3.0 |
+
+## Modules
+
+| Name | Source | Version |
+|------|--------|---------|
+| [parameter\_store\_write](#module\_parameter\_store\_write) | cloudposse/ssm-parameter-store/aws | 0.13.0 |
+| [redis](#module\_redis) | cloudposse/elasticache-redis/aws | 2.0.0 |
+| [this](#module\_this) | cloudposse/label/null | 0.25.0 |
+
+## Resources
+
+| Name | Type |
+|------|------|
+| [random_password.auth_token](https://registry.terraform.io/providers/hashicorp/random/latest/docs/resources/password) | resource |
+
+## Inputs
+
+| Name | Description | Type | Default | Required |
+|------|-------------|------|---------|:--------:|
+| [additional\_tag\_map](#input\_additional\_tag\_map) | Additional key-value pairs to add to each map in `tags_as_list_of_maps`. Not added to `tags` or `id`.
This is for some rare cases where resources want additional configuration of tags
and therefore take a list of maps with tag key, value, and additional configuration. | `map(string)` | `{}` | no |
+| [attributes](#input\_attributes) | ID element. Additional attributes (e.g. `workers` or `cluster`) to add to `id`,
in the order they appear in the list. New attributes are appended to the
end of the list. The elements of the list are joined by the `delimiter`
and treated as a single ID element. | `list(string)` | `[]` | no |
+| [cluster\_attributes](#input\_cluster\_attributes) | Cluster attributes |
object({
availability_zones = list(string)
vpc_id = string
additional_security_group_rules = list(any)
allowed_security_groups = list(string)
allow_all_egress = bool
subnets = list(string)
family = string
port = number
zone_id = string
multi_az_enabled = bool
at_rest_encryption_enabled = bool
transit_encryption_enabled = bool
transit_encryption_mode = string
apply_immediately = bool
automatic_failover_enabled = bool
auto_minor_version_upgrade = bool
auth_token_enabled = bool
snapshot_retention_limit = number
}) | n/a | yes |
+| [cluster\_name](#input\_cluster\_name) | Elasticache Cluster name | `string` | n/a | yes |
+| [context](#input\_context) | Single object for setting entire context at once.{
"additional_tag_map": {},
"attributes": [],
"delimiter": null,
"descriptor_formats": {},
"enabled": true,
"environment": null,
"id_length_limit": null,
"label_key_case": null,
"label_order": [],
"label_value_case": null,
"labels_as_tags": [
"unset"
],
"name": null,
"namespace": null,
"regex_replace_chars": null,
"stage": null,
"tags": {},
"tenant": null
} | no |
+| [create\_parameter\_group](#input\_create\_parameter\_group) | Whether new parameter group should be created. Set to false if you want to use existing parameter group | `bool` | `true` | no |
+| [delimiter](#input\_delimiter) | Delimiter to be used between ID elements.[| no | +| [name](#input\_name) | ID element. Usually the component or solution name, e.g. 'app' or 'jenkins'.
"default"
]
list(object({
name = string
value = string
})) | n/a | yes |
+| [regex\_replace\_chars](#input\_regex\_replace\_chars) | Terraform regular expression (regex) string.