在 terraform 变量中设置多行值

Lag*_*got 3 amazon-elastic-beanstalk terraform

我正在尝试部署 beanstalk 并将其用作aws_elastic_beanstalk_environment terraform 资源的一部分:

  setting {
    namespace = "aws:elb:policies:PublicKey"
    name      = "PublicKey"
    value     = var.PUBLICKEY
Run Code Online (Sandbox Code Playgroud)

var.PUBLICKEY的值应采用以下格式:

-----BEGIN PUBLIC KEY-----
sajldlkuewindasmASL/aisudoiasumasdnowqeuoi@kajsdlkausKJDolkejpwr
sajldlkuewindasmASL/aisudoiasumasdnowqeuoi@kajsdlkausKJDolkejpwr
sajldlkuewindasmASL/aisudoiasumasdnowqeuoi@kajsdlkausKJDolkejpwr
sajldlkuewindasmASL/aisudoiasumasdnowqeuoi@kajsdlkausKJDolkejpwr
sajldlkuewindasmASL/aisudoiasumasdnowqeuoi@kajsdlkausKJDolkejpwr
sajldlkuewindasmASL/aisudoiasumasdnowqeuoi@kajsdlkausKJDolkejpwr
asdhjasd
-----END PUBLIC KEY-----
Run Code Online (Sandbox Code Playgroud)

请问你有没有试过用这种格式设置变量?或者 terraform 是否允许使用这种格式作为 tfvars 部分的变量?

Mar*_*ins 6

尽管这种情况的答案是使其成为单行字符串,但这里的问题似乎通常会吸引对 Terraform 变量中多行字符串的搜索,因此此答案适用于最终在以下情况下的任何人不能只是使它成为单行字符串。

在 Terraform 语言本身(module块内)或.tfvars文件中设置变量时,您可以使用Heredoc 字符串来编写多行字符串值:

example = <<-EOT
-----BEGIN PUBLIC KEY-----
sajldlkuewindasmASL/aisudoiasumasdnowqeuoi@kajsdlkausKJDolkejpwr
sajldlkuewindasmASL/aisudoiasumasdnowqeuoi@kajsdlkausKJDolkejpwr
sajldlkuewindasmASL/aisudoiasumasdnowqeuoi@kajsdlkausKJDolkejpwr
sajldlkuewindasmASL/aisudoiasumasdnowqeuoi@kajsdlkausKJDolkejpwr
sajldlkuewindasmASL/aisudoiasumasdnowqeuoi@kajsdlkausKJDolkejpwr
sajldlkuewindasmASL/aisudoiasumasdnowqeuoi@kajsdlkausKJDolkejpwr
asdhjasd
-----END PUBLIC KEY-----
EOT
Run Code Online (Sandbox Code Playgroud)

命令行通过环境变量设置变量值,Terraform 仅使用它从字面上接收到的值作为给定,因此解决方案是学习如何在 shell 的语法或其他一些编程中编写包含换行符的字符串用于在设置环境变量的情况下运行 Terraform 的语言。对于典型的 Unix 样式的 shell,您可以'在多行字符串周围写上引号,以便按字面意思解释换行符:

export TF_VAR_example='-----BEGIN PUBLIC KEY-----
sajldlkuewindasmASL/aisudoiasumasdnowqeuoi@kajsdlkausKJDolkejpwr
sajldlkuewindasmASL/aisudoiasumasdnowqeuoi@kajsdlkausKJDolkejpwr
sajldlkuewindasmASL/aisudoiasumasdnowqeuoi@kajsdlkausKJDolkejpwr
sajldlkuewindasmASL/aisudoiasumasdnowqeuoi@kajsdlkausKJDolkejpwr
sajldlkuewindasmASL/aisudoiasumasdnowqeuoi@kajsdlkausKJDolkejpwr
sajldlkuewindasmASL/aisudoiasumasdnowqeuoi@kajsdlkausKJDolkejpwr
asdhjasd
-----END PUBLIC KEY-----
'
Run Code Online (Sandbox Code Playgroud)

...但无论哪种方式,这最终都会成为您启动 Terraform 的任何 shell 或其他程序的问题,而不是 Terraform 本身,因此不可能给出适用于所有情况的通用答案。编写.tfvars文件是最可预测的方法,因为 Terraform 本身负责解析它。


Mar*_*cin -2

的值PublicKey应该是不带和的单行字符串,如AWS 文档中所示。-----BEGIN PUBLIC KEY----------END PUBLIC KEY-----