Я пытаюсь упаковать код Python и Ansible, представленный в проекте, чтобы люди могли повторно использовать его для будущих нужд.
Context
В нашей команде мы недавно начали автоматизировать потоки, связанные со средами сетевого мониторинга. Так что я новичок во всей идее развития.
Я использую следующие инструменты:
- Гитлаб
- Nexus для хранения исходных файлов и пакетов
В данный момент я создаю новое репо для каждого нового потока, который мне нужно автоматизировать (например, регистрация клиентов, вечнозеленые приложения и т. Д.). Я строю код в Python, а также в Ansible. В основном я использую Python для извлечения определенного списка серверов, клиентов и т. Д., Которые должны быть обновлены, развернуты и т. Д., А затем этот список добавляется в качестве лишних переменных в команду ansible-playbook. Итак, структура моих проектов выглядит примерно так:
Evergreen_repo
- Ансибл /
- evergreen_role /
- tasks.yml
так далее
- питон /
- init .py
- some_module.py
и т.д.
Мой первоначальный проект был Customer Onboarding, где для его запуска я использовал gitlab-ci, который:
- создать экземпляр докера
- git clone мой проект и другие проекты, где я храню файлы данных, которые содержат информацию, касающуюся наших клиентов
- тогда я бы сказал, чтобы он запускал скрипт Python, который извлек бы клиента и затем запустил бы сборник пьес. Много относительных команд, например перейдите в две папки, запустите это, затем сделайте это и т.д.
В моем втором проекте я хочу избавиться от git-клонирования и относительных вещей и правильно установить необходимые python / ansible модули / роли из менеджера репозитория, такого как Nexus. Это, очевидно, позволило бы другим людям, например, повторно использовать мой код на Python, импортируя их в свои проекты в будущем.
Issue :
Поэтому встал вопрос о том, как упаковать код.
Для Python я выяснил, как создать версию, упаковать код и отправить его в Nexus, а затем повторно использовать в другом проекте.
Для Ansible, однако, кажется, что с помощью ansible-galaxy cli я не могу загрузить роль непосредственно из http://somegitlab/evergreen/ansible/evergreen_role,. Я могу загрузить эту роль, только если у меня есть весь контент роли непосредственно в корне evergreen_repo, в том числе и метапапку (чтобы anible-galaxy могла распознать ее как роль). Я, очевидно, могу это сделать, но я думаю, что визуально мое репо станет грязным и победит мою первоначальную цель - организовать код репо по папкам в зависимости от инструментов, в которых я разрабатываю, например. Ansible, Python и кто знает, что еще я буду использовать в будущем. Также, если я сделаю это, 'ansible-galaxy install' также скопирует ненужную мне папку python /, потому что у меня уже есть Python.
Вопросы
Итак, у меня сейчас два вопроса:
- Как мне упаковать Ansible роли и легко их использовать?
- Является ли выбранный выше путь даже хорошим для того, как организовать проект и затем упаковать его? Есть ли лучшие способы сделать это? Есть ли у вас похожие среды и каков ваш опыт?