Terraform执行本地Bash脚本失败,报错/bin/bash不在PATH路径中
看起来你是在Windows环境下用PowerShell、GitBash或者WSL来跑Terraform的local-exec脚本对吧?这个报错的核心问题是Terraform找不到bash的执行路径——毕竟Windows默认的PATH里没有/bin/bash这种类Unix环境下的路径。我给你几个可行的解决办法:
方法一:针对WSL环境调整命令
如果是用WSL来运行脚本,你可以直接把命令改成通过WSL执行,这样就能调用WSL内部的bash了:
resource "null_resource" "aks_configure" { provisioner "local-exec" { command = "wsl ${path.module}/setupcluster.sh -r R21Kubernetes-newprodenveu -l francecentral -c R21KubernetesCluster-newprodenveu -e jason.content@cority.com -d argocdnewprodenveu.reporting21.com" } }
这样Terraform会调用Windows的wsl命令,让WSL来处理你的bash脚本,自然就能找到正确的bash环境了。
方法二:针对GitBash指定解释器路径
如果用的是GitBash,你需要在local-exec里明确指定bash的完整路径作为interpreter。GitBash的bash通常在C:\Program Files\Git\bin\bash.exe,你可以这么配置:
resource "null_resource" "aks_configure" { provisioner "local-exec" { command = "${path.module}/setupcluster.sh -r R21Kubernetes-newprodenveu -l francecentral -c R21KubernetesCluster-newprodenveu -e jason.content@cority.com -d argocdnewprodenveu.reporting21.com" interpreter = ["C:/Program Files/Git/bin/bash.exe", "-c"] } }
注意路径要用正斜杠(/),避免Windows路径的转义问题。另外也可以把GitBash的bin目录(比如C:\Program Files\Git\bin)加到系统的PATH环境变量里,这样Terraform就能直接找到bash.exe了,不用每次都写完整路径。
方法三:检查执行环境的一致性
还有个小细节要注意:你运行Terraform的终端环境,要和脚本依赖的环境一致。比如如果是在PowerShell里跑Terraform,默认是Windows的cmd环境,没有bash;这时候要么切换到GitBash或者WSL终端里执行Terraform命令,要么就像上面两种方法那样指定正确的bash路径。
你可以先试试第一种方法(如果用WSL的话),或者第二种方法(GitBash),应该就能解决这个找不到bash的问题了。
备注:内容来源于stack exchange,提问作者Jason

