Рекомендации по развертыванию инструментов и сценариев для производства?

У меня есть несколько пакетных процессов, которые запускаются за кулисами для сайта Linux / PHP. Они начинают расти по количеству и сложности, поэтому я хочу приложить к ним небольшой процесс.

В моем исходном дереве есть куча файлов cpp и скриптов, организованных с разработкой, но не с развертыванием. После компиляции всех исполняемых файлов мне нужно поместить различные скрипты и двоичные файлы на кластер машин. Различные машины нуждаются в разных исполняемых файлах, сценариях и конфигурационных файлах для их пакетных процессов. У меня также есть несколько инструментов, которые я написал, которые принадлежат каждой машине. На данный момент этот процесс развертывания является ручным и подвержен ошибкам.

Я предполагаю, что я просто закончу сценарий, который работает в корне дерева источников и строит меньшее дерево всего, что необходимо для любой из машин. Затем я просто перейду к соответствующим машинам. Но мне любопытно, как другие люди управляют этим типом проблемы. Есть идеи?

deployment,release,lamp,release-management,

17

Ответов: 6


19 ов

Здесь есть несколько категорий инструментов. Некоторые люди используют комбинацию инструментов из этих категорий. Иногда я использую, например, и Кукольный и Капистрано. См. « Кукольный» или «Капистрано» - используйте подходящий инструмент для работы для обсуждения.

Инструменты для создания сценариев, предназначенные для развертывания приложения:

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

Инструменты в этой области обычно имеют возможности для отката к предыдущей версии. Таким образом, они проведут проверку источника на каталог release /, и создадут символическую ссылку от «current» до «release /», если все будет хорошо. Если есть проблема, вы можете вернуться к предыдущей версии, выполнив команду, которая удалит «текущий» и свяжет ее с предыдущими версиями / каталогами.

  • Capistrano происходит из сообщества Rails, но является универсальным. Пользователи Capistrano могут быть заинтересованы в deprec , наборе рецептов развертывания для Capistrano.
  • Влад Разведчик является альтернативой Капистрано, снова из сообщества Rails.
  • Напишите свой собственный сценарий оболочки или Makefile.

Параметры для получения файлов в окне производства:

  • Прямая выписка из источника. Не всегда возможно, если в ваших производственных коробках отсутствуют средства разработки, в частности инструменты для управления исходным кодом.
  • Проверить источник локально, затем tar / zip. Используйте scp или rsync для копирования tarball. Это иногда предпочтительнее, например, для развертывания Amazon EC2, где сжатый tarball может сэкономить время / пропускную способность.
  • Проверьте источник локально, затем rsync его в поле производства.

Упаковочные инструменты

Используйте систему упаковки ОС для создания пакетов, содержащих файлы для вашего приложения. Создайте главный пакет, который имеет в качестве зависимостей другие необходимые вам пакеты. RubyWorks система является примером этого, используется для развертывания стек Rails и пример приложения. Затем нужно использовать apt, yum / rpm, Windows msi или что-то другое для развертывания данной версии. Откат включает удаление и переустановку старой версии.

Общие инструменты, предназначенные для установки приложений / конфигураций и поддержки набора систем

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

  • Cfengine - это инструмент в этой категории.
  • Кукольный стремится улучшить Cfengine. У него есть кривая обучения, но многие считают, что стоит потратить время, чтобы выяснить, как это сделать. Как только вы это сделаете, каждый блок периодически проверяет центральный сервер и проверяет, что все в актуальном состоянии. Если кто-то редактирует файл или изменяет разрешение, это обнаруживается и исправляется. Таким образом, в отличие от инструментов развертывания выше, Puppet не только ставит файлы в нужное вам место, но и гарантирует, что они останутся такими.
  • Шеф-повар немного моложе, чем Кукольный с подобным подходом.
  • Smartfrog - еще один инструмент в этой категории.
  • Ansible работает с обычными файлами YAML и не требует агентов, работающих на серверах, которыми он управляет

Сравнение этих и многих других инструментов в этой категории см. В статье Wikipedia, Сравнение программного обеспечения для управления конфигурацией с открытым исходным кодом .


3

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


2

Создайте свои собственные пакеты в формате, который использует ваш дистрибутив, например, пакеты Debian (.deb). Они могут быть скопированы на каждый компьютер и установлены вручную, или вы можете настроить свой собственный репозиторий и добавить его в список источников.

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

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

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


1

Я должен часто развертывать PHP-скрипты и конфигурации Apache нескольким клиентам. Поскольку все они запускают Debian Linux, я настроил репозиторий пакетов Debian на моем сервере, и все, что нужно сделать клиенту, это тип apt-get upgrade, и они получают последнюю версию.


1

Кукла - еще один инструмент, который можно использовать в этой ситуации. Он похож на cfengine - вы создаете модель желаемого развертывания и кукольные фигуры, как получить среду в этом состоянии.

развертывание, выпуск, лампа, релиз-менеджмент,
Похожие вопросы