2016-12-28 2 views
0

Спасибо, что нашли время, чтобы прочитать мой вопрос. Я ищу немного руководство по опыту с новым рабочим процессом. Недавно я обновлял и добавлял Ansible для некоторых задач devops, а также переносил наши репозитории на выделенный сервер GitLab.Автоматическое развертывание с Gitlab (и, возможно, Ansible)

Текущие узлы:

  • 5 производственных сервера
  • 2 сервера развитие
  • сервера
  • 2 DB
  • 1 выделенного Gitlab сервера хостинга репо для всех сайтов
  • 1 сервера управления анзиблем (со всеми ящиками в инвентаре)

То, что я пытаюсь выполнить, - это автоматизированный процесс, но я не уверен, что я должен использовать стандартные веб-хосты, бегуны или, если возможно, я должен подключиться к нашему серверу управления Ansible для управления задачами развертывания.

В основном, каждый репо имеет master (производство) и develop (развитие) ветвей. Я хочу развернуть ветвь develop АВТОМАТИЧЕСКИ, когда кто-то подталкивает к этой ветке. Кроме того, я хочу развернуть master в производство MANUALLY, когда запрос о слиянии одобрен и объединен в нашу производственную линию.

Я новичок в Ansible и хорошо работаю прямо сейчас с задачами devops, но не уверен относительно его потенциала с Git и такой ситуацией, как моя. Любое направление от кого-то с опытом было бы невероятно полезным и самым ценным.

+3

Вы уверены, что это сообщение (я даже не буду называть его вопросом) не соответствует критериям, указанным в разделе [не спрашивать] (http://stackoverflow.com/help/dont-ask)? Даже большинство из них? – techraf

+1

Настройка персонального CI/CD для ваших потребностей в бизнесе довольно обширна для вопроса SO. –

+0

Я не искал отработанного ответа, но более образованного ответа относительно жизнеспособности (или его отсутствия) использования Ansible с рабочим процессом git, таким как мой. –

ответ

0

Мы используем возможность для развертывания на всех серверах. Ansible имеет хорошую интеграцию с git, git - встроенный модуль в Ansible. Все, что вам нужно, это какой-то фрагмент кода, как это в вашем анзибль пьес:

- git: repo=<your_git_repo> dest=<destination_directory_for_code> clone=yes version={{ branch_name }} depth=1 
    tags: 
    - <any_tags> 
    sudo: no 

Из моего опыта, я могу вам сказать 2 вещи:

  1. развертывание только ветви, что требуется, а не клонировать цельные Репо помогает, особенно когда репо является большим. (показано в приведенном выше коде)

  2. с использованием depth = 1 указывает, что вы по существу сохраняете журнал фиксации только последней сделанной фиксации. Это не только помогает уменьшить размер клона, но и знать, что было последним фиксатором, чтобы выяснить, подходит ли развернутый код.

На автоматической части развертывания, вы можете сохранить те же сценарии на CI, может быть Дженкинс/бамбук/Travis CI/любой другой CI держать избирательные отдельные ветви для каких-либо изменений в одних и тех же заданий развертывания. Каждый ci имеет хорошую интеграцию с git (например, Jenkins git plugin).

Мне повезло с результатомExample Provisioning and Deployment using ANsible, который я нашел действительно интересным.

Я порекомендую вам пройти через документальную документацию, в которой он довольно обширен. Я лично сам использую документальную документацию для командной строки :)

Надеюсь, это поможет.

Редактировать: Я забыл добавить, что плагин git отлично работает с github/gitlab/bitbucket, поэтому вы можете использовать git-плагин в ci для gitlab без каких-либо проблем.

Смежные вопросы