Terraform 远程执行变量传递
Terraform remote-exec variable passing
我希望将变量传递给新创建的 aws_instance 上的脚本,但我不确定如何操作。这是我所拥有的:
provisioner "file" {
source = "${path.module}/scripts/slave-provisioner.sh"
destination = "/tmp/slave-provisioner.sh"
}
provisioner "remote-exec" {
inline = [
"chmod +x /tmp/slave-provisioner.sh",
"sudo /tmp/slave-provisioner.sh ${split(",",var.zookeeper_ips_list)}"
]
}
我已验证 zookeeper_ips_list 具有正确的 IP 列表。
我通过 terraform apply 得到的错误是:
/tmp/terraform_939984059.sh: 5: /tmp/terraform_939984059.sh: 10.239.12.181: not found
所以基本上我想创建这台机器,然后启动我的配置程序脚本,该脚本会传递一个 IP 列表,以便它可以进行配置。
希望您 运行 terraform 具有最新版本。
好像是terraform获取了变量var.zookeeper_ips_list
的值,但是双引号里面的双引号就麻烦了。你可以尝试通过\
来转义它们,我没有尝试代码,请告诉我结果
"sudo /tmp/slave-provisioner.sh ${split(\",\",var.zookeeper_ips_list)}"
然后你就可以拿出来了,结果也告诉我吧
zookeeper_ips_list = ${split(",",var.zookeeper_ips_list)}
provisioner "remote-exec" {
inline = [
"chmod +x /tmp/slave-provisioner.sh",
"sudo /tmp/slave-provisioner.sh ${zookeeper_ips_list)}"
]
这是通过一些不相关的 bash 清理解决的。 Terraform 的格式正确并且按预期运行。我们没有在 bash 脚本中正确处理传入的 IP 地址,因此它失败了。
Terraform 在调试方面并不是最强大的,因此要找到它有点棘手。
我希望将变量传递给新创建的 aws_instance 上的脚本,但我不确定如何操作。这是我所拥有的:
provisioner "file" {
source = "${path.module}/scripts/slave-provisioner.sh"
destination = "/tmp/slave-provisioner.sh"
}
provisioner "remote-exec" {
inline = [
"chmod +x /tmp/slave-provisioner.sh",
"sudo /tmp/slave-provisioner.sh ${split(",",var.zookeeper_ips_list)}"
]
}
我已验证 zookeeper_ips_list 具有正确的 IP 列表。
我通过 terraform apply 得到的错误是:
/tmp/terraform_939984059.sh: 5: /tmp/terraform_939984059.sh: 10.239.12.181: not found
所以基本上我想创建这台机器,然后启动我的配置程序脚本,该脚本会传递一个 IP 列表,以便它可以进行配置。
希望您 运行 terraform 具有最新版本。
好像是terraform获取了变量var.zookeeper_ips_list
的值,但是双引号里面的双引号就麻烦了。你可以尝试通过\
来转义它们,我没有尝试代码,请告诉我结果
"sudo /tmp/slave-provisioner.sh ${split(\",\",var.zookeeper_ips_list)}"
然后你就可以拿出来了,结果也告诉我吧
zookeeper_ips_list = ${split(",",var.zookeeper_ips_list)}
provisioner "remote-exec" {
inline = [
"chmod +x /tmp/slave-provisioner.sh",
"sudo /tmp/slave-provisioner.sh ${zookeeper_ips_list)}"
]
这是通过一些不相关的 bash 清理解决的。 Terraform 的格式正确并且按预期运行。我们没有在 bash 脚本中正确处理传入的 IP 地址,因此它失败了。
Terraform 在调试方面并不是最强大的,因此要找到它有点棘手。