Я в процессе переноса наших файлов ansible на наш внутренний сервер gitlab, и у меня возникла некоторая путаница по поводу различных способов синхронизации каталога ansible ролей с проектом gitlab. Конечная цель - заставить мою команду добавлять / редактировать файлы через веб-среду IDE на gitlab, фиксировать изменения и отправлять эти изменения на сервер ansible (awx). Таким образом, участникам команды Windows не нужно входить в командную строку и запускать извлечение. Я могу придумать несколько разных способов сделать это, но у меня есть некоторая путаница по поводу различных функций gitlab.
1) Я смотрел на зеркалирование репо, в частности, на push mirror на gitlab. Похоже, чтобы это работало, это должно быть чистое репо. Когда я создаю голое репо на доступном сервере, я не вижу файла repo.git для включения в URL-адрес. Это не похоже на то, для чего предназначено зеркалирование, но мне интересно, является ли это жизнеспособным решением.
2) Веб-хуки, я смотрел на веб-хуки после получения, но не понимаю, как их применять. На сервере работает AWX (Ansible Web GUI), и я предпочитаю не настраивать другой веб-сервер для прослушивания веб-перехватчиков. Если только я не неправильно понимаю, как работают веб-хуки.
3) Cron - Настроить cronjob для извлечения каждую минуту. Я знаю, что это сработает, но в лучшем случае это хакерство. Я бы предпочел использовать инструменты и функции git, если это возможно.
Я понимаю риск автоматического перехода в рабочую среду, хотя в этом случае мы не выполняем критические операции на AWX, поэтому риск невелик. На правильном ли я пути с любым из них?
Взгляните на функции CI / CD GitLab ; это предполагаемый способ запуска нескольких сценариев действий после каждого изменения в репозитории (т.е. каждый git push
или каждый коммит веб-IDE).
Простой конвейер CI может запускать что-то вроде ansible-lint
в качестве проверки синтаксиса, а затем выполните scp
на сервере AWX.
Первая настройка может показаться довольно сложной, потому что вам нужно настроить GitLab Runner, который является компонент для фактического выполнения ваших сценариев CI. Для вашего варианта использования просто установите бегун на свой сервер GitLab / виртуальную машину.
Вы также можете рассмотреть ansible-pull
, который запускается на целевом хосте (например, через cron), проверяет репозиторий на наличие изменений и запускает playbook, если репо было обновлено.
ANSIBLE-PULL(1) System administration commands ANSIBLE-PULL(1)
NAME
ansible-pull - pulls playbooks from a VCS repo and executes them for
the local host
SYNOPSIS
ansible-pull -U <repository> [options] [<playbook.yml>]
DESCRIPTION
is used to up a remote copy of ansible on each managed node, each set
to run via cron and update playbook source via a source repository.
This inverts the default push architecture of ansible into a pull
architecture, which has near-limitless scaling potential.
The setup playbook can be tuned to change the cron frequency, logging
locations, and parameters to ansible-pull. This is useful both for
extreme scale-out as well as periodic remediation. Usage of the
'fetch' module to retrieve logs from ansible-pull runs would be an
excellent way to gather and analyze remote logs from ansible-pull.