Почему люди используют Кукольный/Шеф-повар с Amazon Cloud Formation вместо того, чтобы просто использовать CloudInit?

Мы планируем использовать экземпляры AMI EC2, которые не являются "предварительно испеченными". То есть когда они развернуты, они являются голыми установками AWS linux. Наш процесс начальной загрузки будет задействовать различные установки, которые нам нужны, например. python, tomcat. У нас будет минимум 3 экземпляра и максимум 8.

Учитывая эти требования, полезно использовать Кукольный/Шеф-повар, а не использовать Amazon Cloud Formation (CloudInit)?

Лучше всего я вижу, что если мы использовали Puppet, тогда у нас было бы декларативное программирование, которое легче было бы проверить, чтобы посмотреть, что происходит против script. Также CloudInit имеет ограничение размера 16k script, с которым мы можем или не можем работать.

Кто-нибудь перешел из CloudInit в Puppet или Chef по той причине, что они могут предоставить здесь в ответ на мой вопрос?

Ответ 1

Есть ли преимущества над CloudInit? Да, абсолютно, многие из них!

Конечно, вы можете писать сверху вниз, как только CloudInit скрипты для предоставления сервера. Но что происходит, когда вам нужно изменить файл конфигурации, добавить пользователя, обновить пакет или установить новый пакет? В итоге вы входите на серверы или записываете сценарии, чтобы сделать это, и неизбежно несоответствующее состояние серверов.

CloudInit не является управлением конфигурацией. Если вы решите начать использовать программное обеспечение для управления конфигурацией, используйте облачную инициализацию только для одной задачи: для загрузки обработчика Puppet/Chef/other.

Puppet не просто помогает вам автоматизировать установку пакетов, устанавливать ssh-ключи или настраивать кучу Tomcat. Это обеспечивает состояние вещей. Когда разработчик устраняет неполадки приложения Java в 3 часа ночи и изменяет конфигурацию Tomcat, Puppet изменит его. Вы можете быстро изменить версию Python для всех или групп узлов, а если кто-то установит другую версию, Puppet изменит ее.

Когда ваш стек приложения изменяется и вы начинаете использовать, скажем, RabbitMQ или Jetty, или новую RDBMS, вы можете легко протестировать и развернуть изменения на десятки или тысячи серверов.

Существует множество других причин использовать программное обеспечение для управления конфигурацией, такое как отчетность, аудит и соответствие требованиям безопасности.

Ответ 2

Весь смысл управления конфигурацией - это отталкивание машин предсказуемо и последовательно. CloudFormation и cloudinit великолепны, когда вы ограничены исключительно AWS (хотя отладка шаблонов CloudFormation является несчастным опытом), но что касается приложений, которые используют как ресурсы центров обработки данных, так и AWS, или локальные среды тестирования, или машины разработки?

Если вы существуете исключительно в AWS, я полагаю, вы могли бы уйти с cloudinit и ничего другого, но я не уверен, что он реалистичен для приложений любого масштаба (Netflix, например, предварительно испекает их ОИМ с использованием технологий OSS, они 'написано и выпущено в мир, рассмотрим это видео для деталей). Высокодоступные приложения трансрегиональные, часто основанные на VPC, имеют тенденцию к резервному копированию в центры обработки данных через VPN, и это даже не касается демонстрационных, промежуточных, тестовых или сред разработки. Как кто-то, кто поручил создавать машины, последнее, что я хочу сделать, это повторить работу или застрять отладку нескольких методов подготовки.

Следовательно, Шеф-повар или Кукольный. Они работают так же хорошо для AWS, как и для моего центра обработки данных, а также для моей машины разработки Vagrant, как и для демо-окружения, которые мне иногда нужны на лету. Я бы предпочел запустить Chef или Puppet из облачного, чем поддерживать как облачный, так и Chef или Puppet.

Ответ 3

Если вы выбрасываете серверы, скажем, бегаете за группой автомасштабирования, я бы сказал, что cloudinit, вероятно, достаточно. Скрипты linux shell или сценарии Windows PowerShell должны делать трюк.

Если его длинный сервер, на котором вы планируете управлять, может быть, шеф-повар, марионетка или докер может дать вам преимущество, как указано в принятом ответе. Если вы не видите преимущества после их использования, вам, вероятно, не нужен инструмент.

Ответ 4

По моему опыту, есть простые вещи, которые легко сделать с помощью готовых графических инструментов, которые предоставляет AWS, но по мере того, как вы переходите к более сложным вещам, вы начинаете выяснять, что существуют ограничения на то, что вы можете делать только с их инструментами.

В этот момент вы можете либо остановиться, либо найти другие инструменты (например, Chef или Puppet), которые помогут вам достичь этих более сложных целей, а также сделать более простые вещи.

Ваш выбор.