【发布时间】:2021-03-08 21:23:53
【问题描述】:
我正在尝试在 Terraform 0.13.5 上运行“local-exec”命令,该命令在 CentOS VM 中运行脚本。这个脚本(我们称之为utility-script.sh)只是创建一个日志文件并安装dnf。在脚本的末尾有一个exit 0 行。还尝试了killall -u ${username},但它仍然停留在“仍在创建..”上。 az vm run-command 命令只是挂起。这以前可以工作,但现在突然挂了。
期望:完成此命令并进入下一个。
实际结果:控制台显示“仍在创建...”直到超时,在 Azure 上为 90 分钟。
resource "null_resource" "run-utility-script" {
# Script execution happens after download
depends_on = [
null_resource.script-download
]
# Create for each centos VM
count = length(var.centos-vm-ids)
triggers = {
current_instance_id = var.centos-vm-ids[count.index]
}
provisioner "local-exec" {
command = "az vm run-command invoke --command-id RunShellScript --name ${var.centos-vm-names[count.index]} -g ${var.resource_group} --scripts \"echo ${var.password} | sudo -S chmod +x ${local.utility_script} ; echo ${var.password} | sudo bash ${local.utility_script}\""
}
}
如何解决这个挂起的问题?
【问题讨论】:
-
为什么不使用
remote-exec供应商而不是local-exec? terraform.io/docs/provisioners/remote-exec.html -
在此处粘贴脚本。另外,如果你想在目标机器上运行这个脚本,它必须是
remote-exec。local-exec在控制器机器上执行。
标签: azure terraform terraform-provider-azure hcl