Как объединить Python и Ansible в проекте - PullRequest
0 голосов
/ 17 марта 2019

Я пытаюсь упаковать код 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.

Вопросы

Итак, у меня сейчас два вопроса:

  1. Как мне упаковать Ansible роли и легко их использовать?
  2. Является ли выбранный выше путь даже хорошим для того, как организовать проект и затем упаковать его? Есть ли лучшие способы сделать это? Есть ли у вас похожие среды и каков ваш опыт?
...