Sam*_*gan 7 bash shell azure terraform
我正在尝试使用 Terraform 中的 local-exec 命令运行 shell 脚本。当我运行这个时,它不断出现错误"Can't open appsettings.sh"
。该脚本在手动运行时运行良好。我缺少什么想法吗?
resource "null_resource" "sp" {
triggers = {
shell_hash = "${sha256(file("${path.module}/appsettings.sh"))}"
}
provisioner "local-exec" {
command = "appsettings.sh ${azuread_application.rbac-server-principal.application_id} ${azuread_application.rbac-client-principal.application_id}"
interpreter = ["sh"]
working_dir = "${path.module}"
}
}
Run Code Online (Sandbox Code Playgroud)
错误信息:
Error: Error running command 'appsettings.sh 59942507-xxxx-xxxx-xxxxx 4c64-xxxx-xxxx-xxxxx': exit status 127. Output: sh: 0: Can't open appsettings.sh 59942507-xxxx-xxxx-xxxxx 4c64-xxxx-xxxx-xxxxx'
Run Code Online (Sandbox Code Playgroud)
这里的问题是,terraform 将命令运行为
["/bin/sh" "-c" "appsettings.sh arg1 arg2"]
Run Code Online (Sandbox Code Playgroud)
因此命令解释器将 appsettings.sh 作为命令名,这与下面的运行非常相似
$appsettings.sh arg1 arg2
Run Code Online (Sandbox Code Playgroud)
这是无法完成的,因为没有这样的命令。因此,要运行该 shell 脚本,您必须提供 shell 脚本的绝对路径或相对路径,如下所示
$ ./appsettings.h
$ /home/user/appsettings.sh # Example
Run Code Online (Sandbox Code Playgroud)
要实现此目的,请重新排列您的命令属性,如下所示
command = "./appsettings.sh ${azuread_application.rbac-server-principal.application_id} ${azuread_application.rbac-client-principal.application_id}"
OR
command = "${path.module}/appsettings.sh ${azuread_application.rbac-server-principal.application_id} ${azuread_application.rbac-client-principal.application_id}"
Run Code Online (Sandbox Code Playgroud)
即添加./appsettings
归档时间: |
|
查看次数: |
30963 次 |
最近记录: |