I am currently writing Terraform script to provision ElastiCache Redis Cluster. I have the following concern. In the script, I use a snapshot name to restore database from ElastiCache single Redis instance.
I can spin up a new Redis cluster, however, when I try to add more shards (cluster_mode) to it from the tf
script, it requires me to enter a proper snapshot name again (I have automatic backup, that is why snapshot name changes frequently). If it doesn't match, Terraform suggests me to destroy existing cluster and create a new one again.
resource "aws_elasticache_replication_group" "default" {
replication_group_id = "${var.cluster_id}"
replication_group_description = "Redis cluster for Hashicorp ElastiCache example"
node_type = "cache.m4.large"
port = 6379
parameter_group_name = "default.redis3.2.cluster.on"
snapshot_name = "${var.snapshot_name}"
snapshot_retention_limit = 5
snapshot_window = "00:00-05:00"
subnet_group_name = "${aws_elasticache_subnet_group.default.name}"
automatic_failover_enabled = true
cluster_mode {
replicas_per_node_group = 1
num_node_groups = "${var.node_groups}"
}
}
Is it possible to split configuration of cluster creation and data restore into two configurations somehow?
Or, skip asking me a snapshot name if the cluster already provisioned?
Can I make this field optional?
Current actions:
- Create Redis cluster with specified snapshot;
- Add more shards (no snapshot name is asked therefore no cluster destroy, just configuration change).
Thanks.