处理 Terraform 模板文件和 Bash 脚本的解析错误
Parse error dealing with Terraform template file and Bash script
我不确定这个错误哪里出错了。我有一个 Terraform 资源,它创建了一个用于启动配置的 template_file。资源如下:
模板文件
data "template_file" "user_data" {
count = "${(var.enable ? 1 : 0) * var.number_of_zones}" // 3 templates being created
template = "${file("userdata.sh")}"
vars {
ebs_volume = "${count.index == 0 ? ${var.EBS_VOLUME1} : ${var.EBS_VOLUME2}}"
}
}
template_file 用于启动脚本,该脚本在启动时通过自动缩放事件将 EBS 安装到实例。以下是脚本:
userdata.sh
#!/bin/bash
# Attach EBS volume
aws ec2 attach-volume --volume-id "${EBS_VOLUME}" --instance_id `curl http://169.254.169.254/latest/meta-data/instance-id` --device /dev/sdf
EBS_VOLUME=${ebs_volume}
执行此代码后,出现以下错误且无法理解原因:
错误
Error: Error loading autoscaling-group.tf: Error reading config for template_file[user_data]: parse error at 1:22: expected expression but found invalid sequence "$"
有关如何解决此问题的任何建议都会有所帮助。
TF 0.11 非常旧,您应该考虑升级。但是无论如何,您的代码中几乎没有错误(错误的插值,用户数据)。以下应该有效:
variable "number_of_zones" {
default = 3
}
variable "EBS_VOLUME2" {
default = "2222"
}
variable "EBS_VOLUME1" {
default = "1111"
}
variable "enable" {
default = "true"
}
data "template_file" "user_data" {
count = "${(var.enable ? 1 : 0) * var.number_of_zones}"
template = "${file("userdata.sh")}"
vars {
ebs_volume = "${count.index == 0 ? var.EBS_VOLUME1 : var.EBS_VOLUME2}"
}
}
output "test" {
value = "${data.template_file.user_data.*.rendered}"
}
我不确定这个错误哪里出错了。我有一个 Terraform 资源,它创建了一个用于启动配置的 template_file。资源如下:
模板文件
data "template_file" "user_data" {
count = "${(var.enable ? 1 : 0) * var.number_of_zones}" // 3 templates being created
template = "${file("userdata.sh")}"
vars {
ebs_volume = "${count.index == 0 ? ${var.EBS_VOLUME1} : ${var.EBS_VOLUME2}}"
}
}
template_file 用于启动脚本,该脚本在启动时通过自动缩放事件将 EBS 安装到实例。以下是脚本:
userdata.sh
#!/bin/bash
# Attach EBS volume
aws ec2 attach-volume --volume-id "${EBS_VOLUME}" --instance_id `curl http://169.254.169.254/latest/meta-data/instance-id` --device /dev/sdf
EBS_VOLUME=${ebs_volume}
执行此代码后,出现以下错误且无法理解原因:
错误
Error: Error loading autoscaling-group.tf: Error reading config for template_file[user_data]: parse error at 1:22: expected expression but found invalid sequence "$"
有关如何解决此问题的任何建议都会有所帮助。
TF 0.11 非常旧,您应该考虑升级。但是无论如何,您的代码中几乎没有错误(错误的插值,用户数据)。以下应该有效:
variable "number_of_zones" {
default = 3
}
variable "EBS_VOLUME2" {
default = "2222"
}
variable "EBS_VOLUME1" {
default = "1111"
}
variable "enable" {
default = "true"
}
data "template_file" "user_data" {
count = "${(var.enable ? 1 : 0) * var.number_of_zones}"
template = "${file("userdata.sh")}"
vars {
ebs_volume = "${count.index == 0 ? var.EBS_VOLUME1 : var.EBS_VOLUME2}"
}
}
output "test" {
value = "${data.template_file.user_data.*.rendered}"
}