Использование puppet (или чего-либо еще) вместо сценария bash для развертывания на основе SSH - PullRequest
1 голос
/ 12 декабря 2011

У меня есть собственный сценарий сборки и развертывания, который работает по SSH и развертывается на серверах (на MacOS).Сценарий bash выполняет множество простых действий, таких как копирование файлов, резервное копирование старых и применение правильных сценариев SQL для базы данных, движущейся вперед.Но есть некоторые продвинутые вещи, такие как запуск процедуры удаленного обновления SQL, от которой можно отсоединиться, и после повторного запуска сценария развертывания он продвигается только в том случае, если сценарий SQL был применен полностью (короче говоря, происходит некоторое управление потоком и bashне очень подходит для таких вещей)

Скрипт уже огромный и беспорядок, так как bash не предназначен для такой детальной логики.Можете ли вы порекомендовать некоторые инструменты, библиотеки, которые облегчили бы жизнь?

Ответы [ 3 ]

3 голосов
/ 13 декабря 2011

Для того, что вы нам рассказали, я думаю, что вам нужен инструмент развертывания, а не инструмент управления конфигурацией. Чтобы упростить, я различу два как это:

  • A инструмент развертывания - это инструмент «push»: при нажатии кнопки выполняются необходимые действия для развертывания. Это одношаговый процесс (он может иметь несколько действий, но запускается один раз).
  • A инструмент управления конфигурацией , как правило, представляет собой инструмент 'pull', в котором ваши серверы периодически проверяют, соответствует ли их конфигурация тому, что сервер CM предписывает им - и применяют изменения, если необходимо. Вы настраиваете свои серверы один раз, и после этого система уверяет, что все в порядке. Это также отличный инструмент для простого клонирования систем.

Для инструментов развертывания я лично знаю Fabric , отличный инструмент Python. Но в мире Ruby есть и Капистрано. Я не знаю других.

Для инструментов CM в настоящее время Puppet и Chef являются предпочтительным выбором людей. Cfengine - более старый инструмент, у которого были некоторые проблемы (я не знаю, изменился ли он).

1 голос
/ 12 декабря 2011

Вот мои рекомендации:

  • Кукольный
  • Шеф-повар
  • cfengine

Это все бесплатно (как в пиве)и позволит вам делать то, что вы хотите.Они потребуют, чтобы вы адаптировали ваш текущий скрипт bash в модули, чтобы соответствовать их дизайну / структуре.Это небольшая работа, но в долгосрочной перспективе она становится лучше, так как фреймворки заботятся о проверке ошибок, конвергентных конфигурациях и многих других вещах, которые вам нужно было бы вручную вставить в свой собственный код, если бы вы делали это самостоятельно.

Ранее я также использовал Opsware для такого рода вещей, но это стоит немалых денег и за то, что вы пытаетесь сделать, не дает значительно большей выгоды.

0 голосов
/ 21 апреля 2014

В некоторых случаях переход от bash-скрипта к полному решению не так прост, как утверждают многие облачные сервисы.

С учетом ' не пытайтесь делать что-то новое, если ваш срок ':

это также подходящее время для рефакторинга bashscripts.

В прошлом я делал автоматические повторяемые развертывания с использованием PaaS или просто с использованием перехватчиков GIT / SVN с использованием deployogi (что является bash): https://github.com/coderofsalvation/deployogi

Я понимаю вашу ситуацию, но я не уверен, справедливо ли говорить, что язык bash подразумевает ' беспорядок ' и ' complex '. Каждый язык позволяет скрыть сложность нет?

Я полагаю, что код (на любом языке) становится слишком сложным, когда время не позволяет нам проводить рефакторинг:)

PaaS великолепен. Но всегда нужно? Я думаю нет.

...