2017-12-19 1 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 변수 값에 따라 0 개 이상의 자원을 만드는 데 사용할 수 있습니다 :

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의 값에 따라 만들어집니다.

관련 문제