TerraformでRedisクラスターをセットアップしました。セットアップは次のようになります。
resource "aws_elasticache_replication_group" "instance" {
replication_group_id = "test"
node_type = "cache.t2.micro"
port = 6379
parameter_group_name = "default.redis3.2.cluster.on"
subnet_group_name = "${aws_elasticache_subnet_group.instance.name}"
security_group_ids = ["${aws_security_group.instance.id}"]
cluster_mode {
replicas_per_node_group = 0
num_node_groups = "${var.cluster_size}"
}
automatic_failover_enabled = true
apply_immediately = true
}
var.cluster_size
2から3 に変更すると、Terraformが更新を適切に実行することを期待していました。ただし、そうではありません。
-/+ module.groupsign_redis.aws_elasticache_replication_group.instance (new resource required)
id: "test" => <computed> (forces new resource)
apply_immediately: "true" => "true"
at_rest_encryption_enabled: "false" => "false"
auto_minor_version_upgrade: "true" => "true"
automatic_failover_enabled: "true" => "true"
cluster_mode.#: "1" => "1"
cluster_mode.3760271746.num_node_groups: "" => "3" (forces new resource)
cluster_mode.3760271746.replicas_per_node_group: "" => "0" (forces new resource)
cluster_mode.3784625311.num_node_groups: "2" => "0" (forces new resource)
cluster_mode.3784625311.replicas_per_node_group: "0" => "0"
num_node_groups-(必須)このRedisレプリケーショングループのノードグループ(シャード)の数を指定します。この数を変更すると、新しいリソースが強制されます。
現在、最初のデプロイにTerraformを使用してから、AWS UIを使用してシャードを追加または削除するオプションのみが表示されます。これにより、更新が適切に実行されます。
Terraformを使用してインプレース更新を実行する方法を知っていますか?それとも、現時点ではTerraformではデータベースの状態を失うことなくシャードを追加することは不可能ですか?
(AWS UIを介して)シャードを手動で追加/削除し、新しい状態をTerraformにインポートして戻すことができる場合があります。を実行しようとしましたがterraform refresh
、状態を完全に同期することに成功しました。terraform apply
まだリソースを変更する必要があると考えています。
更新: 機能するのは、変更を単に無視することです。他のTerraformリソースの更新は引き続き機能します。ただし、Terraformファイルで指定されているクラスターサイズが、デプロイされている実際のサイズと一致しないため、少し混乱します。次に、Terraformセットアップを確認して、現在デプロイされているものを正確に確認する機能を失います。
現在、それは私が気づいている最良のオプションです。