Puppet и Docker могут делать много одного и того же, но подходят к ним по-разному.
Puppet управляет файлами + пакетами + сервисами. (Называется trifecta). Docker инкапсулирует двоичные файлы и файлы конфигурации внутри контейнера.
На момент написания этой статьи докер по-прежнему нестабилен и не должен использоваться в производстве. Многие из API, вероятно, будут изменены, пока не будет выпущена версия 1.0.
Даже когда docker действительно станет стабильным, преобразование каждого процесса и конфигурационного файла в контейнеры Docker будет большой задачей.
Puppet, с другой стороны, является стабильным продуктом и поставляется с целой экосистемой инструментов (heira, mcollective, facter, бритва). Эти инструменты могут быть реализованы быстро и не беспокоясь о поломке.
Я очень рекомендую следующие ресурсы.
Видео о том, как управлять стеками приложений с помощью кукол
https://www.youtube.com/watch?v=KSo_mcJxFIA
Подкаст о том, как докер и марионетка могут работать вместе
http://devopscafe.org/show/2014/1/23/devops-cafe-episode-46.html
Статья в марионеточном блоге о том, как интегрироваться с докером
http://puppetlabs.com/blog/building-puppet-based-applications-inside-docker
Еще одна статья в блоге о сосуществовании кукол и докеров
http://puppetlabs.com/blog/can-containers-and-configuration-management-co-exist
Кукольный модуль для взаимодействия с докером
http://docs.docker.io/use/puppet/
Незначительное исправление в терминологии devops. Devops - это больше методология разработки программного обеспечения, в которой разработчики и операторы взаимодействуют, чем какой-либо конкретный инструмент.
Обновить
В настоящее время моя компания использует как марионетку, так и докер. Вот отличная презентация на puppet conf 2014, почему вы должны использовать puppet vs docker. Подарено Джеймсом Тернбуллом, бывшим работодателем марионеток и автором докерской книги.
https://puppetlabs.com/presentations/using-docker-puppet-james-turnbull-kickstarter
Также хороший короткий видеоурок по докеру от sysadmincasts.com
https://sysadmincasts.com/episodes/31-introduction-to-docker
Docker Pros:
- Может быстро раскрутить экземпляр
- Легче учиться, чем кукольный
- Легко сделать 0 простоя
Докер Минусы:
- Контейнеры имеют ограничение 10 ГБ при использовании бэкэнда devicemapper
- Небольшие изменения конфигурации занимают много времени, чтобы перестроить контейнер
- Затраты денег на использование реестра Docker, такого как hub.docker.com, quay.io (Самостоятельный реестр Docker очень глючит и не имеет графического интерфейса пользователя)
- Нет правильной системы инициализации. Некоторые приложения не играют хорошо.
- Нет точного контроля над сетью
- Приложения, которые требуют субоболочек (глядя на вас RVM + ruby), очень сложно правильно работать
- Не может управлять хостами Windows, SLES или другими менее популярными операционными системами.
- В настоящее время оркестровка докеров очень молода.
- В настоящее время невозможно установить ваш /etc/resolv.conf во время сборки
- Различные ошибки, которые мы должны смонтировать / etc / localtime и / dev / urandom, чтобы отобразить в каталоги localtime и urandom хостов.
- Производительность не такая быстрая (несмотря на все утверждения, что докер должен быть на 99% быстрее голого металла, иногда он на 30% медленнее, чем другие машины).
- Небольшие контейнеры по-прежнему имеют сотни мегабайт служебных данных. Наши контейнеры все несколько гигабайт.
Кукольные Плюсы:
- Легко масштабируется
- Работает с существующими серверами (windows, linux, sles)
- Быстро вносить небольшие изменения
- Сильное сообщество других кукольных пользователей и модулей
- Стандартизированный API для установки пакетов на всех платформах
Кукольные Минусы:
- Большие инфраструктуры становятся очень сложными
- Условные зависимости модуля создают код spagetti
- Более тяжелый вес
В настоящее время мы используем puppet для предоставления наших док-контейнеров. Док-контейнеры используются для сборок jenkins и уничтожаются после каждой сборки. Это работает хорошо, и дает нам согласованную среду. Это означает, что нам нужно написать код только один раз, а затем перестроить машины ubuntu, sles и centos. Восстановление контейнеров занимает от 15 до 30 минут и все еще выполняется вручную. Докер отлично подходит для быстрого тестирования виртуальных машин,
Короче говоря, Puppet отлично справляется с управлением существующей инфраструктурой. Докер хорош, если у вас есть зеленое поле, которое на 100% Linux, с технологическим стеком, который может быть заключен в небольшие эфемерные экземпляры. Хотя некоторые функции перекрываются, они не являются взаимоисключающими.
Docker помогает вам подготовить и изначально настроить контейнеры, но он запускает одноразовые команды при инициализации контейнера.
Puppet является самым сильным, когда вы запускаете его как демон, он гарантирует, что ваша конфигурация останется такой, как вы ее указали, поэтому, например, если ваша служба перестает работать, она запустит ее снова.
Одна из лучших особенностей (правильно спроектированных) манипуляций с куклами заключается в том, что они являются идемпотентами ; он должен описывать состояние, в котором вы хотите быть, и не обязательно, чтобы узнать, как туда добраться.
Он также позволяет вам абстрагировать и задавать параметры конфигурации, и вы можете экспортировать параметры, созданные на одном сервере или контейнере, и использовать их на другом (например, собирать список имен узлов узлов для приложения мониторинга).
Я бы сказал, что они определенно служат другим, но связанным целям. В настоящее время я рассматриваю использование существующих манипуляционных манифестов для начала настройки контейнеров, чтобы среды разработки больше походили на производственные среды.
источник