В конце моего ответа на вопрос: Как DevOps может помочь улучшить процедуры условного депонирования? У Тенсибая возник вопрос:
Что может понадобиться Капистрано поверх марионетки или шеф-повара?
Мой ответ состоял в том, чтобы опубликовать ссылку на статью Ноа Гиббса "Нужны ли нам и Капистрано, и шеф-повар?" , Лично я все же согласен с мнением Ноа, что наиболее уместно:
- Для развертывания используйте специальный инструмент развертывания, такой как Capistrano.
- используйте специальный инструмент управления конфигурацией, такой как Chef, для управления конфигурацией.
Фундаментальный подход, который использует каждый тип инструмента для выполнения своей задачи, очень отличается:
Инструменты управления конфигурацией - это создание и поддержание желаемого состояния системы, они по своей природе идемпотентны. Примерами инструментов управления конфигурацией являются Chef , Puppet , Ansible , PowerShell DSC , Salt Stack .
Средства развертывания - это доставка версий программного обеспечения в среду хостинга, они предоставляют функциональные возможности для поддержки нескольких версий программного обеспечения на нескольких машинах и управления тем, какая версия является «текущей», они по своей природе являются обязательными по своей природе. Примерами средств развертывания являются Capistrano , Octopus Deploy , Deployer и Command.io .
Я действительно считаю, что инструменты управления конфигурацией могут выполнять работу инструментов развертывания, и в случае неизменяемой инфраструктуры они являются наиболее подходящим инструментом для этой работы, поскольку не нужно поддерживать версии программного обеспечения на целевом объекте.
Вопрос: Достигли ли инструменты управления конфигурацией, такие как Chef, Ansible и Puppet, настолько, что они способны выполнять как идемпотентные, так и императивные модели?