gpt4 book ai didi

bash - 无法在 Terraform 中运行 shell 脚本

转载 作者:行者123 更新时间:2023-12-03 23:51:08 26 4
gpt4 key购买 nike

我正在尝试使用 Terraform 中的 local-exec 命令运行 shell 脚本。当我运行此程序时,它不断出现错误“无法打开 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}"
}
}

错误信息:

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'

最佳答案

这里的问题是,terraform 将命令运行为

["/bin/sh" "-c" "appsettings.sh arg1 arg2"]

因此命令解释器将 appsettings.sh 作为命令名称,这与下面的运行非常相似

$appsettings.sh arg1 arg2

这是无法完成的,因为没有这样的命令。因此,要运行该 shell 脚本,您必须提供 shell 脚本的绝对路径或相对路径,如下所示

$ ./appsettings.h
$ /home/user/appsettings.sh # Example

要实现此目的,请重新排列您的命令属性,如下所示

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}"

即添加./appsettings

关于bash - 无法在 Terraform 中运行 shell 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57693621/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com