【发布时间】:2020-09-09 15:53:42
【问题描述】:
我正在使用 Terraform 在 AWS 中创建 Redis。但是当我第一次执行terraform apply 命令时,它会毫无问题地创建。但是如果我在 TF 代码下面重新运行 Terraform apply 会破坏 Redis 并开始重新创建它,它应该告诉我它已经存在开始关注其他新添加的资源。
这是 Redis 的预期行为吗?
在问题中添加地形计划:
-/+ resource "aws_elasticache_replication_group" "redis" {
apply_immediately = true
at_rest_encryption_enabled = true
auto_minor_version_upgrade = false
automatic_failover_enabled = true
+ configuration_endpoint_address = (known after apply)
engine = "redis"
engine_version = "5.0.4"
~ id = "dev-af-redis" -> (known after apply)
maintenance_window = "sun:06:00-sun:07:00"
~ member_clusters = [
- "ca-cng-dev-af-redis-001",
- "ca-cng-dev-af-redis-002",
] -> (known after apply)
node_type = "cache.t2.medium"
~ number_cache_clusters = 2 -> (known after apply)
parameter_group_name = "default.redis5.0"
port = 6379
~ primary_endpoint_address = "master.dev-af-redis.qxyj8a.euc1.cache.amazonaws.com" -> (known after apply)
replication_group_description = "Airflow Cluster"
replication_group_id = "dev-af-redis"
security_group_ids = [
"sg-094175ad3062da04d",
]
~ security_group_names = [] -> (known after apply)
- snapshot_retention_limit = 0 -> null
~ snapshot_window = "02:30-03:30" -> (known after apply)
subnet_group_name = "dev-subnet-group-airflow"
tags = {
"Application" = "project"
"BusinessUnit" = "subproject"
"Classification" = "private"
"Environment" = "development"
"Name" = "dev-airflow-redis"
"TechnicalOwner" = "ops"
"Tier" = "orchestration"
}
transit_encryption_enabled = true
+ cluster_mode {
+ num_node_groups = 1
+ replicas_per_node_group = 1 # forces replacement
}
}
Plan: 1 to add, 0 to change, 1 to destroy.
用于创建 Redis 的 TF 代码:-
resource "aws_elasticache_replication_group" "cng_redis" {
replication_group_description = "Cluster"
replication_group_id = "dev-af-redis"
engine = "redis"
engine_version = "5.0.4"
node_type = "cache.t2.medium "
port = 6379
subnet_group_name = "dev-subnet-group-airflow"
security_group_ids = ["${aws_security_group.airflow_sg.id}"]
parameter_group_name = "default.redis5.0"
at_rest_encryption_enabled = true
transit_encryption_enabled = true
maintenance_window = "sun:06:00-sun:07:00"
auto_minor_version_upgrade = false
apply_immediately = true
automatic_failover_enabled = true
cluster_mode {
num_node_groups = "1"
replicas_per_node_group = "1"
}
tags = merge(
var.common_tags,
map("Classification", "private"),
map("Name", "airflow-redis")
)
}
【问题讨论】:
-
您能否编辑您的问题以在计划输出中显示它想要重新创建事物的位置?
-
@ydaetskcoR 在我的问题中添加了 terraform 计划
-
这是最初的计划,还是销毁/重建的计划?我本来希望看到
-/+进行销毁/重新创建? -
该计划还提到了它在一个模块中的事实 - 也许其他高层正在发生变化,迫使这种情况发生?
-
那个计划和你之前展示的很不一样。看起来您只是从在禁用集群模式的复制组中使用
number_cache_clusters到使用启用集群模式的复制组。这预计会导致重建,因为您不能以这种方式修改现有的复制组。