Terraform模块-计数= 0时输出错误

时间:2018-07-25 22:52:44

标签: terraform

我对Terraform相对较新-我有一个如下所示的模块设置,如果运行Terraform计划时模块计数为“ 0”,则输出存在问题。现在我已经使用了element(concat解决方法,但是输出PW正常工作,但是我遇到的输出是DCPWUn,出现以下错误:

Counter = Sheets("HelperSheet").Range("MyCounter").Value

代码:

Error: Error refreshing state: 1 error(s) occurred:
* module.PrimaryDC.output.DCPWUn: At column 21, line 1: rsadecrypt: argument 1 should be type string, got type list in:
${element(concat("${rsadecrypt(aws_spot_instance_request.PrimaryDC.*.password_data,file("${var.PATH_TO_PRIVATE_KEY}"))}", list("")), 0)}

2 个答案:

答案 0 :(得分:0)

如错误所述,rsadecrypt的参数类型为list,而不是应为字符串。如果要确保参数是字符串,则需要反转函数调用嵌套以确保rsadecrypt获取字符串:

output "DCPWUn" {
    value = "${rsadecrypt(element(concat(aws_spot_instance_request.PrimaryDC.*.password_data, list("")), 0),file("${var.PATH_TO_PRIVATE_KEY}"))}"

}

答案 1 :(得分:-1)

问题出在这行

${element(concat("${rsadecrypt(aws_spot_instance_request.PrimaryDC.*.password_data,file("${var.PATH_TO_PRIVATE_KEY}"))}", list("")), 0)}

您要达到什么目标?让我们分解一下

  • element(, 0):获取以下列表的第一个元素。
  • concat(,list("")):连接以下字符串列表,然后附加包含空字符串的列表的串联(请注意,第二部分没有用,因为您要附加一个空字符串)。
  • rsadecrypt(,file("${var.PATH_TO_PRIVATE_KEY}")):使用私钥解密以下表达式(错误:以下内容需要为字符串,您将提供一个列表)< / li>
  • aws_spot_instance_request.PrimaryDC.*.password_data这是所有密码数据(而不是字符串)的列表。

我不知道您想要的输出是什么样子,但是有了上面的列表,您也许可以混合匹配功能以满足您的需求。

编辑:修复了一个错误,这要感谢rahuljain1311的评论。