#gitlab #terraform #terraform0.12
# #gitlab #terraform #terraform0.12
Вопрос:
У меня есть ROOT_MODULE с main.tf
:
#Root Module - Just run the script
resource "null_resource" "example" {
provisioner "local_exec" {
command = "./script.sh"
}
и script.sh
:
echo "Hello world
теперь у меня есть другой каталог в другом месте, где я создал CHILD_MODULE с другим main.tf
:
#Child Module
module "ROOT_MODULE" {
source = "gitlabURL/ROOT_MODULE"
}
Я экспортировал свой файл плана: 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
Ответ №1:
Вы можете получить доступ к пути к конфигурации корневого модуля, чтобы сохранить пути для файлов со встроенным path.root
:
provisioner "local_exec" {
command = "${path.root}/script.sh"
}
Однако, исходя из вашего вопроса, похоже, вы поменяли терминологию для корневого модуля и дочернего модуля. Таким образом, этот модуль, по-видимому, действительно является вашим дочерним модулем, а не корневым, и вам необходимо получить доступ к пути с path.module
помощью встроенного:
provisioner "local_exec" {
command = "${path.module}/script.sh"
}
и тогда путь к сценарию будет сохранен независимо от вашего текущего рабочего каталога.
Эти встроенные выражения задокументированы здесь .
Комментарии:
1. Согласен, это ответ, но можете ли вы найти последние документы для этого? Потому что я мог найти только документы версии 0.11.
2. @9bO3av5fw5 Они действительно явно исчезли из документации, но все еще существуют неявно. Обновление ответа.
3. Я думаю, что это документация, которую вы ищете: terraform.io/docs/configuration/expressions /…
4. @MartinAtkins Теперь мы должны пинговать вас в следующий раз, когда кто-то ищет скрытую документацию.