2017-12-19 17 views
1

terraformを使用してelasticacheクラスタを設定していて、すべて正常に機能します! 私の必要条件は、クラスタモードのリソース内で動的な設定をしたいということです。以下はterraformのaws_elasticache_replication_groupの設定が動的に変更される

私の共通のコード..です

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 
    } 

上記のコードは、一致条件に基づいてクラスタの構成内に追加する必要があります。

ご協力いただきますようお願い申し上げます。

答えて

1

Terraform Conditionalsは、3値の値の割り当てのみをサポートします。

例えば、彼らは唯一の形態であることができる:

resource "cool_thing" "my_resource" { 
    is_prod_thing = "${var.env == "production" ? true : false}" 
} 

値は同じタイプでなければなりません三項演算から返され、内部的に異なるリソース構成を切り替えるには直接的な方法はありません。

可能な回避策は、変数の値に基づいて、ゼロ以上のリソースを作成するためにcountMeta-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}" 
} 

あなたが必要になることがありますリソースの両方の構成を説明し、どの切り替えることができますこの方法1つはcluster_modeの値に基づいて作成されます。

関連する問題