【问题标题】:Terraform Invalid reference in Launch Template String启动模板字符串中的 Terraform 引用无效
【发布时间】:2022-01-09 14:53:42
【问题描述】:

我正在尝试使用 NVMe 存储创建 EKS 节点组(供 Spark 使用)。我关注了这篇博文:https://aws.amazon.com/blogs/containers/best-practices-for-running-spark-on-amazon-eks/

我正在尝试通过为 EKS 节点组指定启动模板来在 terraform 上进行设置,如下所示:

data "template_file" "user_data_prepare_nvme" {
  template = <<EOF
#!/bin/bash -xe
IDX=1
for DEV in /dev/disk/by-id/nvme-Amazon_EC2_NVMe_Instance_Storage_*-ns-1; do
  mkfs.xfs ${DEV}
  mkdir -p /pv-disks/local${IDX}
  echo ${DEV} /pv-disks/local${IDX} xfs defaults,noatime 1 2 >> /etc/fstab
  IDX=$((${IDX} + 1))
done
mount -a
EOF
}

但是,我遇到了一个奇怪的错误

Error: Invalid reference
│ 
│   on __data__.tf line 227, in data "template_file" "user_data_prepare_nvme":
│  227: IDX=1 && for DEV in /dev/disk/by-id/nvme-Amazon_EC2_NVMe_Instance_Storage_*-ns-1; do  mkfs.xfs ${DEV};mkdir -p /pv-disks/local${IDX};echo ${DEV} /pv-disks/local${IDX} xfs defaults,noatime 1 2 >> /etc/fstab; IDX=$((${IDX} + 1)); done
│ 
│ A reference to a resource type must be followed by at least one attribute
│ access, specifying the resource name.

我不知道 Terraform 在这里的想法。我的理解是这里只是一个字符串定义?

【问题讨论】:

  • 进展如何?仍然不清楚你能做什么?
  • 一切顺利,谢谢

标签: amazon-web-services terraform amazon-eks


【解决方案1】:

如果${IDX} 是你的bash 变量引用,而不是TF 引用,你必须escape 它:

$${IDX}

您必须对其他 bash 变量引用进行类似的转义。

【讨论】:

    猜你喜欢
    • 2022-01-12
    • 2017-02-23
    • 1970-01-01
    • 1970-01-01
    • 2021-03-22
    • 2021-11-13
    • 2020-03-18
    • 1970-01-01
    • 2020-03-31
    相关资源
    最近更新 更多