【发布时间】:2017-11-28 05:10:49
【问题描述】:
我尝试通过参数化名称来管理我的 terraform 模板中的应用程序版本。这是一种尝试,只要应用程序的内容发生变化,我们的 CI 流程就会创建一个新的应用程序版本。这样,在 elasticbeanstalk 中,我可以保留历史应用程序版本的列表,以便我可以回滚等。这不起作用,因为同一应用程序版本不断更新,实际上我丢失了所有应用程序版本的历史记录。
resource "aws_elastic_beanstalk_application_version" "default" {
name = "${var.eb-app-name}-${var.build-number}"
application = "${var.eb-app-name}"
description = "application version created by terraform"
bucket = "${aws_s3_bucket.default.id}"
key = "${aws_s3_bucket_object.default.id}"
}
然后我尝试参数化逻辑资源引用名称,但 terraform 不支持。
resource "aws_elastic_beanstalk_application_version" "${var.build-number}" {
name = "${var.eb-app-name}-${var.build-number}"
application = "${var.eb-app-name}"
description = "application version created by terraform"
bucket = "${aws_s3_bucket.default.id}"
key = "${aws_s3_bucket_object.default.id}"
}
目前我的解决方案是在 terraform 之外管理我的应用程序版本,这令人失望,因为还有其他相关资源,例如 S3 存储桶和权限需要担心。
我错过了什么吗?
【问题讨论】:
-
我的理解是,
var.build-number是独一无二的,对吧?所以名称name = "${var.eb-app-name}-${var.build-number}"也将是唯一的。您可以将其更新和更改为输入变量。然后你可以用它控制EB应用程序版本。那么真正的问题是什么?请提供任何详细信息。 -
正如我所描述的,我的目标是在每次
${var.eb-app-name}-${var.build-number}更改时创建一个新的应用程序版本。即我们 CI 流程中的每个新构建。这不会发生。我们只是不断地拥有一个使用新名称和捆绑包更新的应用程序版本。这意味着我们不能回滚到以前的版本
标签: amazon-web-services amazon-elastic-beanstalk terraform