gpt4 book ai didi

amazon-web-services - Terraform 循环模块

转载 作者:行者123 更新时间:2023-12-04 08:01:18 25 4
gpt4 key购买 nike

我的 terraform 文件中有一个模块,它创建了一些执行一些操作的数据库服务器。

首先,它创建一个 Auto Scaling 组以使用特定图像,然后创建一些 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
}

然后我有两个参数文件,一个在启动到预生产时调用,另一个在启动到生产时调用。我不希望这些包含变量以外的任何内容。

问题是对于生产我需要调用该模块两次,但对于生产我需要调用它三次。

人们谈论模块的计数功能,但我认为这还不可能。谁能建议任何其他方法来做到这一点?我想要的是能够在我的参数文件中设置所有 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 key 。我最终创建了第二个使用核心 KMS 模块的模块,第二个模块有许多核心模块的实例,但只需要我输入一次帐户详细信息。

这仍然不理想,但它工作得很好,没有使事情过于复杂。

关于amazon-web-services - Terraform 循环模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45013408/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com