在 terraform 中动态更改 aws_elasticache_replication_group 的配置
Dynamically change in the configuration of aws_elasticache_replication_group in terraform
我正在使用 terraform 配置 elasticache 集群,一切正常!
现在我的要求是我想在 cluster-mode.
的资源内部进行动态配置
下面是我常用的代码..
resource "aws_elasticache_replication_group" "elasticache_redis_cluster" {
replication_group_id = "cache"
engine_version = "${var.engine_version}"
node_type = "${var.node_type}"
port = "${var.elasticache_port}"
parameter_group_name = "${var.param_group_name}"
security_group_ids = ["${aws_sg.id}"]
subnet_group_name = "${aws_elasticache_subnet_group.subnet_group.id}"
}
现在我想根据传入的参数进行如下操作
if (${var.cluster_mode == "enable") {
automatic_failover_enabled = true
cluster_mode {
replicas_per_node_group = 1
num_node_groups = 1
}
}
else {
number_cache_clusters = 2
}
以上基于匹配条件的代码应附加在集群配置中。
非常感谢任何帮助!
Terraform Conditionals只支持三元赋值
例如,它们只能是以下形式:
resource "cool_thing" "my_resource" {
is_prod_thing = "${var.env == "production" ? true : false}"
}
三元运算返回的值必须是同一类型,并且没有直接的方法在不同的资源配置之间进行内部切换。
一种可能的解决方法是使用 count
Meta-Parameter 基于变量值创建零个或多个资源:
variable "cluster_mode" {
default = "enable"
}
locals {
cluster_count = "${var.cluster_mode == "enable" ? 1 : 0}"
non_cluster_count = "${var.cluster_mode == "enable" ? 0 : 1}"
}
resource "aws_elasticache_replication_group" "elasticache_redis_cluster" {
# Configuration for clustered nodes
count = "${local.cluster_count}"
}
resource "aws_elasticache_replication_group" "elasticache_redis_non_cluster" {
# Configuration for non-clustered nodes
count = "${local.non_cluster_count}"
}
这样您就可以描述可能需要的资源的两种配置,并根据 cluster_mode
的值切换创建哪一个。
我正在使用 terraform 配置 elasticache 集群,一切正常! 现在我的要求是我想在 cluster-mode.
的资源内部进行动态配置下面是我常用的代码..
resource "aws_elasticache_replication_group" "elasticache_redis_cluster" {
replication_group_id = "cache"
engine_version = "${var.engine_version}"
node_type = "${var.node_type}"
port = "${var.elasticache_port}"
parameter_group_name = "${var.param_group_name}"
security_group_ids = ["${aws_sg.id}"]
subnet_group_name = "${aws_elasticache_subnet_group.subnet_group.id}"
}
现在我想根据传入的参数进行如下操作
if (${var.cluster_mode == "enable") {
automatic_failover_enabled = true
cluster_mode {
replicas_per_node_group = 1
num_node_groups = 1
}
}
else {
number_cache_clusters = 2
}
以上基于匹配条件的代码应附加在集群配置中。
非常感谢任何帮助!
Terraform Conditionals只支持三元赋值
例如,它们只能是以下形式:
resource "cool_thing" "my_resource" {
is_prod_thing = "${var.env == "production" ? true : false}"
}
三元运算返回的值必须是同一类型,并且没有直接的方法在不同的资源配置之间进行内部切换。
一种可能的解决方法是使用 count
Meta-Parameter 基于变量值创建零个或多个资源:
variable "cluster_mode" {
default = "enable"
}
locals {
cluster_count = "${var.cluster_mode == "enable" ? 1 : 0}"
non_cluster_count = "${var.cluster_mode == "enable" ? 0 : 1}"
}
resource "aws_elasticache_replication_group" "elasticache_redis_cluster" {
# Configuration for clustered nodes
count = "${local.cluster_count}"
}
resource "aws_elasticache_replication_group" "elasticache_redis_non_cluster" {
# Configuration for non-clustered nodes
count = "${local.non_cluster_count}"
}
这样您就可以描述可能需要的资源的两种配置,并根据 cluster_mode
的值切换创建哪一个。