Amazon-Web-Services
如何正確地 Terraform ElastiCache Redis 集群配置?
我目前正在編寫 Terraform 腳本來配置 ElastiCache Redis 集群。我有以下擔憂。在腳本中,我使用快照名稱從 ElastiCache 單個 Redis 實例恢復數據庫。
我可以啟動一個新的 Redis 集群,但是,當我嘗試從
tf
腳本中添加更多分片(cluster_mode)時,它需要我再次輸入正確的快照名稱(我有自動備份,這就是為什麼快照名稱經常更改)。如果不匹配,Terraform 建議我銷毀現有集群並重新創建一個新集群。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}" } }
是否可以以某種方式將集群創建和數據恢復的配置拆分為兩個配置?
或者,如果集群已配置,請跳過詢問我的快照名稱?
我可以將此欄位設為可選嗎?
目前的行動:
- 創建具有指定快照的 Redis 集群;
- 添加更多分片(不詢問快照名稱,因此不破壞集群,只需更改配置)。
謝謝。
lifecycle ignore_changes
所以,我用元參數解決了這個問題:lifecycle { ignore_changes = [ "node_type", "snapshot_name", ] }
我將
snapshot_name
資源屬性添加到ignore_changes
元參數中,並將其保留在那裡,直到我需要從備份中重新排序集群。在這種情況下,我將其從列表中排除。