Terraform 在地形变量中设置多行值

Terraform 在地形变量中设置多行值,terraform,amazon-elastic-beanstalk,Terraform,Amazon Elastic Beanstalk,我正在尝试部署beanstalk并将其用作terraform资源的一部分: setting { namespace = "aws:elb:policies:PublicKey" name = "PublicKey" value = var.PUBLICKEY var.PUBLICKEY的值应采用以下格式: -----BEGIN PUBLIC KEY----- sajldlkuewindasmASL/aisud

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

  setting {
    namespace = "aws:elb:policies:PublicKey"
    name      = "PublicKey"
    value     = var.PUBLICKEY
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-----

请问您是否尝试过用这种格式设置变量?或者terraform是否允许在tfvars部分使用这种格式作为变量?

公钥的值应该是一个单行字符串,不带
----开始公钥----
----结束公钥----
,如所示。

尽管本例的答案是将其作为一个变量单线字符串,这里的问题似乎吸引了对Terraform变量中多线字符串的搜索,所以这个答案适用于任何人,如果你不能将它变成单线字符串

在Terraform语言本身(模块内部)或中设置变量时,可以使用写入多行字符串值:

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

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

我不能评论Martin Atkins的回答,但他的建议也可以扩展到Terraform需要调用bash脚本的情况:

data "external" "test" {
  program = ["bash", "test.sh"]

  query = {
    pca_cert = "'${data.aws_acmpca_certificate_authority.pca.certificate}'"
  }
}

请注意,
${data.aws\u acmpca\u certificate\u authority.pca.certificate}
变量

公钥应为单行字符串。例如,再次感谢@Marcin!它解决了部署问题。如果您不介意的话,我将提供一个答案供将来参考。谢谢@Marcin,我遵循了aws cli上如何使用该值并将其应用于terraform的格式,它按预期工作。再次感谢您的推荐谢谢@Martin!我也会试试这个解决方案
data "external" "test" {
  program = ["bash", "test.sh"]

  query = {
    pca_cert = "'${data.aws_acmpca_certificate_authority.pca.certificate}'"
  }
}