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.