Всех категорически приветствую!
Публикую универсальный скрипт на python, который позволит вытащить вам из Jenkins все необходимые секреты, пароли, ssh ключи и т.д.
Скрипт.
Прежде всего необходимо объявить пререквизиты. Тут есть класс RegexpDict, для синтаксического сахара, чтобы было удобно обращаться к ключу через точку.
Секцию с vault можно не использовать, если вам будет достаточно только вытащить креды.
Делаем запрос и парсим ответ.
Тут мы делаем запрос к Jenkins по пути /script в качестве data прикладываем groovy скрипт и получаем ответ, в котором ищем тэг pre и текст class =, что будет означать, что мы нашли список кредов. Далее записываем это как строку в один большой файл.
Делим файл.
Для того, чтобы распарсить каждый кред мы делим большой файл на кучу маленьких кредов по разделителю ---- , делаем это командой csplit в Ubuntu
Парсинг кредов по классам креда в Jenkins.
Напишем вспомогательную ф-ю _search_text, для вытаскивания регуляркой из каждого подфайла интересующие нас значения. Также тут есть словарь с паттернами, для удобства обращения к ним через точку далее в коде. Сделан специальный класс RegexpDict
Далее сам код парсинга классов в Jenkins
По каждому подфайлу получившимся после разделения, мы ищем общие id, class_cred, description.
В зависмости от class_cred мы по разному вытаскиваем секрет. Кред класса FileCredentialsImpl не уникален, поэтому распарсить его универсально не получится.
Закомментированные строки необходимы для загрузки в vault, если это вам не нужно так и оставьте.
main ф-я.
тут есть доп. ф-я, которая позволит очищать разделённые подфайлы, если раскомментировать.
Полный код и описание я оставляю на github.
Спасибо за внимание. Посмотрите на моём канале другие полезные статьи, может они вам помогут решить ваши задачи.