Что-то должно создать эти неизменные образы. Конечно, проще использовать процедурные сценарии в стиле старой школы для создания чего-либо, когда вы начинаете с известного начального состояния, но это может со временем стать очень громоздким (например, Dockerfiles), особенно когда вам в конечном итоге понадобится большая матрица различных изображений для такие вещи, как разные версии программного обеспечения, разные среды и т. д. Packer и другие инструменты для создания образов прекрасно интегрируются с Chef, Ansible, Puppet, Salt и другими.
Неизменность - это спектр, а не двоичный код. Даже в «очень неизменном» развертывании весьма часто иметь некоторые файлы конфигурации, которые требуют управления во время выполнения. Это также место, где вы можете использовать инструменты CAPS, хотя более легкие варианты, такие как Consul Templates или etcd, могут иметь больше смысла в зависимости от общей инфраструктуры. Если вы работаете с неизменяемыми серверами приложений, но ваши серверы баз данных более традиционно управляются с помощью Chef, то может иметь смысл использовать Chef даже на неизменной стороне для незначительных задач управления.
Управление нулевым днем. Неизменность хороша, но что вы собираетесь делать, когда следующий OpenSSL 0day упадет? Если у вас есть конвейер сборки, позволяющий сразу создавать образы исправлений и развертывать их, то это замечательно. Но у многих людей, вероятно, не будет такой способности быстрого поворота.
Вещи, которые не могут быть неизменными. Неполный ответ, но вся инфраструктура редко на 100% неизменна. Такие вещи, как серверы баз данных и рабочие станции разработчиков (да, они являются частью вашей инфраструктуры), где-то между трудным и невозможным сделать неизменным.