После запуска моего terragrunt apply-all
на моем этапе CI (по сути, скрипт bash) я получаю свои выходные данные, в данном случае у меня есть только один:
output "cloudrun-hostname" {
value = google_cloud_run_service.cloudrun.status[0].url
description = "API endpoint URL"
}
Как мне передать значение этого вывода в переменную среды, так что в основном я экспортировал переменную следующим образом:
export HOSTNAME=terragrunt-cloudrun-hostname-output
Мне нужна эта переменная с этим значением, чтобы позже я мог преобразовать это значение в другой файл.
Вам нужно будет расширить команду и так:
export HOSTNAME = "$(terragrunt apply-all | awk -F= '/value/ { gsub(" ","",$2);print $2 }')"
ОК, я изменил ответ, проанализировав вывод с помощью awk.
Прошу прощения за путаницу. terragrunt-cloudrun-hostname-output
вообще ничего не значит.
ОК, значит террагрунт должен применяться-все?
Вы можете использовать команду terraform output, т.е.
export MY_ENV=$(terraform output cloudrun-hostname)
после вашего apply-all
.
Выяснил, что только террагрунт выводит-все работают у меня почему-то. Затем я просто выбираю значение из всех строк.
Бьюсь об заклад, output-all
в Terragrunt использует output
в Terraform. Так что я не удивлен. Кроме того, я думаю, что лучше не анализировать вывод Terragrunt или Terraform.
Да, конечно. Terragrunt буквально показывает вам команды Terraform, которые он использовал, такие как terraform output cloudrun-hostname
, но когда я пытаюсь скопировать Terragrunt и использовать те же команды, которые он использовал, я получаю ошибки. По иронии судьбы в документации Terragrunt утверждается, что команда output-all
не работает.
Конечно, но что такое
terragrunt-cloudrun-hostname-output
? Это была просто замена настоящей команды или значения.