現在、ElastiCache RedisクラスターをプロビジョニングするTerraformスクリプトを書いています。次のような懸念があります。スクリプトでは、スナップショット名を使用して、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}"
}
}
クラスター作成とデータ復元の構成を何らかの方法で2つの構成に分割することは可能ですか?
または、クラスターがすでにプロビジョニングされている場合は、スナップショット名を尋ねるのをスキップしますか?
このフィールドをオプションにすることはできますか?
現在のアクション:
ありがとう。
だから、私はlifecycle ignore_changes
メタ引数で解決したこの問題:
lifecycle {
ignore_changes = [
"node_type",
"snapshot_name",
]
}
snapshot_name
リソース属性をignore_changes
メタ引数に追加し、バックアップからクラスターを再ソートする必要があるまで保持します。この場合、リストから除外します。