соответствуют шаблону, например, ANS_* импортировать, как переменные ансибл?
Разрешаю)
Зачем?
Лучше изложить задачу целиком. А так попахивает какой то дичью )
Плэйбук вызывается из gitlab CI. В гитлабе задана куча переменных. Не вижу смысла их всех вручную задавать в параметре ansible-playbook -e
напиши скрипт )))) который возьмет все переменные и сконвертнет их в аргументы запуска ансибл плейбука
Это понятно да создать промежуточный файл и потом его подцепить. Думал, что можно сделать как-то проще, может быть, есть готовый плагин для ансибл?
Ну вот файликом надо передать --extra-vars="@file_with_vars"
Зачем, почему не написать групварс или любой другой варс и использовать нужное вам переменные?
Видимо контролить из репы надо.
И потом запушить в гит? Это не имеет большого смысла и противоречит идеологии. Переменные могут время от времени меняться, и не нужно для этого что-то куда-то пушить. Они так и хранятся в настройках CI.
Кто я такой чтоб запрещать вам так делать? Мне понятней когда из гита видно что переменная приходит из энв, и я не страдаю вспоминая а откуда тут что взялось?
И все эти переменные у вас используются в вашем плейбуке?
Более того, они только ради плейбука и создаются
Тогда сделайте принудительный мап в плейбуке или варс-файле через лукап. ans_var: >- {{ lookup('env', 'ANS_VAR') }}
Это про сути то же самое, что перечислить все переменные в -e при вызове ансибл... Так делали уже...
Берешь API gitlab и выковыриваешь все переменные из репы curl --request GET --header "Authorization: gitlab-ci-token ${CI_JOB_TOKEN}" \ "${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/variables/*
Зачем? Они и так все доступны в окружении при запуске скрипта.
Ну тебе же было лень их перечислять в extra vars. А если добавятся какие?
Кажется, этот вариант был лучше: env | egrep "^ANS_.*" | sed 's/=/: /g' > vars.yml
А как вы ещё хотите? Ансибловые сущности - это совершенно отдельно от переменных окружения. Ансибл не обязан ничего знать о ваших произвольных переменных окружения за исключением строго оговорённых
Сам же написал - не изящно )) Тогда вот так env | sed -re 's|^(ANS_.*)\=(.*)|\1:\2|g'
Обсуждают сегодня