【发布时间】:2017-01-04 05:46:56
【问题描述】:
我正在使用 Terraform 模块来管理 AWS Elastic Beanstalk 应用程序和环境,并希望将环境变量列表传递给该模块。
由于缺乏更好的解决方案,我目前正在传递名称和值的平面列表,并声明固定数量的 setting 节(见下文)。这似乎行得通,除非当然有人要传递比我预期更多的环境变量。
那么 - 有没有更好的方法来实现这一点?
# 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)}"
}
}
【问题讨论】:
标签: amazon-web-services amazon-elastic-beanstalk terraform