J. *_*ary 4 gitlab terraform terraform0.12+
我有一个ROOT_MODULEmain.tf:
#Root Module - Just run the script
resource "null_resource" "example" {
provisioner "local_exec" {
command = "./script.sh"
}
Run Code Online (Sandbox Code Playgroud)
和script.sh:
echo "Hello world
Run Code Online (Sandbox Code Playgroud)
现在我在其他地方有另一个目录,我用另一个目录创建了一个CHILD_MODULEmain.tf:
#Child Module
module "ROOT_MODULE" {
source = "gitlabURL/ROOT_MODULE"
}
Run Code Online (Sandbox Code Playgroud)
我已经导出了我的计划文件: terraform plan -out="planfile"
但是,当我terraform apply针对计划文件执行此操作时,我当前所在的目录不再知道 script.sh 在哪里。我需要将脚本保存在与根模块相同的目录中。该脚本也在 gitlab 存储库中,因此我没有本地路径来调用它。知道如何将此脚本放入我的子模块/从我的计划文件中执行它吗?
Error running command './script.sh': exit status 1. Output: cannot access 'script.sh': No such file or directory
Run Code Online (Sandbox Code Playgroud)
您可以访问根模块配置的路径,以保留具有path.root内在文件的路径:
provisioner "local_exec" {
command = "${path.root}/script.sh"
}
Run Code Online (Sandbox Code Playgroud)
但是,根据您的问题,您似乎已经交换了根模块和子模块的术语。因此,该模块似乎确实是您的子模块而不是根模块,您需要使用内部访问路径path.module:
provisioner "local_exec" {
command = "${path.module}/script.sh"
}
Run Code Online (Sandbox Code Playgroud)
然后无论您当前的工作目录如何,脚本的路径都将被保留。
这些内在表达式记录在此处。
| 归档时间: |
|
| 查看次数: |
4571 次 |
| 最近记录: |