Terraform执行mkdir命令提示no such file or directory报错问题咨询
报错原因
- 核心问题是误用了
local-execprovisioner的执行逻辑:local-exec的指令固定在运行Terraform命令的本地设备上执行,你在资源块中定义的SSHconnection配置仅对remote-exec类的远程执行 provisioner 生效,完全不会作用于local-exec。 - 你执行Terraform的本地环境不存在
/home/user-a/父目录,因此执行mkdir时抛出no such file or directory错误;你直接在目标主机本地执行命令时路径存在,所以运行正常。
解决方案
根据你的实际使用场景选择对应方案即可:
场景1:需要在远程目标主机创建docker存储目录
将local-exec替换为remote-exec,即可调用你配置的SSH连接到目标主机执行创建命令,建议额外添加-p参数确保父目录不存在时也能自动创建完整路径,修正后的配置如下:
resource "null_resource" "dockerarm1"{ connection { type = "ssh" user = "user-a" password = "sojfadsfsdfsa" host = "dockerarm1.local" } provisioner "remote-exec" { command = "mkdir -p /home/user-a/docker" } }
场景2:需要在运行Terraform的本地设备创建目录
删除无用的SSH连接配置,直接在local-exec的命令中添加-p参数即可:
resource "null_resource" "dockerarm1"{ provisioner "local-exec" { command = "mkdir -p /home/user-a/docker" } }
内容的提问来源于stack exchange,提问作者Brandon Wilson
相关产品推荐
相关产品推荐

