Инструменты развертывания производства
Подобно созданию программного обеспечения, инструменты должны использоваться для развертывания обновлений рабочего сервера (будь то БД, веб-сайт, конфигурации маршрутизатора и т. Д.). Использование инструментов уменьшает определенные типы человеческих ошибок (например, пропущенные шаги).
- Какие инструменты доступны для развертывания программного обеспечения / конфигурации / и т. Д. (Бесплатные или коммерческие)?
пожалуйста
- Список одного инструмента на пост
- Какую часть процесса развертывания он выполняет
- Особые преимущества или недостатки использования этого инструмента (т. Е. Только.NET, поддержка всех платформ LAMP/WAMP и т. Д.)
Не добавляйте инструмент, который уже существует - добавьте комментарии, если у вас есть что-то особенное, чтобы сказать о данном ответе.
-Адам
11 ответов
Puppet - более недавно написанный инструмент, написанный на Ruby, который завоевывает позиции против cfengine.
Мне очень нравится cfengine 3
По сути, он может позаботиться о каждой части процесса развертывания, учитывая правильную конфигурацию: копировать файлы из местоположения, автоматически использовать систему пакетов (например, apt, yum) для установки / обновления пакета, запуска / остановки служб, проверки файлов / страниц содержание.
Я использую его для установки (или проверки наличия) пакетов, и, поскольку я больше разбираюсь в Java, при необходимости развертывания чего-либо я загружаю архив из центральной точки, останавливаю службу Tomcat, копирую архив в Tomcat каталог, запустите службу и убедитесь, что правильное значение можно найти на определенной обслуживаемой странице. Да, cfengine делает все это почти самостоятельно.
Преимущества:
- Это работает (это важная особенность).
- Существует как в Linux/Unix, так и в Windows (нативная)
- Малое использование ресурсов
Недостатки:
- Поначалу немного сложнее в использовании, примеры слишком полны, но повсюду появляются учебники
Хотя Capistrano и является главным инструментом разработчика, он также является хорошим выбором.
Я не уверен, насколько хорошо он поддерживается для платформ Windows, кроме того, что, кажется, работает. Linux/OSX полностью поддерживаются.
Вы можете использовать его для выполнения практически любых операций на серверах развертывания, от обновления файлов до резервного копирования базы данных и управления пользователями.
В сочетании с Git-репозиторием вы получаете управление изменениями и быстрое и простое развертывание.
Инструмент: Chef - это новый инструмент, выпущенный в январе Opscode. Он написан на Ruby и его язык конфигурации - чистый Ruby DSL. Это молодой инструмент в стадии активной разработки, но его используют в производстве несколько компаний.
Chef может управлять всей вашей инфраструктурой, от настройки служб загрузки и запуска PXE до развертывания приложений и управления пользователями. Это очень гибкий, расширяемый и мощный.
Конкретными преимуществами являются чистый Ruby DSL, API-интерфейс RESTful, доступные для поиска данные узлов и множество готовых к использованию кулинарных книг. Благодаря Ruby DSL сложные структуры данных и логика могут использоваться в рецептах, а вместе с RESTful API делают Chef мощным инструментом для программирования инфраструктуры.
В данный момент мы играем с Fabric, он довольно голый, но в духе Capistrano с использованием python.
Для миграций MS SQL Server sp_help_revlogin неоценим для миграции пользователей, чтобы перенести пользователей / SIDs / pwds в новое окно.
Мы используем набор инструментов Shavlik для обработки исправлений, настройки и аудита.
Я не могу думать ни о каких конкретных плюсах или минусах - это работает довольно хорошо, и у нас не было никаких реальных проблем с этим, которые я могу вспомнить. (Это самое лучшее, что я могу сказать об этом - оно работает достаточно хорошо, и мне не нужно об этом думать:)
Я хотел бы дать большой +1 как Capistrano, так и Chef. Оба очень хороши в написании определенных задач по развертыванию и управлению через ssh. Куколка тоже интересна, но старая поговорка обычно гласит: "Мастер на все руки, мастер ни один". Лучше всего было бы найти самый минимальный инструмент для тех заданий, которые вы хотите выполнить, и выполнять его.