3

私はTerraformモジュールを使用してAWS Elastic Beanstalkのアプリケーションと環境を管理しており、モジュールに環境変数のリストを渡したいと考えています。aws_elastic_beanstalk_environment設定をTerraformモジュールに渡す方法

私は現在、より良い解決策がないため、名前と値のフラットなリストを渡しており、固定数のsettingスタン(以下を参照)を宣言しています。もちろん、誰かが私が予想したよりも多くの環境変数を渡すことがない限り、これはうまくいくようです。

これを実現するにはより良い方法がありますか? HCL繰り返さ対象ブロックで

# file: main.tf 
variable env_vars { 
    default = ["FIRST_ENV_VAR", "1", "SECOND_ENV_VAR", "2"] 
} 

provider "aws" { 
    region = "eu-central-1" 
} 

module "beanstalk-app" { 
    source = "./beanstalk" 
    env_vars = "${var.env_vars}" 
} 

# file: beanstalk/main.tf 
variable "env_vars" { 
    type = "list" 
} 

resource "aws_elastic_beanstalk_application" "app" { 
    name = "myapp" 
} 

resource "aws_elastic_beanstalk_environment" "env" { 
    name    = "myapp-env" 
    application   = "${aws_elastic_beanstalk_application.app.name}" 
    solution_stack_name = "64bit Amazon Linux 2016.03 v2.1.3 running Tomcat 8 Java 8" 

    setting { 
    namespace = "aws:elasticbeanstalk:application:environment" 
    name  = "${element(var.env_vars, 0)}" 
    value  = "${element(var.env_vars, 1)}" 
    } 

    setting { 
    namespace = "aws:elasticbeanstalk:application:environment" 
    name  = "${element(var.env_vars, 2)}" 
    value  = "${element(var.env_vars, 3)}" 
    } 

    setting { 
    namespace = "aws:elasticbeanstalk:application:environment" 
    name  = "${element(var.env_vars, 4)}" 
    value  = "${element(var.env_vars, 5)}" 
    } 
} 

答えて

0

リストに相当します(here を参照してください。そのため、あなたがsettingsにマップの(リスト)変数を渡すことができます。

variable "settings" { 
    type = "list" 
    default = [ 
    { 
     namespace = "aws:elasticbeanstalk:application:environment" 
     name  = "FOO" 
     value  = "BAR" 
    }, 
    { 
     namespace = "aws:elasticbeanstalk:application:environment" 
     name  = "BAZ" 
     value  = "HAZ" 
    }, 
    ] 
} 

resource "aws_elastic_beanstalk_environment" "env" { 
    name    = "myapp-env" 
    application   = "${aws_elastic_beanstalk_application.app.name}" 
    solution_stack_name = "64bit Amazon Linux 2016.03 v2.1.3 running Tomcat 8 Java 8" 
    setting = ["${var.settings}"] 
} 
関連する問題