Назад | Перейти на главную страницу

Каковы общие стратегии управления конфигурацией на EC2?

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

Я собрал наш метод начальной загрузки EC2 из десятков сообщений в блогах. Все еще в стадии разработки, но мы используем cloud-init для подключения экземпляра к нашему Кукольный master, Puppet для настройки всех пакетов на роль, которую будет играть этот экземпляр, и Webistrano (графический интерфейс для Capistrano) для развертывания нашего кода на серверах.

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

Итак, мы используем cloud-init для загрузки экземпляра. Cloud-init - это пакет, который присутствует на Ubuntu и AMI Amazon Linux. Он позволяет передавать различные типы данных в экземпляр по мере его создания с помощью параметра метаданных EC2 «user-data». Данные, передаваемые через пользовательские данные, выполняются cloud-init по мере загрузки экземпляра и могут принимать несколько форм, таких как сценарии оболочки, yaml облачной конфигурации и т. Д.

В этом посте показан пример использования cloud-init, аналогичный тому, как это делаем мы: http://www.atlanticdynamic.com/you-should-be-using-cloud-init/

А вот наша версия:

#cloud-config
apt_update: true
apt_upgrade: true
packages:
- puppet
puppet:
  conf:
    agent:
      server: "puppet.example.com"
      certname: "%i.web.cluster1.eu-west-1.ec2"

Как только экземпляр загрузится, он установит Puppet и подключит его к нашему мастеру Puppet. Как только вы разрешите ему подключиться к мастеру (подписали его сертификат), экземпляр автоматически начнет настраиваться. Мастер будет использовать регулярное выражение в файле nodes.pp, чтобы соответствовать имени сертификата экземпляра, тем самым назначая ему роль. Затем мастер может отправить каталог марионеточному агенту, который использует его для настройки.

Через несколько минут после загрузки экземпляр готов к работе. Если нам нужно развернуть какой-либо код на узле, мы не используем для этого Puppet, а Webistrano. На данный момент мы вручную добавляем узел в конфигурацию Webistrano, но мы намерены использовать MCollective, чтобы сделать это автоматически на основе метаданных узла.

Бото и Ткань отлично подходят для этого. Вот статья об этом на SeoMoz. Моя текущая стратегия аналогична, но вместо этого использует Fabric для локального запуска команд оболочки Amazon.

Экземпляры EC2 также могут запрашивать метаданные, которые были назначены им во время развертывания, что в сочетании с настраиваемым AMI может быть очень мощным.

(Я ограничен в количестве ссылок, которые я могу опубликовать; Boto достаточно прост для Google)