Я использую Terraform для настройки Auto Scaling Gitlab Runner. У меня возникают проблемы при перезаписи файла конфигурации бегуна (для которого я использую шаблоны Terraform), потому что для файла требуется уникальный токен бегуна, который создается после регистрации.
Файл конфигурации выглядит так:
concurrent = 1
check_interval = 60
[[runners]]
name = "POC Group Runner"
url = "https://gitlab.com/"
token = "ABCD"
executor = "docker+machine"
limit = 1 # max number of docker machines to be created
Я хочу прочитать этот маркер бегуна (который называется «ABCD») из этого файла, чтобы я мог использовать его в шаблоне Terraform для перезаписи конфигураций.
В terraform единственная функция "чтения", которая у меня есть, - это "файл", которая читает весь контент, а затем получение из него только токена становится уродливым процессом:
trimspace(replace(split("executor", split("token =", file("/etc/gitlab-runner/config.toml"))[1])[0], "\"", ""))
Можно ли использовать сценарии Bash для создания переменных для шаблонов?
Например, я мог бы использовать следующую команду для чтения токена:
cat /etc/gitlab-runner/config.toml | grep "token =" | awk '//{print $3}' | sed 's/"//g'
Но как мне передать это в шаблон?
Могу я сделать что-то подобное? :
Data "template_file" "runner-config" {
template = "${file("runner-config.toml")"
vars = {
runner_token = "`cat /etc/gitlab-runner/config.toml | grep "token =" | awk '//{print $3}' | sed 's/"//g'`"
}
Есть ли у кого-нибудь лучший способ прочитать что-то конкретное из файла или знает, как использовать сценарии bash в шаблонах?