Я нахожусь в процессе переноса наших файлов ansible на наш внутренний сервер gitlab, и у меня возникла некоторая путаница по поводу различных способов синхронизации каталога ansible ролей с проектом gitlab. Конечная цель состоит в том, чтобы моя команда добавляла / редактировала файлы через веб-среду IDE на gitlab, фиксировала изменения и отправляла эти изменения на сервер ansible (awx). Таким образом, участникам команды Windows не нужно входить в командную строку и запускать извлечение. Я могу придумать несколько разных способов сделать это, но у меня есть некоторая путаница по поводу различных функций gitlab.
1) Я смотрел зеркалирование репо, в частности, нажимаю зеркало на 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.