Tôi đã thiết lập một cụm Redis với Terraform. Các thiết lập trông như thế này:
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
}
Khi tôi thay đổi var.cluster_size
từ 2 thành 3, tôi đã dự đoán rằng Terraform sẽ thực hiện cập nhật tại chỗ. Tuy nhiên, đó không phải là trường hợp:
-/+ 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"
Điều này cũng được xác nhận trong tài liệu :
num_node_groups - (Bắt buộc) Chỉ định số lượng nhóm nút (phân đoạn) cho nhóm sao chép Redis này. Thay đổi số này sẽ buộc một nguồn tài nguyên mới.
Hiện tại, tôi chỉ thấy tùy chọn sử dụng Terraform cho việc triển khai ban đầu và sau đó thêm hoặc xóa các phân đoạn bằng Giao diện người dùng AWS, sẽ thực hiện cập nhật tại chỗ.
Bạn có biết cách để thực hiện cập nhật tại chỗ với Terraform không? Hoặc là việc thêm các phân đoạn mà không mất trạng thái của cơ sở dữ liệu đơn giản là không thể với Terraform vào lúc này?
Có thể có thể thêm / xóa phân đoạn bằng tay (thông qua Giao diện người dùng AWS) và sau đó nhập trạng thái mới trở lại vào Terraform. Tôi đã cố chạy terraform refresh
, nhưng nó thành công trong việc đồng bộ hóa hoàn toàn trạng thái. terraform apply
vẫn tin rằng tài nguyên phải được thay đổi.
Cập nhật: Những gì không hoạt động mặc dù chỉ đơn giản là bỏ qua thay đổi. Cập nhật các tài nguyên khác của Terraform vẫn hoạt động. Tuy nhiên, có một chút khó hiểu vì kích thước cụm được chỉ định trong tệp Terraform không khớp với kích thước thực tế được triển khai. Sau đó, bạn mất khả năng xem thiết lập Terraform và xem chính xác những gì hiện đang được triển khai.
Hiện tại, đó là lựa chọn tốt nhất mà tôi đang kho.