Dev*_*WAH 7 amazon-web-services terraform
我的 terraform 文件中有一个模块,该模块创建了一些执行一些操作的数据库服务器。
首先,它创建一个自动缩放组以使用特定图像,然后创建一些 EBS 卷并附加它们,然后添加一些 lambda 代码,以便在启动实例时注册到路由 53。所以总共有大约 80 行文本。
提炼
module "systemt-sql-db01" {
source = "localmodules/tf-aws-asg"
name = "${var.envname}-sys-db01"
envname = "${var.envname}"
service = "dbpx"
ami_id = "${data.aws_ami.app_sqlproxy.id}"
user_data = "${data.template_cloudinit_config.config-enforcement-sqlproxy.rendered}"
#subnets = ["${module.subnets-enforcement.web_private_subnets}"]
subnets = ["${element(module.subnets-enforcement.web_private_subnets, 1)}"]
security_groups = ["${aws_security_group.unfiltered-egress-sg.id}", "${aws_security_group.sysopssg.id}", "${aws_security_group.system-sqlproxy.id}"]
key_name = "${var.keypair}"
load_balancers = ["${var.envname}-enf-dbpx-int-elb"]
iam_instance_profile = "${module.iam_profile_generic.profile_arn}"
instance_type = "${var.enforcement_instancesize_dbpx}"
min = 0
max = 0
}
Run Code Online (Sandbox Code Playgroud)
然后我有两个参数文件,一个在启动预生产时调用,另一个在启动生产时调用。我不希望这些包含变量以外的任何内容。
问题是对于生产我需要调用模块两次,但对于生产我需要调用它三次。
人们谈论模块的计数功能,但我认为目前还不可能。任何人都可以建议任何其他方法来做到这一点?我想要的是能够在我的参数文件中设置所有 DB ASG 名称的列表变量,然后每次循环调用该模块。
我希望这是有道理的?
谢谢你
编辑模块中的循环是 Terraform 0.13 的测试版(https://discuss.hashicorp.com/t/terraform-0-13-beta-released/9555)。
这是 Terraform 中要求很高的功能,如前所述,尚不支持。Terraform v0.12 的后续版本将引入此功能(https://www.hashicorp.com/blog/hashicorp-terraform-0-12-preview-for-and-for-each)。
我有一个类似的问题,我必须从基本 KMS 模块为多个帐户创建多个 KMS 密钥。我最终创建了使用核心 KMS 模块的第二个模块,第二个模块有许多核心模块的实例,但只需要我输入一次帐户详细信息。
这仍然不理想,但它工作得很好,不会使事情变得过于复杂。
归档时间: |
|
查看次数: |
8830 次 |
最近记录: |