Одним из важных факторов, определяющих, как вы должны собирать серверы, AMI и планирование инфраструктуры, является ответ на вопрос: в производственной среде, как быстро мне понадобится запуск нового экземпляра?
Ответ на этот вопрос определит, сколько вы вложите в AMI по сравнению с тем, сколько вы создадите после загрузки.
ПРИМЕЧАНИЕ. Я имею опыт работы с Chef Server, поэтому я буду использовать терминологию Chef, но концепции такие же для любого другого стека управления конфигурацией.
Общее практическое правило - относиться к своей «инфраструктуре как к коду». Это означает, что подумайте о процессе запуска экземпляров, создании пользователей на этой машине и о процессе управления файлами known_hosts и ключами SSH так же, как и о коде вашего приложения. Возможность отслеживать изменения инфраструктуры в исходном коде значительно упрощает управление, повторное развертывание и даже CI.
Это введение от шеф-повара охватывает терминологию поваренных книг, рецептов, ресурсов и т. д. . Он показывает вам, как создать простой стек LAMP, и как вы можете так же легко перезапустить его с помощью одной команды.
Итак, учитывая пример в вашем вопросе, на высоком уровне я бы сделал следующее:
- Запустите базовый Ubuntu Linux AMI (в настоящее время 14.04) с помощью сценария Cloudformation.
- В разделе UserData конфигурации экземпляра загрузите процесс установки Chef Client.
- Запустите рецепт, чтобы создать пользователя.
- Запустите рецепт для создания файла known_hosts для пользователя.
Такие инструменты, как Chef, используются потому, что вы можете разбить инфраструктуру на небольшие блоки кода, выполняющие определенные функции. Уже существует множество созданных и доступных кулинарных книг, в которых реализованы базовые строительные блоки для создания служб, установки пакетов программного обеспечения и т. Д.
Тем не менее, бывают случаи, когда вам приходится отклоняться от лучших практик в интересах вашей конкретной области и требований. Могут возникнуть ситуации, когда, учитывая все преимущества управления инфраструктурой, вам все равно придется вносить элементы в AMI.
Представим, что ваше приложение обрабатывает изображения и требует использования ImageMagick. Предположим, вам нужно будет собрать ImageMagick из исходников. Если бы вы сделали это с помощью Chef Recipes, это могло бы добавить еще 7 минут простой компиляции ImageMagick к обычному времени загрузки экземпляра. Если ожидание 10–12 минут - это слишком долго, чтобы новый экземпляр подключился к сети, вы можете подумать о том, чтобы создать собственный AMI, в котором ImageMagick уже скомпилирован и установлен.
Это приемлемое решение, но вы должны иметь в виду, что управление собственным парком предварительно запеченных AMI увеличивает нагрузку на инфраструктуру. Вам нужно будет обновлять свои пользовательские AMI по мере выпуска новых AMI, расширения до разных типов инстансов и до разных регионов AWS.
person
Mikelax
schedule
21.03.2015
user data
, определенной в CloudFormation. - person BMW   schedule 03.03.2015user data
? - person Saqib Ali   schedule 03.03.2015