我不明白这一点。在做地形计划时,它抱怨该值应该是一个列表。很公平。让我们分步分解。
1 error(s) occurred:
* module.instance-layer.aws_autoscaling_group.mariadb-asg: vpc_zone_identifier: should be a list
Run Code Online (Sandbox Code Playgroud)
VPC 和子网是在另一个模块中使用 terraform 创建的。该模块的输出如下:
"subnets_private": {
"sensitive": false,
"type": "string",
"value": "subnet-1234aec7,subnet-1234c8a7"
},
Run Code Online (Sandbox Code Playgroud)
在我的 main.tf 中,我使用所述模块的输出将其输入到我的模块的变量中,该变量负责处理自动缩放组:
subnets_private = "${module.static-layer.subnets_private}"
Run Code Online (Sandbox Code Playgroud)
这在模块中用于要求变量:
variable "subnets_private" {}
Run Code Online (Sandbox Code Playgroud)
这是我配置 vpc_zone_identifier 的部分:
resource "aws_autoscaling_group" "mariadb-asg" {
vpc_zone_identifier = "${split(",",var.subnets_private)}"
Run Code Online (Sandbox Code Playgroud)
resource "aws_autoscaling_group" "mariadb-asg" {
vpc_zone_identifier = "${list(split(",",var.subnets_private))}"
Run Code Online (Sandbox Code Playgroud)
上面对 list(split() 的尝试应该在理论上可行。由于 terraform 抱怨但不打印实际值,因此很难调试。任何建议表示赞赏。
手动填写值有效。
当非常仔细地阅读文档时,似乎分割并没有吐出干净的元素,然后可以将其放入列表中。他们建议将字符串括在括号 ([" xxxxxxx "]) 中,以便 terraform 将其作为列表选取。
如果我的逻辑是正确的,则意味着
subnet-1234aec7,subnet-1234c8a7
输出为subnet-1234aec7","subnet-1234c8a7
(注意引号),假设 split 命令分隔符周围的引号与此无关。
这是工作解决方案
vpc_zone_identifier = ["${split(",",var.subnets_private)}"]
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
3713 次 |
最近记录: |