Какую роль играют инструменты управления конфигурацией в неизменной инфраструктуре?

12

Если я использую неизменные серверы / контейнеры, нужны ли мне такие инструменты, как Chef, Puppet, Ansible или Salt? Эти инструменты управления конфигурацией предназначены для создания конфигурации и последующего ее обслуживания.

Если я развертываю неизменяемые серверы, я должен использовать инструменты управления конфигурацией только для первоначальной подготовки?

Дейв Сверски
источник

Ответы:

12

На это есть несколько ответов:

  1. Что-то должно создать эти неизменные образы. Конечно, проще использовать процедурные сценарии в стиле старой школы для создания чего-либо, когда вы начинаете с известного начального состояния, но это может со временем стать очень громоздким (например, Dockerfiles), особенно когда вам в конечном итоге понадобится большая матрица различных изображений для такие вещи, как разные версии программного обеспечения, разные среды и т. д. Packer и другие инструменты для создания образов прекрасно интегрируются с Chef, Ansible, Puppet, Salt и другими.

  2. Неизменность - это спектр, а не двоичный код. Даже в «очень неизменном» развертывании весьма часто иметь некоторые файлы конфигурации, которые требуют управления во время выполнения. Это также место, где вы можете использовать инструменты CAPS, хотя более легкие варианты, такие как Consul Templates или etcd, могут иметь больше смысла в зависимости от общей инфраструктуры. Если вы работаете с неизменяемыми серверами приложений, но ваши серверы баз данных более традиционно управляются с помощью Chef, то может иметь смысл использовать Chef даже на неизменной стороне для незначительных задач управления.

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

  4. Вещи, которые не могут быть неизменными. Неполный ответ, но вся инфраструктура редко на 100% неизменна. Такие вещи, как серверы баз данных и рабочие станции разработчиков (да, они являются частью вашей инфраструктуры), где-то между трудным и невозможным сделать неизменным.

coderanger
источник
Вы делаете довольно много предположений о «многих людях». Те, кто не может генерировать изображения для своей неизменной инфраструктуры, скорее всего, не имеют неизменной инфраструктуры для начала.
Евгений
Существует большой разрыв между «может развертываться с использованием неизменяемых контейнеров» и «может перестраивать и повторно развертывать каждый контейнер в течение 6 часов даже при выполнении других развертываний».
coderanger
И по моему опыту, когда у вас есть этот разрыв (от 6 часов), вы не можете иметь неизменную инфраструктуру. Наличие неизменяемых серверов и быстрое создание неизменных серверов - это не идентичные способности, но они тесно связаны.
Евгений
Многие люди, которые говорят «мы запускаем неизменные контейнеры», не относятся к этой категории. Следовательно, указывая на то, что это проблема для решения, в этом и заключалась вся суть вопроса.
Coderanger
Вы можете определить «неизменное» не означает «нет-один SSH - х в и делает изменения вручную», потому что это не может означать совершенно неизменное, так как они изменяют себя в ходе обычных операций. Даже написание pidfile - это мутация.
Гай
0

Я думаю, что абсолютно неизменная среда - плохая идея.

Инструменты CM, такие как Ansible, Chef, Puppet, могут быть полезны во многих случаях, включая ваш.

Я использую ansible для первоначального предоставления экземпляров виртуальных машин в GCP.

Quarind
источник