【发布时间】:2016-10-30 04:11:32
【问题描述】:
我希望将变量传递给新创建的 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 列表进行配置。
【问题讨论】:
-
这对我来说看起来很奇怪,因为您正在使用逗号分隔的字符串并将其转换为数组,然后将其传递给您的配置程序脚本。我不是 100% 确定预期的行为实际上是什么,因为我希望它希望你将它作为字符串传递。你真的打算这样做吗?或者你最好用空格替换逗号(使用
replace())? -
我们将这些 IP 地址传递到一个 bash 脚本中,该脚本只会更新我们集群的 zookeeper 配置。只用一些 bash 格式就解决了这个问题。
标签: terraform