Назад | Перейти на главную страницу

Как правильно автоматизировать git push на сервер

Я нахожусь в процессе переноса наших файлов 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.