userdata.sh中的HCL无法解释shell脚本变量Terraform

userdata.sh中的HCL无法解释shell脚本变量Terraform,terraform,hcl,Terraform,Hcl,我有一种userdata.sh(请参见下文)用于启动EC2实例。但是,hcl文件无法解释shell脚本变量 我打算设置tls\u disable=true,但由于hcl似乎无法解释BOUNDARY\u tls\u DISABLED此变量,因此一直跳过此部分。任何帮助都将不胜感激 #!/bin/bash BOUNDARY_TLS_DISABLED=true ... cat > /home/ubuntu/boundary-worker.hcl << EOF listener &

我有一种
userdata.sh
(请参见下文)用于启动EC2实例。但是,hcl文件无法解释shell脚本变量

我打算设置
tls\u disable=true
,但由于hcl似乎无法解释
BOUNDARY\u tls\u DISABLED
此变量,因此一直跳过此部分。任何帮助都将不胜感激

#!/bin/bash

BOUNDARY_TLS_DISABLED=true
...

cat > /home/ubuntu/boundary-worker.hcl << EOF
listener "tcp" {
  address = "$BOUNDARY_PRIVATE_IP:9202"
    purpose = "proxy"
%{ if "$BOUNDARY_TLS_DISABLED" == true }
    tls_disable                       = true
%{ else }
  tls_disable   = false
  tls_cert_file = "$BOUNDARY_TLS_CERT_PATH"  
  tls_key_file  = "$BOUNDARY_TLS_KEY_PATH"
%{ endif }

    #proxy_protocol_behavior = "allow_authorized"
    #proxy_protocol_authorized_addrs = "127.0.0.1"
}

worker {
  # Name attr must be unique
    public_addr = "$BOUNDARY_PUBLIC_IP"
    name = "demo-worker-$BOUNDARY_NAME_SUFFIX"
    description = "A default worker created for demonstration"
    controllers = [
    $NEW_VAR
  ]
}

%{ if "$BOUNDARY_KMS_TYPE" == "aws" }
kms "awskms" {
    purpose    = "worker-auth"
    key_id     = "global_root"
  kms_key_id = "$BOUNDARY_KMS_WORKER_AUTH_KEY_ID"
}
%{ else }
kms "aead" {
    purpose = "worker-auth"
    aead_type = "aes-gcm"
    key = "8fZBjCUfN0TzjEGLQldGY4+iE9AkOvCfjh7+p0GtRBQ="
    key_id = "global_worker-auth"
}
%{ endif }
EOF

sudo mv /home/ubuntu/boundary-worker.hcl /etc/boundary-worker.hcl
#/bin/bash
边界_TLS_DISABLED=真
...

cat>/home/ubuntu/boundary-worker.hcl这仅仅是一篇文章的转载吗?为了清楚起见,您应该解释它们之间的区别,或者关闭/删除旧问题,以使用新问题解决旧问题中的任何具体问题,或者更好地编辑旧问题。@ydaetskcoR这是类似的,我找到了我先前问题的解决方案。这是一个更详细的问题。谢谢你的建议,我将结束前面的问题!您似乎混淆了这里的模板语法。
%{}
位仅由模板看到,但您似乎正在将
边界\u TLS\u禁用
设置为脚本后面的shell变量,而不是它可以使用的Terraform变量。为了有效地回答这个问题,您需要编辑您的问题,使其包含一个显示相同行为的示例,使其尽可能简单,但仍然完整。现在,要想让任何人都能给出一个好的答案都很难做到。@ydaetskcoR当然!我会带着编辑返回。