Как Puppet может вписаться в цепочку инструментов Continuous Delivery?

Я изучаю Puppet в качестве нашего будущего инструмента развертывания и подготовки в нашем магазине, но сейчас я застрял на том, как создать умную цепочку инструментов непрерывной интеграции/доставки с развертыванием через Puppet.

В любой из наших сред (dev, test, qa, demo, prod) у нас есть ряд компонентов. Нам нужно иметь возможность развертывать каждый компонент отдельно и, возможно, даже одновременно.

Мне нужен способ инициировать (с помощью скрипта) развертывание одного пакета компонентов (=модуль Puppet) и собрать его выходные данные и состояние успеха. Простое ожидание запланированного запроса агента или выполнение «puppet agent --test» на каждом узле в среде недостаточно, потому что он может обнаружить другие ожидающие изменения (я не знаю, находится ли другой компонент также в процессе). процесс развертывания).

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

Итак, мой вопрос: могу ли я использовать марионетку для одновременного развертывания одного пакета (модуля) с одним именем?

А если нет, то где я свернул не туда, когда ехал по этому пути?

Я понимаю, что настройка Puppet без мастера с модулями и манифестами, реплицированными на каждый узел, возможно, могла бы это сделать, но ИМХО установка Puppet без мастера побеждает цель Puppet.

PS: я думаю, что то, чего я пытаюсь добиться, называется «Управляемая оркестровка» в очень поучительном видео Дэймона Эдвардса по адресу Интеграция инструментов DevOps в платформу предоставления услуг (отметка времени около 22:30).


person Barfred    schedule 02.10.2013    source источник


Ответы (3)


установка Puppet без хозяина побеждает цель Puppet.

Только если со скидкой

  1. Богатая марионетка DSL может предложить
  2. Так много рецензируемых модулей сообщества

В противном случае что-то вроде этого дает вам удаленную управляемую оркестровку.

#update manifests etc (version control is the source of truth)
ssh user@host git pull
#run puppet
ssh user@host sudo puppet-apply
person ottodidakt    schedule 03.10.2013
comment
Я согласен с тем, что упомянутые вами пули являются ключевыми преимуществами использования марионетки, но я все же хотел бы настроить мастер-агент, если это возможно. Хотя я бы никогда не приблизился к консоли с графическим интерфейсом Puppet для выполнения какой-либо настройки или манипуляции с системами (если ее нельзя автоматизировать, ее не существует), мне все же нравится иметь центральную панель инструментов, обеспечивающую какой-то обзор и статус посмотреть. Однако этого можно было бы добиться и другими способами, поэтому теперь я рассматриваю установку без ведущего в качестве своего «плана Б». - person Barfred; 05.10.2013

  • Итак, мой вопрос: могу ли я использовать марионетку для одновременного развертывания одного пакета (модуля) с одним именем?

Да, можно, через puppet apply. Сначала вам нужно создать moduledir и модуль, который будет содержать ваши манифесты. например :

  /scratch/user/puppet/local/  # This is your modulepath for local deployment

  # Following contains the manifests for a module name "localmod"
  /scratch/user/puppet/local/localmod/manifests/init.pp 

  # example content of init.pp
  class localmod {
    notify{"I am in in local module....":}
  }

На этой локальной машине вы можете протестировать этот модуль через puppet apply :

 puppet apply -v --modulepath=/scratch/user/puppet/local -e "include localmod"
 echo $? # Get the exit status of the above command
person iamauser    schedule 04.10.2013

Я смотрел видео в момент вашего видео. Есть два типа автоматизации, которые вы можете сделать.

Автоматизация сборки/развертывания приложений, которая может быть достигнута с помощью maven/ant (сборка) и ant/capistrano/chrome/bash/msdeploy (развертывание) или как указано на этом слайде «Установщик».

Автоматизация системы/инфраструктуры может быть достигнута с помощью Chef/Puppet/CFEngine.

Кажется, этот вопрос ... «Как мне создавать приложения с использованием puppet (подразумевается как инструмент системной автоматизации)»

Так просто, овальный инструмент в круглом отверстии. (я не говорил квадрат)

В моей компании мы используем Jenkins и плагин Build Pipeline Integration для создания масштабных многокомпонентных проектов. Например, приложение Java будет использовать ant в задании сборки, следующим цепочечным заданием будет задание «развернуть в разработчике», которое использует Capistrano для развертывания приложения, затем следующее задание в цепочке — «Настроить Dev», которое вызывает Chef для обновления системных конфигураций в среде DEV. Chef используется для настройки приложения. Каждое из этих заданий можно настроить на автоматический и последовательный запуск.

person Electrawn    schedule 03.10.2013
comment
.. овальный инструмент в круглом отверстии.. Да, я думаю, вы правы. В настоящее время у нас слишком много различных инструментов сборки/развертывания (некоторые более полусырые, чем другие), и я поставил перед собой задачу объединить все это вокруг одной (или нескольких) цепочек инструментов. Мне нужно еще раз подумать, не стремился ли я к слишком большой консолидации и слишком ли сильно растягивал Puppet. - person Barfred; 05.10.2013