gpt4 book ai didi

terraform - 基于 terraform 中 count.index 的属性差异

转载 作者:行者123 更新时间:2023-12-04 01:56:31 24 4
gpt4 key购买 nike

我正在使用 Hashicorp terraform 在 AWS 上创建一个 MySQL 集群。我创建了一个名为 mysql 的模块,并希望将创建的第一个实例标记为 master 。但是,根据 terraform 文档:

Modules don't currently support the count parameter.



我该如何解决这个问题?目前,我的文件中有这些:
$ cat project/main.tf
module "mysql_cluster" {
source = "./modules/mysql"
cluster_role = "${count.index == "0" ? "master" : "slave"}"
}

$ cat project/modules/mysql/main.tf
..
resource "aws_instance" "mysql" {
ami = "ami-123456"
instance_type = "t2.xlarge"
key_name = "rsa_2048"

tags {
Role = "${var.cluster_role}"
}

count = 3
}

这会引发错误:
$  project git:(master) ✗ terraform plan

Error: module "mysql_cluster": count variables are only valid within resources

我在 mysql 模块和根模块的 variables.tf 文件中声明了必要的变量。我该如何解决这个问题?提前感谢您的帮助!

最佳答案

您在 count 资源中拥有 module 的方式会推断您希望创建 3 个模块,而不是创建模块中的 3 个资源。您可以从 module 资源中规定计数,但使用 count.index 的任何逻辑都需要位于模块内。

主文件

module "mysql_cluster" {
source = "./modules/mysql"
instance_count = 3
}

mysql.tf
resource "aws_instance" "mysql" {
count = "${var.instance_count}"
ami = "ami-123456"
instance_type = "t2.xlarge"
key_name = "rsa_2048"

tags {
Role = "${count.index == "0" ? "master" : "slave"}"
}
}

关于terraform - 基于 terraform 中 count.index 的属性差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50186380/

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