我正在使用 Hashicorp terraform 在 AWS 上创建 MySQL 集群。我创建了一个名为的模块mysql,并希望将创建的第一个实例标记为master. 但是,根据 terraform 文档:
\n\n\n模块当前不支持 count 参数。
\n
我该如何解决这个问题?目前,我的文件中有这些:
\n\n$ cat project/main.tf\nmodule "mysql_cluster" {\n source = "./modules/mysql"\n cluster_role = "${count.index == "0" ? "master" : "slave"}"\n}\n\n$ cat project/modules/mysql/main.tf\n..\nresource "aws_instance" "mysql" {\n ami = "ami-123456"\n instance_type = "t2.xlarge"\n key_name = "rsa_2048"\n\n tags {\n Role = "${var.cluster_role}"\n }\n\n count = 3\n}\nRun Code Online (Sandbox Code Playgroud)\n\n这会引发错误:
\n\n$ project git:(master) \xe2\x9c\x97 terraform plan\n\nError: module "mysql_cluster": count variables are only valid within resources\nRun Code Online (Sandbox Code Playgroud)\n\nvariables.tf我在 mysql 模块和根模块的文件中声明了必要的变量。我该如何解决这个问题?预先感谢您的任何帮助!
count您在资源中的方式module将推断您希望创建 3 个模块,而不是创建的模块内的 3 个资源。您可以规定资源的计数module,但任何使用的逻辑都count.index需要位于模块内。
主.tf
module "mysql_cluster" {
source = "./modules/mysql"
instance_count = 3
}
Run Code Online (Sandbox Code Playgroud)
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"}"
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3280 次 |
| 最近记录: |